Skip to content
Snippets Groups Projects
Commit 65b6698a authored by Martin Mareš's avatar Martin Mareš
Browse files

Třídění rolí uživatele

Closes #442.
parent 615ba5d1
Branches
No related tags found
No related merge requests found
......@@ -5,7 +5,7 @@ from flask_wtf import FlaskForm
from sqlalchemy import or_, select, Column
from sqlalchemy.orm import joinedload, subqueryload
from sqlalchemy.orm.query import Query
from typing import Optional, Set, Union, List, Tuple
from typing import Optional, Set, Union, List, Tuple, Sequence
import urllib.parse
import werkzeug.exceptions
import wtforms
......@@ -29,6 +29,12 @@ from mo.web.imports import ImportForm, generic_import_page
from mo.web.util import PagerForm
def sorted_user_roles(roles: Sequence[db.UserRole]) -> List[db.UserRole]:
# Používá se ve výpisech rolí jednoho uživatele.
# Doporučujeme preloadnout UserRole.place.
return sorted(roles, key=lambda ur: (ur.year or 0, ur.seq or 0, mo.rights.role_order_by_type[ur.role], ur.place.level, ur.category or "", ur.user_role_id))
class UsersFilterForm(PagerForm):
# user
search_name = mo_fields.String("Jméno/příjmení", render_kw={'autofocus': True})
......@@ -280,6 +286,7 @@ def org_orgs() -> str:
can_edit=rr.have_right(Right.edit_orgs),
can_add=rr.have_right(Right.add_orgs),
can_send_email=rr.can_send_email(count),
sorted_user_roles=sorted_user_roles,
)
......@@ -411,6 +418,7 @@ def org_org(id: int):
roles_by_type=mo.rights.roles_by_type, role_errors=role_errors,
form_add_role=form_add_role, form_remove_role=form_remove_role,
resend_invite_form=resend_invite_form,
sorted_user_roles=sorted_user_roles,
)
......
......@@ -54,7 +54,7 @@
<th>Role<th>Oblast<th>Ročník<th>Kategorie<th class='has-tip' title='Pořadí kola v kategorii'>Kolo<th>Přidělil<th>Akce
</tr>
</thead>
{% for role in user.roles %}
{% for role in sorted_user_roles(user.roles) %}
<tr>
<td>{{ roles_by_type[role.role].name }}
<td><a href="{{ url_for('org_place', id=role.place_id) }}">{{ role.place.type_name() + ": " + role.place.name or '*' }}</a>
......
......@@ -85,7 +85,7 @@
<td>{% if user.is_system %}systémový uživatel{% elif user.is_admin %}správce{% elif user.roles|count == 0 %}<i>žádná role</i>{% endif %}
{% if user.roles|count > 0 %}
<ul>
{% for role in user.roles %}
{% for role in sorted_user_roles(user.roles) %}
{% if role.user_role_id in marked_roles_id %}
<li><b>{{ role }}</b></li>
{% else %}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment