plateforme-tfjm2/apps/member/management/commands/extract_solutions.py

46 lines
1.7 KiB
Python
Raw Normal View History

import os
from shutil import copyfile
from django.core.management import BaseCommand
from django.utils import translation
from tournament.models import Tournament
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('dir',
type=str,
default='.',
help="Directory where solutions should be saved.")
parser.add_argument('--language', '-l',
type=str,
choices=['en', 'fr'],
default='fr',
help="Language of the title of the files.")
def handle(self, *args, **options):
"""
Copy solutions elsewhere.
"""
d = options['dir']
translation.activate(options['language'])
copied = 0
for tournament in Tournament.objects.all():
os.mkdir(d + '/' + tournament.name)
for team in tournament.teams.filter(validation_status='2valid'):
os.mkdir(d + '/' + tournament.name + '/' + str(team))
for sol in tournament.solutions:
if not os.path.isfile('media/' + sol.file.name):
self.stdout.write(self.style.WARNING(("Warning: solution '{sol}' is not found. Maybe the file"
"was deleted?").format(sol=str(sol))))
continue
copyfile('media/' + sol.file.name, d + '/' + tournament.name
+ '/' + str(sol.team) + '/' + str(sol) + '.pdf')
copied += 1
self.stdout.write(self.style.SUCCESS("Successfully copied {copied} solutions!".format(copied=copied)))