X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/d0f0e1412cc42d366b234e798dfb68feed05d751..d555d988764995ea1f9f5ece46f453a66f09b334:/src/wtem/management/commands/wtem_assign_submissions.py diff --git a/src/wtem/management/commands/wtem_assign_submissions.py b/src/wtem/management/commands/wtem_assign_submissions.py new file mode 100644 index 0000000..dcf0466 --- /dev/null +++ b/src/wtem/management/commands/wtem_assign_submissions.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +from optparse import make_option + +from django.core.management.base import BaseCommand +from django.db.models import Count +from django.contrib.auth.models import User + +from wtem.models import Submission, Attachment + + +class Command(BaseCommand): + + option_list = BaseCommand.option_list + ( + make_option( + '--with-attachments-only', + action='store_true', + dest='attachments_only', + default=False, + help='Take into account only submissions with attachments'), + make_option( + '--without-attachments-only', + action='store_true', + dest='no_attachments_only', + default=False, + help='Take into account only submissions without attachments'), + ) + + def handle(self, *args, **options): + + limit_from = int(args[0]) + limit_to = int(args[1]) + examiner_names = args[2:] + + users = User.objects.filter(username__in=examiner_names) + all_submissions = Submission.objects.annotate(examiners_count=Count('examiners')) + + submissions = all_submissions.exclude(answers=None) + + with_attachment_ids = Attachment.objects.values_list('submission_id', flat=True).all() + if options['attachments_only']: + submissions = submissions.filter(id__in=with_attachment_ids) + if options['no_attachments_only']: + submissions = submissions.exclude(id__in=with_attachment_ids) + + for submission in submissions.order_by('id')[limit_from:limit_to]: + submission.examiners.add(*users) + submission.save() + self.stdout.write('added to %s:%s' % (submission.id, submission.email)) + + count_by_examiners = dict() + for submission in all_submissions.all(): + count_by_examiners[submission.examiners_count] = \ + count_by_examiners.get(submission.examiners_count, 0) + 1 + self.stdout.write('%s' % count_by_examiners)