From 0da110b5055818b4aea4b26d411b912d088d217f Mon Sep 17 00:00:00 2001 From: Julian Rother <julianr@fsmpi.rwth-aachen.de> Date: Fri, 21 May 2021 12:48:58 +0200 Subject: [PATCH] Serveral fixes related to role-creation (closes #57, closes #58) --- tests/test_role.py | 2 +- uffd/role/templates/role.html | 4 ++-- uffd/role/templates/role_list.html | 2 +- uffd/role/views.py | 19 +++++++++---------- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/tests/test_role.py b/tests/test_role.py index 787c7078..74f4550e 100644 --- a/tests/test_role.py +++ b/tests/test_role.py @@ -117,7 +117,7 @@ class TestRoleViews(UffdTestCase): self.assertEqual(r.status_code, 200) def test_new(self): - r = self.client.get(path=url_for('role.show'), follow_redirects=True) + r = self.client.get(path=url_for('role.new'), follow_redirects=True) dump('role_new', r) self.assertEqual(r.status_code, 200) diff --git a/uffd/role/templates/role.html b/uffd/role/templates/role.html index cbd5a115..8cfe3456 100644 --- a/uffd/role/templates/role.html +++ b/uffd/role/templates/role.html @@ -28,13 +28,13 @@ <div class="tab-pane fade show active" id="settings" role="tabpanel" aria-labelledby="settings-tab"> <div class="form-group col"> <label for="role-name">Role Name</label> - <input type="text" class="form-control" id="role-name" name="name" value="{{ role.name }}"> + <input type="text" class="form-control" id="role-name" name="name" value="{{ role.name or '' }}"> <small class="form-text text-muted"> </small> </div> <div class="form-group col"> <label for="role-description">Description</label> - <textarea class="form-control" id="role-description" name="description" rows="5">{{ role.description }}</textarea> + <textarea class="form-control" id="role-description" name="description" rows="5">{{ role.description or '' }}</textarea> <small class="form-text text-muted"> </small> </div> diff --git a/uffd/role/templates/role_list.html b/uffd/role/templates/role_list.html index 54b5a7d6..d5b66624 100644 --- a/uffd/role/templates/role_list.html +++ b/uffd/role/templates/role_list.html @@ -4,7 +4,7 @@ <div class="row"> <div class="col"> <p class="text-right"> - <a class="btn btn-primary" href="{{ url_for("role.show") }}"> + <a class="btn btn-primary" href="{{ url_for("role.new") }}"> <i class="fa fa-plus" aria-hidden="true"></i> New </a> </p> diff --git a/uffd/role/views.py b/uffd/role/views.py index 1d77a1bf..be6ecff5 100644 --- a/uffd/role/views.py +++ b/uffd/role/views.py @@ -51,23 +51,22 @@ def role_acl_check(): def index(): return render_template('role_list.html', roles=Role.query.all()) -@bp.route("/<int:roleid>") @bp.route("/new") -def show(roleid=False): +def new(): + return render_template('role.html', role=Role(), groups=Group.query.all(), roles=Role.query.all()) + +@bp.route("/<int:roleid>") +def show(roleid=None): # prefetch all users so the ldap orm can cache them and doesn't run one ldap query per user User.query.all() - if not roleid: - role = Role() - else: - role = Role.query.filter_by(id=roleid).one() + role = Role.query.filter_by(id=roleid).one() return render_template('role.html', role=role, groups=Group.query.all(), roles=Role.query.all()) @bp.route("/<int:roleid>/update", methods=['POST']) @bp.route("/new", methods=['POST']) @csrf_protect(blueprint=bp) -def update(roleid=False): - is_newrole = bool(not roleid) - if is_newrole: +def update(roleid=None): + if roleid is None: role = Role() db.session.add(role) else: @@ -91,7 +90,7 @@ def update(roleid=False): role.update_member_groups() db.session.commit() ldap.session.commit() - return redirect(url_for('role.show', roleid=roleid)) + return redirect(url_for('role.show', roleid=role.id)) @bp.route("/<int:roleid>/del") @csrf_protect(blueprint=bp) -- GitLab