From 397978d194a5b7919a3656ffc437974ba750b25b Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Sat, 2 Jan 2021 23:49:47 +0100 Subject: [PATCH] =?UTF-8?q?Enum=C5=AFm=20p=C5=99id=C3=A1v=C3=A1m=20metodu?= =?UTF-8?q?=20friendly=5Fname()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mo/db.py | 12 +++++++++--- mo/rights.py | 11 +++++------ mo/web/org_contest.py | 2 +- mo/web/templates/org_user.html | 2 +- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/mo/db.py b/mo/db.py index ea921807..0dc0b644 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 3304c72c..384b94d5 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 508c63d5..0df2acea 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 ae19ee0e..de9ecb7e 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> -- GitLab