diff --git a/mo/db.py b/mo/db.py index ea9218072bcfc878526ac4bf05792a95ead86016..0dc0b644b71ebac8d665af55c481d2ad04779cb8 100644 --- a/mo/db.py +++ b/mo/db.py @@ -237,9 +237,12 @@ class PartState(MOEnum): def choices(enum): out = [] for item in enum: - out.append((item.name, part_state_names[item])) + out.append((item.name, item.friendly_name())) return out + def friendly_name(self) -> str: + return part_state_names[self] + part_state_names = { PartState.registered: 'registrovaný', @@ -250,7 +253,6 @@ part_state_names = { } - class Participation(Base): __tablename__ = 'participations' @@ -285,6 +287,9 @@ class RoleType(MOEnum): dozor = auto() opravovatel = auto() + def friendly_name(self) -> str: + return role_type_names[self] + role_type_names = { RoleType.garant: 'celostátní garant', @@ -294,6 +299,7 @@ role_type_names = { RoleType.opravovatel: 'opravovatel', } + class UserRole(Base): __tablename__ = 'user_roles' @@ -312,7 +318,7 @@ class UserRole(Base): place = relationship('Place') def __str__(self): - parts = [role_type_names[self.role]] + parts = [self.role.friendly_name()] if self.seq: parts.append(f"{self.seq}. kola") if self.year: diff --git a/mo/rights.py b/mo/rights.py index 3304c72c145a8da2824f884fae31a902774714da..384b94d573b253887101d73cc9f9d7496eb2f0a6 100644 --- a/mo/rights.py +++ b/mo/rights.py @@ -3,7 +3,6 @@ from enum import Enum, auto from dataclasses import dataclass from typing import Set, List, Dict, Optional -import sqlalchemy.orm as orm import mo.db as db @@ -28,6 +27,11 @@ class Role: name: str rights: Set[Right] + def __init__(self, role: db.RoleType, rights: Set[Right]): + self.role = role + self.name = role.friendly_name() + self.rights = rights + # Order in this list represents hierarchy for assign_rights right # (garant could assign role of garant or garant_kraj, but garant_kraj cannot @@ -35,7 +39,6 @@ class Role: roles: List[Role] = [ Role( role=db.RoleType.garant, - name=db.role_type_names[db.RoleType.garant], rights={ Right.assign_rights, Right.edit_place, @@ -48,7 +51,6 @@ roles: List[Role] = [ ), Role( role=db.RoleType.garant_kraj, - name=db.role_type_names[db.RoleType.garant_kraj], rights={ Right.assign_rights, Right.edit_place, @@ -61,7 +63,6 @@ roles: List[Role] = [ ), Role( role=db.RoleType.garant_okres, - name=db.role_type_names[db.RoleType.garant_okres], rights={ Right.assign_rights, Right.edit_place, @@ -72,7 +73,6 @@ roles: List[Role] = [ ), Role( role=db.RoleType.dozor, - name=db.role_type_names[db.RoleType.dozor], rights={ Right.upload_solutions, Right.add_users, @@ -80,7 +80,6 @@ roles: List[Role] = [ ), Role( role=db.RoleType.opravovatel, - name=db.role_type_names[db.RoleType.opravovatel], rights={ Right.upload_feedback, Right.edit_points, diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py index 508c63d5d3887a5af352613514d3cebf62831e94..0df2acea18ea1a59b8312d88fbf3102079a5f03f 100644 --- a/mo/web/org_contest.py +++ b/mo/web/org_contest.py @@ -267,7 +267,7 @@ def make_contestant_table(round: db.Round, contest: Optional[db.Contest]) -> Tab 'born_year': pant.birth_year, 'region_code': cell_place_link(ct.place, ct.place.get_code()), 'place_code': cell_place_link(pion.place, pion.place.get_code()), - 'status': pion.state.name, + 'status': pion.state.friendly_name(), }) rows.sort(key=lambda r: r['sort_key']) diff --git a/mo/web/templates/org_user.html b/mo/web/templates/org_user.html index ae19ee0e826d0df0f674b4590a8d1b769c5fc71f..de9ecb7e04cdb6820da7ef782a093451eef7f6d6 100644 --- a/mo/web/templates/org_user.html +++ b/mo/web/templates/org_user.html @@ -57,7 +57,7 @@ <br>(ale soutěží v <a href="{{ url_for('org_place', id=round.place_id) }}">{{ round.place.name }}</a>) {% endif %} </td> - <td>{{ round.state.name }}</td> + <td>{{ round.state.friendly_name() }}</td> </tr> {% endfor %} </table>