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)))