From 83f4726296e2b311a54720060057659233fe90a2 Mon Sep 17 00:00:00 2001 From: Mo8it Date: Thu, 22 Sep 2022 20:26:22 +0200 Subject: [PATCH] Replace get_count and execute().scalars() --- advlabdb/adminModelViews.py | 8 ++++---- advlabdb/custom_classes.py | 15 ++++----------- advlabdb/models.py | 14 ++++---------- cli/maintain/reset_admin_password/main.py | 4 ++-- 4 files changed, 14 insertions(+), 27 deletions(-) diff --git a/advlabdb/adminModelViews.py b/advlabdb/adminModelViews.py index 7679dee..ba0992f 100644 --- a/advlabdb/adminModelViews.py +++ b/advlabdb/adminModelViews.py @@ -542,7 +542,7 @@ class PartRowFilter(FilterEqual): if not has_request_context(): return tuple() - parts = db.session.execute(select(Part).where(Part.semester == current_user.active_semester)).scalars() + parts = db.session.scalars(select(Part).where(Part.semester == current_user.active_semester)) return tuple((part.id, part.str_without_semester()) for part in parts) @@ -620,7 +620,7 @@ class ProgramRowFilter(FilterEqual): if not has_request_context(): return tuple() - programs = db.session.execute(select(Program)).scalars() + programs = db.session.scalars(select(Program)) return tuple((program.id, str(program)) for program in programs) @@ -934,7 +934,7 @@ class ExperimentRowFilter(FilterEqual): if not has_request_context(): return tuple() - activeExperiments = db.session.execute(select(Experiment).where(Experiment.active == True)).scalars() + activeExperiments = db.session.scalars(select(Experiment).where(Experiment.active == True)) return tuple( ( f"{activeExperiment.number},{activeExperiment.program_id}", @@ -1191,7 +1191,7 @@ class ExperimentMarkView(SecureAdminModelView): if not has_request_context(): return tuple() - admins = db.session.execute(select(Admin).join(User).where(User.active == True)).scalars() + admins = db.session.scalars(select(Admin).join(User).where(User.active == True)) return tuple((admin.id, str(admin)) for admin in admins) def apply(self, query, value, alias=None): diff --git a/advlabdb/custom_classes.py b/advlabdb/custom_classes.py index ffb9b62..e634c1e 100644 --- a/advlabdb/custom_classes.py +++ b/advlabdb/custom_classes.py @@ -8,14 +8,7 @@ from sqlalchemy import func, select from .exceptions import DatabaseException, ModelViewException from .model_independent_funs import reportBadAttempt -from .models import ( - Assistant, - ExperimentMark, - GroupExperiment, - SemesterExperiment, - db, - get_count, -) +from .models import Assistant, ExperimentMark, GroupExperiment, SemesterExperiment, db def adminViewIsAccessible(): @@ -71,7 +64,7 @@ class SecureAssistantIndexView(CustomIndexView): @expose("/") def index(self): active_semester_experiment_mark_ids_stmt = ( - select(ExperimentMark.final_experiment_mark) + select(func.count(ExperimentMark.final_experiment_mark)) .join(GroupExperiment) .join(SemesterExperiment) .where(SemesterExperiment.semester == current_user.active_semester) @@ -79,9 +72,9 @@ class SecureAssistantIndexView(CustomIndexView): .where(Assistant.user == current_user) ) - number_of_all_experiment_marks = get_count(active_semester_experiment_mark_ids_stmt) + number_of_all_experiment_marks = db.session.scalar(active_semester_experiment_mark_ids_stmt) - number_of_missing_final_experiment_marks = get_count( + number_of_missing_final_experiment_marks = db.session.scalar( active_semester_experiment_mark_ids_stmt.where(ExperimentMark.final_experiment_mark == None) ) diff --git a/advlabdb/models.py b/advlabdb/models.py index 8e3d015..4895ff8 100644 --- a/advlabdb/models.py +++ b/advlabdb/models.py @@ -32,12 +32,8 @@ db = SQLAlchemy() FsModels.set_db_info(db) -def get_count(table): - return db.session.scalar(select(func.count()).select_from(table)) - - def get_first(table): - return db.session.execute(table.limit(1)).scalars().first() + return db.session.scalars(table.limit(1)).first() def roundHalfUpToInt(number): @@ -546,7 +542,7 @@ class Semester(db.Model): if transferParts: semester.transferPartsFrom(oldSemester) - for experiment in db.session.execute(select(Experiment).where(Experiment.active == True)).scalars(): + for experiment in db.session.scalars(select(Experiment).where(Experiment.active == True)): newSemesterExperiment = SemesterExperiment(experiment=experiment, semester=semester) if transferAssistants: @@ -571,7 +567,7 @@ class Semester(db.Model): if limit > 0: stmt = stmt.limit(limit) - return db.session.execute(stmt).scalars() + return db.session.scalars(stmt) @staticmethod def lastSemester(): @@ -589,9 +585,7 @@ class Semester(db.Model): if set_next_semester: # Set active_semester to next_semester - users_in_semester_done = db.session.execute( - select(User).where(User.active_semester == semester) - ).scalars() + users_in_semester_done = db.session.scalars(select(User).where(User.active_semester == semester)) for user in users_in_semester_done: user.active_semester = next_semester diff --git a/cli/maintain/reset_admin_password/main.py b/cli/maintain/reset_admin_password/main.py index aad96b7..7b0b683 100644 --- a/cli/maintain/reset_admin_password/main.py +++ b/cli/maintain/reset_admin_password/main.py @@ -14,12 +14,12 @@ def _reset_admin_password(manage): with app.app_context(): with db.session.begin(): - admins = db.session.execute(select(Admin).join(User).where(User.active == True)).scalars().all() + admins = db.session.scalars(select(Admin).join(User).where(User.active == True)).all() activate_user = False if len(admins) == 0: click.echo("There is no admin with an active user. The user of the chosen admin will be activated.") - admins = db.session.execute(select(Admin)).scalars().all() + admins = db.session.scalars(select(Admin)).all() activate_user = True num_admins = len(admins)