+ def get_urls(self):
+ return patterns(
+ '',
+ url(r'^report/$', self.admin_site.admin_view(report_view), name='wtem_admin_report')
+ ) + super(SubmissionAdmin, self).get_urls()
+
+
+class SubmissionsSet:
+ def __init__(self, submissions):
+ self.submissions = submissions
+ self.examiners_by_exercise = {}
+ for submission in submissions:
+ for user_id, marks in submission.marks.items():
+ user = User.objects.get(pk=user_id)
+ for exercise_id in marks.keys():
+ examiners = self.examiners_by_exercise.setdefault(exercise_id, [])
+ if user not in examiners:
+ examiners.append(user)
+ if submission.contact:
+ contact_body = submission.contact.body
+ submission.school = '%s %s' % (contact_body.get('school'), contact_body.get('school_address'))
+
+
+def report_view(request):
+ submissions = sorted(Submission.objects.all(), key=lambda s: -s.final_result)
+ toret = render_to_string('wtem/admin_report.csv', {
+ 'submissionsSet': SubmissionsSet(submissions),
+ 'exercise_ids': [str(e['id']) for e in exercises]})
+ response = HttpResponse(toret, content_type='text/csv')
+ response['Content-Disposition'] = 'attachment; filename="wyniki.csv"'
+ return response
+
+
+class ConfirmationAdmin(admin.ModelAdmin):
+ list_display = ('email', 'first_name', 'last_name', 'readable_contact', 'readable_age', 'confirmed')
+ readonly_fields = ('contact', 'readable_contact', 'readable_age', 'key', 'confirmed')
+
+ def resend_mail(self, request, queryset):
+ for confirmation in queryset:
+ confirmation.send_mail()
+ resend_mail.short_description = "Wyślij kod ponownie"
+
+ actions = [resend_mail]