Oh, right
[edumed.git] / wtem / admin.py
index 15430cc..d4b6682 100644 (file)
@@ -10,6 +10,8 @@ from django.core.urlresolvers import reverse
 from django.conf.urls import url, patterns
 from django.shortcuts import render
 from django.contrib.auth.models import User
 from django.conf.urls import url, patterns
 from django.shortcuts import render
 from django.contrib.auth.models import User
+from django.http import HttpResponse
+from django.template.loader import render_to_string
 from .models import Submission, Assignment, Attachment, exercises
 from .middleware import get_current_request
 
 from .models import Submission, Assignment, Attachment, exercises
 from .middleware import get_current_request
 
@@ -30,12 +32,12 @@ class AttachmentWidget(forms.Widget):
             a_tag = '<a href="%s">%s</a>' % (value, value)
         else:
             a_tag = 'brak'
             a_tag = '<a href="%s">%s</a>' % (value, value)
         else:
             a_tag = 'brak'
-        return mark_safe(('<input type="hidden" name="%s" value="%s"/>' + a_tag) % (name, value))
+        return mark_safe(('<input type="hidden" name="%s" value="%s"/>' % (name, value)) + a_tag)
 
 class SubmissionFormBase(forms.ModelForm):
     class Meta:
         model = Submission
 
 class SubmissionFormBase(forms.ModelForm):
     class Meta:
         model = Submission
-        exclude = ('answers', 'marks', 'contact') + readonly_fields
+        exclude = ('answers', 'marks', 'contact', 'end_time') + readonly_fields
 
 
 def get_open_answer(answers, exercise):
 
 
 def get_open_answer(answers, exercise):
@@ -57,9 +59,10 @@ def get_open_answer(answers, exercise):
     if exercise['type'] == 'edumed_wybor':
         ok = set(map(str, exercise['answer'])) == set(map(str,answer['closed_part']))
         toret = u'Czesc testowa [%s]:\n' % ('poprawna' if ok else 'niepoprawna')
     if exercise['type'] == 'edumed_wybor':
         ok = set(map(str, exercise['answer'])) == set(map(str,answer['closed_part']))
         toret = u'Czesc testowa [%s]:\n' % ('poprawna' if ok else 'niepoprawna')
-        for selected in answer['closed_part']:
-            option = get_option(exercise['options'], selected)
-            toret += '%s: %s\n' % (selected, option['text'])
+        if len(answer['closed_part']):
+            for selected in answer['closed_part']:
+                option = get_option(exercise['options'], selected)
+                toret += '%s: %s\n' % (selected, option['text'])
         else:
             toret += u'<nie wybrano odpowiedzi>\n'
         toret += u'\nCzesc otwarta (%s):\n\n' % ' '.join(exercise['open_part'])
         else:
             toret += u'<nie wybrano odpowiedzi>\n'
         toret += u'\nCzesc otwarta (%s):\n\n' % ' '.join(exercise['open_part'])
@@ -189,12 +192,14 @@ class SubmissionsSet:
                         examiners.append(user)
 
 def report_view(request):
                         examiners.append(user)
 
 def report_view(request):
-    submissions = Submission.objects.all()
-    submissions = sorted(submissions, key = lambda s: -s.final_result)
-    return render(request, 'wtem/admin_report.csv', dict(
+    submissions = sorted(Submission.objects.all(), key = lambda s: -s.final_result)
+    toret = render_to_string('wtem/admin_report.csv', dict(
         submissionsSet = SubmissionsSet(submissions),
         exercise_ids = map(str, range(1,len(exercises)+1))
     ))
         submissionsSet = SubmissionsSet(submissions),
         exercise_ids = map(str, range(1,len(exercises)+1))
     ))
+    response = HttpResponse(toret, content_type = 'text/csv')
+    response['Content-Disposition'] = 'attachment; filename="wyniki.csv"'
+    return response
 
 admin.site.register(Submission, SubmissionAdmin)
 admin.site.register(Assignment)
\ No newline at end of file
 
 admin.site.register(Submission, SubmissionAdmin)
 admin.site.register(Assignment)
\ No newline at end of file