diff --git a/backend/project/endpoints/courses/courses.py b/backend/project/endpoints/courses/courses.py index 04b645ed..7145903d 100644 --- a/backend/project/endpoints/courses/courses.py +++ b/backend/project/endpoints/courses/courses.py @@ -47,8 +47,8 @@ def get(self, uid=None): # Apply filters dynamically if they are provided for param, value in filter_params.items(): if value: - attribute = getattr(Course, param, None) - if attribute: + if param in Course.__table__.columns: + attribute = getattr(Course, param) base_query = base_query.filter(attribute == value) # Define the role-specific queries diff --git a/backend/project/endpoints/projects/projects.py b/backend/project/endpoints/projects/projects.py index e19538ad..27b603a3 100644 --- a/backend/project/endpoints/projects/projects.py +++ b/backend/project/endpoints/projects/projects.py @@ -54,7 +54,8 @@ def get(self, uid=None): filters = dict(request.args) conditions = [] for key, value in filters.items(): - conditions.append(getattr(Project, key) == value) + if key in Project.__table__.columns: + conditions.append(getattr(Project, key) == value) # Get the projects projects = Project.query diff --git a/backend/project/endpoints/submissions/submissions.py b/backend/project/endpoints/submissions/submissions.py index b80319ab..c983b398 100644 --- a/backend/project/endpoints/submissions/submissions.py +++ b/backend/project/endpoints/submissions/submissions.py @@ -44,11 +44,6 @@ def get(self, uid=None) -> dict[str, any]: } filters = dict(request.args) try: - invalid_parameters = set(filters.keys()) - {"uid", "project_id"} - if invalid_parameters: - data["message"] = f"Invalid query parameter(s) {invalid_parameters}" - return data, 400 - # Check the uid query parameter user_id = filters.get("uid") if user_id and not isinstance(user_id, str): @@ -73,7 +68,8 @@ def get(self, uid=None) -> dict[str, any]: # Filter the courses based on the query parameters conditions = [] for key, value in filters.items(): - conditions.append(getattr(Submission, key) == value) + if key in Submission.__table__.columns: + conditions.append(getattr(Submission, key) == value) # Get the submissions submissions = Submission.query diff --git a/backend/tests/endpoints/submissions_test.py b/backend/tests/endpoints/submissions_test.py index dca6bd83..4f6bc1c7 100644 --- a/backend/tests/endpoints/submissions_test.py +++ b/backend/tests/endpoints/submissions_test.py @@ -51,7 +51,7 @@ def test_get_submission_wrong_parameter(self, client: FlaskClient): "/submissions?parameter=0", headers = {"X-CSRF-TOKEN":get_csrf_from_login(client, "teacher")} ) - assert response.status_code == 400 + assert response.status_code == 200