From 3bd21cd67e84af22361fe3b47f507feb217a45e9 Mon Sep 17 00:00:00 2001 From: raylu Date: Fri, 13 May 2011 22:35:43 -0400 Subject: View submissions (for staff) --- pyc/grader/views.py | 19 ++++++++++++++++--- pyc/templates/lab.html | 8 +++++++- pyc/templates/submission.html | 6 ++++++ pyc/urls.py | 1 + 4 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 pyc/templates/submission.html diff --git a/pyc/grader/views.py b/pyc/grader/views.py index 02d5ce4..8718c5e 100644 --- a/pyc/grader/views.py +++ b/pyc/grader/views.py @@ -1,8 +1,12 @@ from django.shortcuts import render_to_response from django.template import RequestContext +from django.contrib.auth.decorators import login_required, user_passes_test +from django.conf import settings from grader.models import Lab, Submission +import os + def index(request): return render_to_response('index.html', { 'labs' : Lab.objects.all(), @@ -25,15 +29,13 @@ def lab(request, lab_id): return render_to_response('lab.html', { 'lab' : lab, 'submissions' : submissions, + 'staff' : request.user.is_staff }) -from django.contrib.auth.decorators import login_required @login_required def submit(request, lab_id): from django.http import HttpResponseRedirect from django.db import IntegrityError - from django.conf import settings - import os from datetime import datetime if request.method == 'POST': @@ -74,6 +76,17 @@ def submit(request, lab_id): 'lab_id' : lab_id, }, context_instance=RequestContext(request)) +@user_passes_test(lambda u: u.is_staff) +def submission(request, lab_id, user_id): + submission = Submission.objects.get(lab__exact=lab_id, user__exact=user_id) + filepath = os.path.join(settings.MEDIA_ROOT, submission.file.name) + f = open(filepath, 'r') + code = f.read() + f.close() + return render_to_response('submission.html', { + 'code' : code, + }) + def grade(file, id): import subprocess from os import path diff --git a/pyc/templates/lab.html b/pyc/templates/lab.html index 916f95f..9586558 100644 --- a/pyc/templates/lab.html +++ b/pyc/templates/lab.html @@ -13,7 +13,13 @@ Lab {{ lab.id }} due {{ lab.due }} at 11:59:59 PDT (UTC-7): {% for s in submissions %} {{ s.user }} - {{ s.grade }} + + {% if staff %} + {{ s.grade }} + {% else %} + {{ s.grade }} + {% endif %} + {{ s.time }} {% endfor %} diff --git a/pyc/templates/submission.html b/pyc/templates/submission.html new file mode 100644 index 0000000..66ce94a --- /dev/null +++ b/pyc/templates/submission.html @@ -0,0 +1,6 @@ +{% extends 'base.html' %} +{% block body %} +
+{{ code }}
+
+{% endblock %} diff --git a/pyc/urls.py b/pyc/urls.py index eaa5026..899689b 100644 --- a/pyc/urls.py +++ b/pyc/urls.py @@ -7,6 +7,7 @@ urlpatterns = patterns('', url(r'^$', 'grader.views.index', name='index'), url(r'^lab/(?P\d+)/$', 'grader.views.lab'), url(r'^submit/(?P\d+)/$', 'grader.views.submit'), + url(r'^submission/(?P\d+)/(?P\d+)/$', 'grader.views.submission'), url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}), url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/'}), -- cgit v1.2.3