From 850671e14770427be21471e79d5aeb65f627ac4e Mon Sep 17 00:00:00 2001 From: dominik24c Date: Fri, 10 Jun 2022 18:18:15 +0200 Subject: [PATCH] update the list of students route for coordinator - add search by mode --- backend/app/coordinator/routes/students.py | 5 +++-- backend/app/coordinator/schemas.py | 1 + backend/app/project_supervisor/routes/__init__.py | 4 ---- backend/app/students/models.py | 7 ++++++- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/backend/app/coordinator/routes/students.py b/backend/app/coordinator/routes/students.py index 8706969..7a5b582 100644 --- a/backend/app/coordinator/routes/students.py +++ b/backend/app/coordinator/routes/students.py @@ -25,11 +25,12 @@ def list_students(query: dict) -> dict: fullname = query.get('fullname') order_by_first_name = query.get('order_by_first_name') order_by_last_name = query.get('order_by_last_name') + mode = query.get('mode') page = query.get('page') per_page = query.get('per_page') - student_query = Student.search_by_fullname_and_order_by_first_name_or_last_name(fullname, order_by_first_name, - order_by_last_name) + 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: diff --git a/backend/app/coordinator/schemas.py b/backend/app/coordinator/schemas.py index c4a3e66..e525675 100644 --- a/backend/app/coordinator/schemas.py +++ b/backend/app/coordinator/schemas.py @@ -55,3 +55,4 @@ class StudentQuerySchema(ma.Schema): order_by_first_name = fields.Str() order_by_last_name = fields.Str() page = fields.Integer() + mode = fields.Boolean() diff --git a/backend/app/project_supervisor/routes/__init__.py b/backend/app/project_supervisor/routes/__init__.py index 57a4139..689fb83 100644 --- a/backend/app/project_supervisor/routes/__init__.py +++ b/backend/app/project_supervisor/routes/__init__.py @@ -1,7 +1,3 @@ from flask import Blueprint -from .groups import bp as bp_group - bp = Blueprint("project_supervisor", __name__, url_prefix="/project_supervisor") - -bp.register_blueprint(bp_group) diff --git a/backend/app/students/models.py b/backend/app/students/models.py index b284052..5dfbc1d 100644 --- a/backend/app/students/models.py +++ b/backend/app/students/models.py @@ -25,11 +25,16 @@ class Student(Person): mode = db.Column(db.Boolean, default=True, nullable=False) # True - stationary, False - non-stationary @classmethod - def search_by_fullname_and_order_by_first_name_or_last_name(cls, fullname: str = None, + def search_by_fullname_and_mode_and_order_by_first_name_or_last_name(cls, fullname: str = None, + mode: bool = None, order_by_first_name: str = None, order_by_last_name: str = None) -> BaseQuery: student_query = cls.query + if mode is None: + mode = True + student_query = student_query.filter_by(mode=mode) + if fullname is not None: """This works only for sqlite3 database - concat function doesn't exist so i used builtin concat operator specific only for sqlite db - || """