diff --git a/.gitignore b/.gitignore index ab51e78c02338ca25d260b585db2cd2470e8cba7..a0740c5a44fc18771c3bb9531fa58f7dfb26173e 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ Cargo.lock # Docker files (if needed, e.g., ignore local volumes) *.log +.qodo diff --git a/django_project/myapp/templates/myapp/base.html b/django_project/myapp/templates/myapp/base.html index e8b3af8583c86c36ca60ea3d3104047b49de919a..66e4e4ab8c84b673e9fab4ad23e2433ea0af9992 100644 --- a/django_project/myapp/templates/myapp/base.html +++ b/django_project/myapp/templates/myapp/base.html @@ -5,7 +5,8 @@ <title>{% block title %}My Project{% endblock %}</title> <style> nav { - background-color: #333; + background-image: linear-gradient(to right, #00bfff, #00ffd5); + /*background-color: #344cff;*/ overflow: hidden; } nav ul { diff --git a/django_project/myapp/templates/myapp/delete_account.html b/django_project/myapp/templates/myapp/delete_account.html index 2694df1c7bf7fa583f0ea05e476bd93832794b77..0e970e5672317c750edf4a7166d7e0f4064000b1 100644 --- a/django_project/myapp/templates/myapp/delete_account.html +++ b/django_project/myapp/templates/myapp/delete_account.html @@ -1,9 +1,8 @@ -<!DOCTYPE html> -<html> -<head> - <title>Delete Account</title> -</head> -<body> +{% extends 'myapp/base.html' %} + +{% block title %}Delete Account{% endblock %} + +{% block content %} <h1>Delete Account</h1> <p>Are you sure you want to delete your account? This action cannot be undone.</p> <form method="post"> @@ -11,6 +10,4 @@ <button type="submit">Yes, delete my account</button> </form> <p><a href="{% url 'account' %}">Cancel</a></p> -</body> -</html> - +{% endblock %} diff --git a/django_project/myapp/templates/myapp/edit_account.html b/django_project/myapp/templates/myapp/edit_account.html index 162f3ecc56f875d778d5fc299fa8a00954935738..35d2d8a412d84d67a0e14b8a9705a689c5bacc54 100644 --- a/django_project/myapp/templates/myapp/edit_account.html +++ b/django_project/myapp/templates/myapp/edit_account.html @@ -1,27 +1,8 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <title>Edit Account</title> - <!-- You can include your CSS files or Bootstrap here --> - <style> - label { - display: block; - margin-top: 10px; - } - input, button { - margin-top: 5px; - } - .profile-pic { - max-width: 200px; - margin-top: 5px; - } - .error { - color: red; - } - </style> -</head> -<body> +{% extends 'myapp/base.html' %} + +{% block title %}Edit Account{% endblock %} + +{% block content %} <h1>Edit Your Account</h1> {% if error %} @@ -61,6 +42,6 @@ <button type="submit">Register</button> </form> -</body> -</html> + +{% endblock %} diff --git a/django_project/myapp/templates/myapp/group_delete.html b/django_project/myapp/templates/myapp/group_delete.html index 2d6dfeeec6a573c8abdb33cea26ccd6d43c885c3..fff89f0ae888f8eb7fac948c84dc1105e1b3df1e 100644 --- a/django_project/myapp/templates/myapp/group_delete.html +++ b/django_project/myapp/templates/myapp/group_delete.html @@ -1,10 +1,8 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <title>Delete Group</title> -</head> -<body> +{% extends 'myapp/base.html' %} + +{% block title %}Delete Group{% endblock %} + +{% block content %} <h1>Delete Group</h1> {% if error %} <p style="color: red;">{{ error }}</p> @@ -20,5 +18,5 @@ {% endif %} <p><a href="{% url 'group_list' %}">Back to Group List</a></p> </body> -</html> +{% endblock %} diff --git a/django_project/myapp/templates/myapp/group_detail.html b/django_project/myapp/templates/myapp/group_detail.html index 590ab3c9e2dc75e4699c17019800e1d33973ed8e..faba797a3f7968a5301102b19854f40ce7d081d5 100644 --- a/django_project/myapp/templates/myapp/group_detail.html +++ b/django_project/myapp/templates/myapp/group_detail.html @@ -1,13 +1,8 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <title>Group Details</title> - <style> - body { font-family: Arial, sans-serif; margin: 2em; } - </style> -</head> -<body> +{% extends 'myapp/base.html' %} + +{% block title %}Group Details{% endblock %} + +{% block content %} <h1>Group Details</h1> {% if error %} <p style="color: red;">{{ error }}</p> @@ -17,5 +12,4 @@ {% endif %} <p><a href="{% url 'group_list' %}">Back to Groups</a></p> </body> -</html> - +{% endblock %} diff --git a/django_project/myapp/templates/myapp/group_update.html b/django_project/myapp/templates/myapp/group_update.html index 1e9945ab0a31e6cbc7cd9cd4a12115e491607452..d5e72c5d1463f336532fde4a71807210e8a4f8f1 100644 --- a/django_project/myapp/templates/myapp/group_update.html +++ b/django_project/myapp/templates/myapp/group_update.html @@ -1,10 +1,6 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <title>Update Group</title> -</head> -<body> +{% extends "base.html" %} + +{% block content %} <h1>Update Group</h1> {% if error %} <p style="color: red;">{{ error }}</p> @@ -22,5 +18,5 @@ {% endif %} <p><a href="{% url 'group_list' %}">Back to Group List</a></p> </body> -</html> +{% endblock %} diff --git a/rust_crud_api/src/db/groups.rs b/rust_crud_api/src/db/groups.rs index e553482d0a816c4dd6c52c29acf502803fbf3b63..fa9e5a967482dccba4d268be7f0bc698aa263f52 100644 --- a/rust_crud_api/src/db/groups.rs +++ b/rust_crud_api/src/db/groups.rs @@ -13,8 +13,8 @@ fn pg_err(e: postgres::Error) -> PyErr { pub fn create_group(db_url: &str, name: &str) -> PyResult<()> { let mut client = Client::connect(db_url, NoTls).map_err(pg_err)?; client.execute( - "INSERT INTO groups (name, member_count) VALUES ($1, $2)", // Use $2 for member_count - &[&name, &0] // Pass 0 explicitly as an i32 + "INSERT INTO groups (name, member_count) VALUES ($1, $2)", + &[&name, &0] ).map_err(pg_err)?; Ok(()) } @@ -76,7 +76,6 @@ pub fn add_user_to_group(db_url: &str, group_id: i32, user_id: i32) -> PyResult< pub fn get_group_members(db_url: &str, group_id: i32) -> PyResult<(Vec<User>, i32)> { let mut client = Client::connect(db_url, NoTls).map_err(pg_err)?; - // Fetch group members let rows = client.query( "SELECT u.id, u.name, u.email, u.username, u.studentid, u.startyear, u.endyear, u.profilepicture, u.firstlogin FROM users u @@ -97,7 +96,6 @@ pub fn get_group_members(db_url: &str, group_id: i32) -> PyResult<(Vec<User>, i3 firstlogin: row.get(8), }).collect(); - // Fetch member count let count: i32 = client.query_one( "SELECT member_count FROM groups WHERE id = $1", &[&group_id] diff --git a/rust_crud_api/src/db/posts.rs b/rust_crud_api/src/db/posts.rs index 5da267ae68f23e3ad0a149d60bb62195735acf9f..08219f8e37d37c87cc53eb12af3fa329e9dc19b4 100644 --- a/rust_crud_api/src/db/posts.rs +++ b/rust_crud_api/src/db/posts.rs @@ -67,14 +67,14 @@ pub fn get_feed(db_url: &str) -> PyResult<Vec<Post>> { let user_id: i32 = row.get(1); let user_name: Option<String> = Some(row.get(2)); let content: String = row.get(3); - let created_at: SystemTime = row.get(4); // Retrieves timestamp from DB - let created_at = DateTime::<Utc>::from(created_at).to_rfc3339(); // Convert to String + let created_at: SystemTime = row.get(4); + let created_at = DateTime::<Utc>::from(created_at).to_rfc3339(); posts.push(Post { id, user_id, user_name, content, - created_at, // Now a properly formatted String + created_at, }); } Ok(posts) diff --git a/rust_crud_api/src/db/users.rs b/rust_crud_api/src/db/users.rs index 6c71f1dfeb7ae0e4e1a34496d18494ca5bf80be4..2e34a3472dac121d078ea30edb97fd031215d526 100644 --- a/rust_crud_api/src/db/users.rs +++ b/rust_crud_api/src/db/users.rs @@ -105,8 +105,8 @@ pub fn get_all_users(db_url: &str) -> PyResult<Vec<User>> { new_profilepicture = None ))] pub fn update_user( - db_url: &str, // Required, do NOT include in signature - user_id: i32, // Required, do NOT include in signature + db_url: &str, + user_id: i32, new_name: Option<&str>, new_email: Option<&str>, new_password: Option<&str>,