Add a script to extract solutions, ordered in directories

This commit is contained in:
Yohann D'ANELLO 2020-05-30 17:00:44 +02:00
parent 6d01298e24
commit 1ef48fc3b4
1 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,45 @@
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)))