From bb070977f96675cfe0f21fffde7edb6eaf74616a Mon Sep 17 00:00:00 2001 From: dominik24c Date: Mon, 13 Jun 2022 18:04:30 +0200 Subject: [PATCH] refactor code - update paginate_models function --- backend/app/base/utils.py | 9 ++------- backend/app/coordinator/routes/groups.py | 9 ++++----- backend/app/coordinator/routes/project_supervisor.py | 8 +++----- backend/app/coordinator/routes/students.py | 8 +++----- backend/app/students/routes/registrations.py | 8 +++----- 5 files changed, 15 insertions(+), 27 deletions(-) diff --git a/backend/app/base/utils.py b/backend/app/base/utils.py index 91e6feb..2085510 100644 --- a/backend/app/base/utils.py +++ b/backend/app/base/utils.py @@ -1,6 +1,6 @@ from typing import TypedDict, Tuple -from flask import current_app +from flask import current_app, abort from flask_sqlalchemy import BaseQuery from sqlalchemy import desc @@ -20,14 +20,9 @@ def order_by_column_name(query: BaseQuery, model_field: str, order_by_col_name: return query -def paginate_models(page: str, query: BaseQuery, per_page = 10) -> PaginationResponse or Tuple[dict, int]: +def paginate_models(page: int, query: BaseQuery, per_page=10) -> PaginationResponse: default_page = 1 - if page is not None: - try: - page = int(page) - except ValueError: - return {"error": f"Invalid page! Page must be integer!"}, 400 query = query.paginate(page=page, per_page=per_page, error_out=False) else: query = query.paginate(page=default_page, per_page=per_page, error_out=False) diff --git a/backend/app/coordinator/routes/groups.py b/backend/app/coordinator/routes/groups.py index 83c2feb..5843835 100644 --- a/backend/app/coordinator/routes/groups.py +++ b/backend/app/coordinator/routes/groups.py @@ -22,12 +22,11 @@ def list_groups(query: dict) -> dict: groups_query = Group.search_by_name(search_name) - response = paginate_models(page, groups_query, per_page) - if (message := response.get('message')) is not None: - abort(response['status_code'], message) + data = paginate_models(page, groups_query, per_page) + return { - "groups": response['items'], - "max_pages": response['max_pages'] + "groups": data['items'], + "max_pages": data['max_pages'] } diff --git a/backend/app/coordinator/routes/project_supervisor.py b/backend/app/coordinator/routes/project_supervisor.py index 3caf9f5..4fafcff 100644 --- a/backend/app/coordinator/routes/project_supervisor.py +++ b/backend/app/coordinator/routes/project_supervisor.py @@ -25,13 +25,11 @@ def list_project_supervisors(query: dict) -> dict: project_supervisor_query = ProjectSupervisor.search_by_fullname_and_mode_and_order_by_first_name_or_last_name( fullname, mode, order_by_first_name, order_by_last_name) - response = paginate_models(page, project_supervisor_query, per_page) - if (message := response.get('message')) is not None: - abort(response['status_code'], message) + data = paginate_models(page, project_supervisor_query, per_page) # print(get_debug_queries()[0]) return { - "project_supervisors": response['items'], - "max_pages": response['max_pages'] + "project_supervisors": data['items'], + "max_pages": data['max_pages'] } diff --git a/backend/app/coordinator/routes/students.py b/backend/app/coordinator/routes/students.py index 74c19fc..7546445 100644 --- a/backend/app/coordinator/routes/students.py +++ b/backend/app/coordinator/routes/students.py @@ -33,13 +33,11 @@ def list_students(query: dict) -> dict: student_query = Student.search_by_fullname_and_mode_and_order_by_first_name_or_last_name( fullname, mode, order_by_first_name, order_by_last_name) - response = paginate_models(page, student_query, per_page) - if (message := response.get('message')) is not None: - abort(response['status_code'], message) + data = paginate_models(page, student_query, per_page) # print(get_debug_queries()[0]) return { - "students": response['items'], - "max_pages": response['max_pages'] + "students": data['items'], + "max_pages": data['max_pages'] } diff --git a/backend/app/students/routes/registrations.py b/backend/app/students/routes/registrations.py index 5ee0a39..84cd123 100644 --- a/backend/app/students/routes/registrations.py +++ b/backend/app/students/routes/registrations.py @@ -24,16 +24,14 @@ def list_available_groups(query: dict) -> dict: ps_query = ps_query.filter(ProjectSupervisor.mode == mode) ps_query = ps_query.group_by(Group.id) - response = paginate_models(page, ps_query, per_page) - if (message := response.get('message')) is not None: - abort(response['status_code'], message) + data = paginate_models(page, ps_query, per_page) project_supervisors = [] - for project_supervisor, available_groups in response['items']: + for project_supervisor, available_groups in data['items']: setattr(project_supervisor, 'available_groups', available_groups) project_supervisors.append(project_supervisor) return { "project_supervisors": project_supervisors, - "max_pages": response['max_pages'] + "max_pages": data['max_pages'] }