Skip to content

Commit 40725a4

Browse files
Added task to generate team csvs
1 parent f25e4bb commit 40725a4

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

src/contestadmin/tasks.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,38 @@ def generate_ec_reports():
266266
f'Processed extra credit files for {num_courses} courses')
267267

268268

269+
@shared_task
270+
def generate_team_csvs():
271+
"""
272+
Celery task which creates CSV files containing team data per division.
273+
"""
274+
275+
for division in Team.DIVISION:
276+
if division[0] == 1: # Upper
277+
team_file = f"{MEDIA_ROOT}/team_files/upper.csv"
278+
else: # Lower
279+
team_file = f"{MEDIA_ROOT}/team_files/lower.csv"
280+
281+
with open(team_file, 'w', newline='') as team_csv:
282+
writer = csv.writer(
283+
team_csv, delimiter=',', quoting=csv.QUOTE_MINIMAL)
284+
285+
# File header
286+
writer.writerow(['team_division', 'team_name', 'questions_answered', 'domjudge_id', 'team_active', 'team_members'])
287+
288+
# Team data
289+
teams = Team.objects.filter(division=division[0])
290+
for team in teams:
291+
writer.writerow([
292+
team.get_division_code(),
293+
team.name,
294+
team.questions_answered,
295+
team.contest_id,
296+
'T' if team.is_active() else 'F',
297+
'_'.join(team.get_members())
298+
])
299+
300+
269301
@shared_task
270302
def email_faculty(domain):
271303
"""

0 commit comments

Comments
 (0)