Skip to content
Snippets Groups Projects
Commit bbc9ea83 authored by Jiří Setnička's avatar Jiří Setnička
Browse files

DB: Přidání nastavení výsledkovek v tabulce rounds

* mód výsledkovky
* bodový limit pro vítěze
* bodový limit pro úspěšné řešitele
parent 5df7fe62
No related branches found
No related tags found
1 merge request!33Výsledkové listiny - backend modul & pravidla MO
This commit is part of merge request !33. Comments created here will be created in the context of that merge request.
......@@ -83,6 +83,11 @@ CREATE TYPE round_state AS ENUM (
-- jen se odevzdaná řešení zobrazují jako opožděná.
);
CREATE TYPE score_mode AS ENUM (
'basic', -- základní mód výsledkovky se sdílenými místy
'mo' -- jednoznačné pořadí podle pravidel MO
);
CREATE TABLE rounds (
round_id serial PRIMARY KEY,
year int NOT NULL, -- ročník MO
......@@ -96,6 +101,9 @@ CREATE TABLE rounds (
ct_submit_end timestamp with time zone DEFAULT NULL, -- do kdy účastníci mohou regulérně odevzdávat
pr_tasks_start timestamp with time zone DEFAULT NULL, -- od kdy dozor vidí zadání
pr_submit_end timestamp with time zone DEFAULT NULL, -- do kdy dozor může regulérně odevzdávat
score_mode score_mode NOT NULL DEFAULT 'basic', -- mód výsledkovky
score_winner_limit int DEFAULT NULL, -- bodový limit na označení za vítěze
score_successful_limit int DEFAULT NULL, -- bodový limit na označení za úspěšného řešitele
UNIQUE (year, category, seq)
);
......
SET ROLE 'mo_osmo';
CREATE TYPE score_mode AS ENUM (
'basic', -- základní mód výsledkovky se sdílenými místy
'mo' -- jednoznačné pořadí podle pravidel MO
);
ALTER TABLE rounds
ADD COLUMN score_mode score_mode NOT NULL DEFAULT 'basic', -- mód výsledkovky
ADD COLUMN score_winner_limit int DEFAULT NULL, -- bodový limit na označení za vítěze
ADD COLUMN score_successful_limit int DEFAULT NULL; -- bodový limit na označení za úspěšného řešitele
......@@ -177,6 +177,20 @@ round_state_names = {
}
class RoundScoreMode(MOEnum):
basic = auto()
mo = auto()
def friendly_name(self) -> str:
return round_score_mode_names[self]
round_score_mode_names = {
RoundScoreMode.basic: "Základní se sdílenými místy",
RoundScoreMode.mo: "Jednoznačné pořadí podle pravidel MO",
}
class Round(Base):
__tablename__ = 'rounds'
__table_args__ = (
......@@ -195,6 +209,9 @@ class Round(Base):
ct_submit_end = Column(DateTime(True))
pr_tasks_start = Column(DateTime(True))
pr_submit_end = Column(DateTime(True))
score_mode = Column(Enum(RoundScoreMode, name='score_mode'), nullable=False, server_default=text("'basic'::score_mode"))
score_winner_limit = Column(Integer)
score_successful_limit = Column(Integer)
def round_code(self):
return f"{self.year}-{self.category}-{self.seq}"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment