Эх сурвалжийг харах

View submissions (for staff)

raylu 14 жил өмнө
parent
commit
3bd21cd67e

+ 16 - 3
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

+ 7 - 1
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 %}

+ 6 - 0
pyc/templates/submission.html

@@ -0,0 +1,6 @@
+{% extends 'base.html' %}
+{% block body %}
+<pre>
+{{ code }}
+</pre>
+{% endblock %}

+ 1 - 0
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': '/'}),