From 15d4acd8168bf0d05acccd7d4207eca918071751 Mon Sep 17 00:00:00 2001 From: Jiri Kalvoda <jirikalvoda@kam.mff.cuni.cz> Date: Sat, 24 Jul 2021 00:24:26 +0200 Subject: [PATCH] =?UTF-8?q?Zv=C3=BDrazn=C4=9Bn=C3=AD=20rol=C3=AD=20nalezen?= =?UTF-8?q?=C3=BDch=20pomoc=C3=AD=20hled=C3=A1n=C3=AD=20org=C5=AF=20dle=20?= =?UTF-8?q?rol=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #225 --- mo/web/org_users.py | 17 +++++++++++++++-- mo/web/templates/org_orgs.html | 6 +++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/mo/web/org_users.py b/mo/web/org_users.py index 7442b123..c8040876 100644 --- a/mo/web/org_users.py +++ b/mo/web/org_users.py @@ -4,6 +4,7 @@ from flask_wtf import FlaskForm import werkzeug.exceptions import wtforms from sqlalchemy import or_ +import flask_sqlalchemy from sqlalchemy.orm import joinedload, subqueryload from wtforms import validators @@ -249,8 +250,7 @@ def org_orgs(): db.User.last_name.ilike(filter.f_search_name) )) - if filter.is_role_filter.data: - qr = sess.query(db.UserRole.user_id) + def query_filter_role(qr: flask_sqlalchemy.BaseQuery) -> flask_sqlalchemy.BaseQuery: if filter.f_search_role is not None: qr = qr.filter(db.UserRole.role.in_(filter.f_search_role)) if filter.f_search_category is not None: @@ -268,6 +268,11 @@ def org_orgs(): qr = qr.filter(db.UserRole.place_id.in_( sess.query(db.Place.place_id).filter(db.Place.level.in_(filter.f_search_place_level)) )) + return qr + + if filter.is_role_filter.data: + qr = sess.query(db.UserRole.user_id) + qr = query_filter_role(qr) q = q.filter(db.User.user_id.in_(qr)) q = q.order_by(db.User.user_id) @@ -275,9 +280,17 @@ def org_orgs(): (count, q) = filter.apply_limits(q, pagesize=50) users = q.all() + marked_roles_id: Set[int] = set() + + if filter.is_role_filter.data: + qmr = sess.query(db.UserRole.user_role_id).filter(db.UserRole.user_id.in_([i.user_id for i in users])) + qmr = query_filter_role(qmr) + marked_roles_id = set([i[0] for i in qmr.all()]) + return render_template( 'org_orgs.html', users=users, count=count, filter=filter, + marked_roles_id=marked_roles_id, can_edit=rr.have_right(Right.edit_orgs), can_add=rr.have_right(Right.add_orgs), ) diff --git a/mo/web/templates/org_orgs.html b/mo/web/templates/org_orgs.html index 0b180093..adb8cd1d 100644 --- a/mo/web/templates/org_orgs.html +++ b/mo/web/templates/org_orgs.html @@ -85,7 +85,11 @@ {% if user.roles|count > 0 %} <ul> {% for role in user.roles %} - <li>{{ role }}</li> + {% if role.user_role_id in marked_roles_id %} + <li><b>{{ role }}</b></li> + {% else %} + <li>{{ role }}</li> + {% endif %} {%- endfor %} </ul> {% endif %}</td> -- GitLab