diff --git a/mo/web/org_users.py b/mo/web/org_users.py index 7442b12383606b15556686fadff0bde3f94470cb..c80408768bebde180c62ecc82d9fc7a1de041be9 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 0b18009323a3f938fd764f7952c0444405cbdb47..adb8cd1d610f7cb1d01bd3b09424669bf900b294 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>