From 980b8cc1d34452d1f8e0e970fba834e63fba1fec Mon Sep 17 00:00:00 2001 From: Patrick Jentsch <p.jentsch@uni-bielefeld.de> Date: Thu, 22 Dec 2022 16:02:12 +0100 Subject: [PATCH] Codestyle enhancements --- app/models.py | 5 +++-- app/settings/forms.py | 37 ++++++++----------------------------- app/settings/routes.py | 25 ++++++++++--------------- 3 files changed, 21 insertions(+), 46 deletions(-) diff --git a/app/models.py b/app/models.py index 8ab09e6d..38c44020 100644 --- a/app/models.py +++ b/app/models.py @@ -127,6 +127,8 @@ class IntEnumColumn(db.TypeDecorator): return value.value elif isinstance(value, int): return self.enum_type(value).value + elif isinstance(value, str): + return self.enum_type[value].value else: return TypeError() @@ -144,8 +146,7 @@ class ContainerColumn(db.TypeDecorator): def process_bind_param(self, value, dialect): if isinstance(value, self.container_type): return json.dumps(value) - elif (isinstance(value, str) - and isinstance(json.loads(value), self.container_type)): + elif isinstance(value, str) and isinstance(json.loads(value), self.container_type): return value else: return TypeError() diff --git a/app/settings/forms.py b/app/settings/forms.py index 55279927..e90d9dda 100644 --- a/app/settings/forms.py +++ b/app/settings/forms.py @@ -1,24 +1,7 @@ from flask_wtf import FlaskForm -from wtforms import ( - BooleanField, - FileField, - PasswordField, - SelectField, - StringField, - SubmitField, - TextAreaField, - ValidationError -) -from wtforms.validators import ( - DataRequired, - InputRequired, - Email, - EqualTo, - Length, - Regexp -) -from app.models import User, UserSettingJobStatusMailNotificationLevel -from app.auth import USERNAME_REGEX +from wtforms import PasswordField, SelectField, SubmitField, ValidationError +from wtforms.validators import DataRequired, EqualTo +from app.models import UserSettingJobStatusMailNotificationLevel class ChangePasswordForm(FlaskForm): @@ -47,18 +30,14 @@ class ChangePasswordForm(FlaskForm): if not self.user.verify_password(field.data): raise ValidationError('Invalid password') + class EditNotificationSettingsForm(FlaskForm): job_status_mail_notification_level = SelectField( 'Job status mail notification level', - choices=[('', 'Choose your option')], + choices=[ + (x.name, x.name.capitalize()) + for x in UserSettingJobStatusMailNotificationLevel + ], validators=[DataRequired()] ) submit = SubmitField() - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.job_status_mail_notification_level.choices += [ - (x.name, x.name.capitalize()) - for x in UserSettingJobStatusMailNotificationLevel - ] - diff --git a/app/settings/routes.py b/app/settings/routes.py index 754a98cd..a07869b8 100644 --- a/app/settings/routes.py +++ b/app/settings/routes.py @@ -1,12 +1,9 @@ -from flask import abort, flash, redirect, render_template, url_for +from flask import flash, redirect, render_template, url_for from flask_login import current_user, login_required from app import db -from app.models import ProfilePrivacySettings, UserSettingJobStatusMailNotificationLevel +from app.models import UserSettingJobStatusMailNotificationLevel from . import bp -from .forms import ( - ChangePasswordForm, - EditNotificationSettingsForm -) +from .forms import ChangePasswordForm, EditNotificationSettingsForm @bp.route('', methods=['GET', 'POST']) @@ -20,22 +17,20 @@ def settings(): data=current_user.to_json_serializeable(), prefix='edit-notification-settings-form' ) + # region handle change_password_form POST if change_password_form.submit.data and change_password_form.validate(): current_user.password = change_password_form.new_password.data db.session.commit() flash('Your changes have been saved') - return redirect(url_for('.index')) - - if (edit_notification_settings_form.submit - and edit_notification_settings_form.validate()): - current_user.setting_job_status_mail_notification_level = ( - UserSettingJobStatusMailNotificationLevel[ - edit_notification_settings_form.job_status_mail_notification_level.data # noqa - ] - ) + return redirect(url_for('.settings')) + # endregion handle change_password_form POST + # region handle edit_notification_settings_form POST + if edit_notification_settings_form.submit and edit_notification_settings_form.validate(): + current_user.setting_job_status_mail_notification_level = edit_notification_settings_form.job_status_mail_notification_level.data db.session.commit() flash('Your changes have been saved') return redirect(url_for('.settings')) + # endregion handle edit_notification_settings_form POST return render_template( 'settings/settings.html.j2', change_password_form=change_password_form, -- GitLab