From 66f4a056b75027eeec7518d45a35f56932452c5a Mon Sep 17 00:00:00 2001 From: Mo8it Date: Sun, 18 Apr 2021 17:24:40 +0200 Subject: [PATCH] Added registering as admin and assistant, added inactive users table. --- advlabdb/forms.py | 5 ++-- advlabdb/routes.py | 40 ++++++++++++++++++++---------- advlabdb/templates/register.html | 6 +++++ advlabdb/templates/registered.html | 8 +----- advlabdb/templates/users.html | 8 ++++-- advlabdb/utils.py | 2 +- 6 files changed, 44 insertions(+), 25 deletions(-) diff --git a/advlabdb/forms.py b/advlabdb/forms.py index 1f2d09d..e162180 100644 --- a/advlabdb/forms.py +++ b/advlabdb/forms.py @@ -7,11 +7,12 @@ from advlabdb.models import User class RegistrationForm(FlaskForm): email = StringField("Email", validators=[DataRequired(), Email()]) + assistant = BooleanField("Assistant", default=True) admin = BooleanField("Admin", default=False) submit = SubmitField("Register") - def validate_email(self, email): - user = User.query.filter_by(email=email.data.lower()).first() + def validate_email(form, field): + user = User.query.filter_by(email=field.data.lower()).first() if user: raise ValidationError("A user with this email address is already registered!") diff --git a/advlabdb/routes.py b/advlabdb/routes.py index 8efddfa..adc3ff4 100644 --- a/advlabdb/routes.py +++ b/advlabdb/routes.py @@ -188,12 +188,16 @@ def users(): ["Roles", "[role.name for role in row.roles]"], ["Assistant", "row.assistant"]] - table = makeTable(headerAndDataList=headerAndDataList, - rows=User.query.filter(User.active == True).all(), - tableId="usersTab") + activeUsersTable = makeTable(headerAndDataList=headerAndDataList, + rows=User.query.filter(User.active == True).all(), + tableId="activeUsersTable") + inactiveUsersTable = makeTable(headerAndDataList=headerAndDataList, + rows=User.query.filter(User.active == False).all(), + tableId="inactiveUsersTable") return render_template("users.html", - table=table, + activeUsersTable=activeUsersTable, + inactiveUsersTable=inactiveUsersTable, ) @@ -248,21 +252,31 @@ def register(): passwordHash = hash_password(password) email = form.email.data.lower() + assistant = form.assistant.data admin = form.admin.data + registered = True if admin: - roles = ["admin"] + if assistant: + roles = ["admin", "assistant"] + else: + roles = ["admin"] flash("You have registered a new admin!", "danger") - else: + elif assistant: roles = ["assistant"] + else: + flash("The user has to be assistant and/or admin!", "warning") + registered = False + + if registered: + newUser = user_datastore.create_user(email=email, password=passwordHash, roles=roles) + db.session.commit() + return render_template("registered.html", + email=email, + password=password, + roles=[role.name for role in newUser.roles], + ) - user_datastore.create_user(email=email, password=passwordHash, roles=roles) - db.session.commit() - return render_template("registered.html", - email=email, - password=password, - admin=admin, - ) return render_template("register.html", form=form, ) diff --git a/advlabdb/templates/register.html b/advlabdb/templates/register.html index 5a1549d..3961499 100644 --- a/advlabdb/templates/register.html +++ b/advlabdb/templates/register.html @@ -3,6 +3,7 @@ {% block content %}
+ {{form.hidden_tag()}}
{{form.email.label(class="form-control-label")}} @@ -18,7 +19,12 @@ {{form.email(class="form-control form-control-lg")}} {% endif %}
+
+ Roles
+ {{form.assistant(class="form-check-input")}} + {{form.assistant.label(class="form-check-label")}} +
{{form.admin(class="form-check-input")}} {{form.admin.label(class="form-check-label")}}
diff --git a/advlabdb/templates/registered.html b/advlabdb/templates/registered.html index 1b3b480..8bd8875 100644 --- a/advlabdb/templates/registered.html +++ b/advlabdb/templates/registered.html @@ -2,13 +2,7 @@ {% extends "layout.html" %} {% block content %}

- Registered as - {% if admin %} - Admin - {% else %} - Assistant - {% endif %} - ! + New user registered with roles {{roles}}.

Email: {{email}} diff --git a/advlabdb/templates/users.html b/advlabdb/templates/users.html index ff50bd1..f61c5ef 100644 --- a/advlabdb/templates/users.html +++ b/advlabdb/templates/users.html @@ -2,7 +2,8 @@ {% extends "layout.html" %} {% block content %} -{{table|safe}} +

Active users:

+{{activeUsersTable|safe}}
@@ -11,11 +12,14 @@ +
+

Inactive users:

+{{inactiveUsersTable|safe}} {% endblock content %} {% block scripts %}