diff options
-rw-r--r-- | pyc/grader/views.py | 19 | ||||
-rw-r--r-- | pyc/templates/lab.html | 8 | ||||
-rw-r--r-- | pyc/templates/submission.html | 6 | ||||
-rw-r--r-- | pyc/urls.py | 1 |
4 files changed, 30 insertions, 4 deletions
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 %} <tr> <td>{{ s.user }}</td> - <td>{{ s.grade }}</td> + <td> + {% if staff %} + <a href="/submission/{{ lab.id }}/{{ s.user.id }}/">{{ s.grade }}</a> + {% else %} + {{ s.grade }} + {% endif %} + </td> <td>{{ s.time }}</td> </tr> {% 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 %} +<pre> +{{ code }} +</pre> +{% 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<lab_id>\d+)/$', 'grader.views.lab'), url(r'^submit/(?P<lab_id>\d+)/$', 'grader.views.submit'), + url(r'^submission/(?P<lab_id>\d+)/(?P<user_id>\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': '/'}), |