コード例 #1
0
ファイル: tests.py プロジェクト: marmistrz/oioioi
 def test_default(self):
     contest = Contest.objects.get(id="c")
     collector = SubmissionsWithUserDataCollector(contest)
     submission_data_list = collector.collect_list()
     submissions = [s.submission_id for s in submission_data_list]
     self.assertEqual(submissions, [1, 2, 3, 4])
     self.assert_correct_submission_data(submission_data_list)
コード例 #2
0
 def test_default(self):
     contest = Contest.objects.get(id="c")
     collector = SubmissionsWithUserDataCollector(contest)
     submission_data_list = collector.collect_list()
     submissions = [s.submission_id for s in submission_data_list]
     self.assertEqual(submissions, [1, 2, 3, 4])
     self.assert_correct_submission_data(submission_data_list)
コード例 #3
0
ファイル: tests.py プロジェクト: marmistrz/oioioi
 def test_specific_round(self):
     contest = Contest.objects.get(id="c")
     round = Round.objects.get(id=3)
     collector = SubmissionsWithUserDataCollector(contest, round=round)
     submission_data_list = collector.collect_list()
     submissions = [s.submission_id for s in submission_data_list]
     self.assertEqual(submissions, [3])
     self.assert_correct_submission_data(submission_data_list)
コード例 #4
0
ファイル: tests.py プロジェクト: marmistrz/oioioi
 def test_not_only_final(self):
     contest = Contest.objects.get(id="c")
     collector = SubmissionsWithUserDataCollector(contest, only_final=False)
     submission_data_list = collector.collect_list()
     submissions = [s.submission_id for s in submission_data_list]
     # actually all are final
     self.assertEqual(submissions, [1, 2, 3, 4])
     self.assert_correct_submission_data(submission_data_list)
コード例 #5
0
 def test_specific_round(self):
     contest = Contest.objects.get(id="c")
     round = Round.objects.get(id=3)
     collector = SubmissionsWithUserDataCollector(contest, round=round)
     submission_data_list = collector.collect_list()
     submissions = [s.submission_id for s in submission_data_list]
     self.assertEqual(submissions, [3])
     self.assert_correct_submission_data(submission_data_list)
コード例 #6
0
 def test_not_only_final(self):
     contest = Contest.objects.get(id="c")
     collector = SubmissionsWithUserDataCollector(contest, only_final=False)
     submission_data_list = collector.collect_list()
     submissions = [s.submission_id for s in submission_data_list]
     # actually all are final
     self.assertEqual(submissions, [1, 2, 3, 4])
     self.assert_correct_submission_data(submission_data_list)
コード例 #7
0
def export_submissions_view(request):
    if request.method == 'POST':
        form = ExportSubmissionsForm(request, request.POST)
        if form.is_valid():
            round = form.cleaned_data['round']
            only_final = form.cleaned_data['only_final']
            collector = SubmissionsWithUserDataCollector(request.contest,
                round=round, only_final=only_final)
            # TemporaryFile promises removal of the file when it is closed.
            # Note that we cannot use with, because we want to keep it beyond
            # this function call.
            tmp_file = tempfile.TemporaryFile()
            build_submissions_archive(tmp_file, collector)
            # We send a large file with django. Usually it isn't a good idea,
            # but letting the web server do it leads to problems with when to
            # delete this file and from where.
            tmp_file.seek(0, os.SEEK_SET)  # go to the beginning of the file
            response = FileResponse(tmp_file)
            response['Content-Type'] = 'application/gzip'
            response['Content-Disposition'] = ('attachment; filename="%s.tgz"'
                % request.contest.id)
            return response
    else:
        form = ExportSubmissionsForm(request)
    return TemplateResponse(request,
        'similarsubmits/export_submissions.html',
        {'form': form})
コード例 #8
0
ファイル: export_submissions.py プロジェクト: tmkkk/oioioi
    def handle(self, *args, **options):
        contest = Contest.objects.get(id=options['contest_id'])

        round_id = options.get('round_id')
        if round_id:
            round = Round.objects.get(id=round_id)
            if round.contest != contest:
                raise CommandError("This round doesn't belong to the chosen contest.")
        else:
            round = None

        collector = SubmissionsWithUserDataCollector(
            contest, round=round, only_final=not options.get('all')
        )
        with open(options['out_file'], 'wb') as f:
            build_submissions_archive(f, collector)
コード例 #9
0
    def handle(self, *args, **options):
        if len(args) != 2:
            raise CommandError("Exactly two arguments are required.")

        contest_id = args[0]
        out_file = args[1]

        contest = Contest.objects.get(id=contest_id)

        round_id = options.get('round_id')
        if round_id:
            round = Round.objects.get(id=round_id)
            if round.contest != contest:
                raise CommandError(
                    "This round doesn't belong to the chosen contest.")
        else:
            round = None

        collector = SubmissionsWithUserDataCollector(
            contest, round=round, only_final=not options.get('all'))
        with open(out_file, 'w') as f:
            build_submissions_archive(f, collector)