Skip to content

Commit d39de6b

Browse files
authored
[italy_yaml] Load all contest parameters from contest.yaml (#1276)
1 parent eb51ac1 commit d39de6b

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

cmscontrib/loaders/italy_yaml.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,11 @@ def load(src, dst, src_name, dst_name=None, conv=lambda i: i):
125125

126126

127127
def parse_datetime(val):
128+
if isinstance(val, datetime):
129+
return val.astimezone(timezone.utc)
128130
if isinstance(val, (int, float)):
129131
return datetime.fromtimestamp(val, timezone.utc)
130-
return datetime.fromisoformat(val)
132+
raise ValueError("Invalid datetime format.")
131133

132134

133135
def make_timedelta(t):
@@ -173,11 +175,26 @@ def get_contest(self):
173175

174176
args = {}
175177

178+
# Contest information
176179
load(conf, args, ["name", "nome_breve"])
177180
load(conf, args, ["description", "nome"])
181+
load(conf, args, "allowed_localizations")
182+
load(conf, args, "languages")
183+
load(conf, args, "submissions_download_allowed")
184+
load(conf, args, "allow_questions")
185+
load(conf, args, "allow_user_tests")
186+
load(conf, args, "score_precision")
178187

179188
logger.info("Loading parameters for contest %s.", args["name"])
180189

190+
# Logging in
191+
load(conf, args, "block_hidden_participations")
192+
load(conf, args, "allow_password_authentication")
193+
load(conf, args, "allow_registration")
194+
load(conf, args, "ip_restriction")
195+
load(conf, args, "ip_autologin")
196+
197+
# Token parameters
181198
# Use the new token settings format if detected.
182199
if "token_mode" in conf:
183200
load(conf, args, "token_mode")
@@ -219,16 +236,23 @@ def get_contest(self):
219236
if args["token_gen_interval"].total_seconds() == 0:
220237
args["token_gen_interval"] = timedelta(minutes=1)
221238

239+
# Times
222240
load(conf, args, ["start", "inizio"], conv=parse_datetime)
223241
load(conf, args, ["stop", "fine"], conv=parse_datetime)
224-
load(conf, args, ["per_user_time"], conv=make_timedelta)
225242
load(conf, args, ["timezone"])
243+
load(conf, args, ["per_user_time"], conv=make_timedelta)
226244

245+
# Limits
227246
load(conf, args, "max_submission_number")
228247
load(conf, args, "max_user_test_number")
229248
load(conf, args, "min_submission_interval", conv=make_timedelta)
230249
load(conf, args, "min_user_test_interval", conv=make_timedelta)
231250

251+
# Analysis mode
252+
load(conf, args, "analysis_enabled")
253+
load(conf, args, "analysis_start", conv=parse_datetime)
254+
load(conf, args, "analysis_stop", conv=parse_datetime)
255+
232256
tasks = load(conf, None, ["tasks", "problemi"])
233257
participations = load(conf, None, ["users", "utenti"])
234258
participations = [] if participations is None else participations

0 commit comments

Comments
 (0)