diff options
-rw-r--r-- | pyc/grader/views.py | 20 | ||||
-rw-r--r-- | pyc/settings.py | 3 | ||||
-rw-r--r-- | pyc/templates/lab.html | 4 | ||||
-rw-r--r-- | pyc/templates/submit.html | 10 | ||||
-rw-r--r-- | pyc/urls.py | 1 |
5 files changed, 37 insertions, 1 deletions
diff --git a/pyc/grader/views.py b/pyc/grader/views.py index c4fb082..21ea22f 100644 --- a/pyc/grader/views.py +++ b/pyc/grader/views.py @@ -1,4 +1,6 @@ from django.shortcuts import render_to_response +from django.template import RequestContext + from grader.models import Lab def index(request): @@ -14,3 +16,21 @@ def lab(request, lab_id): 'lab' : lab, 'submissions' : submissions, }) + +from django.contrib.auth.decorators import login_required +@login_required +def submit(request, lab_id): + from django.http import HttpResponseRedirect + if request.method == 'POST': + form = SubmissionForm(request.POST, request.FILES) + if form.is_valid(): + return HttpResponseRedirect('/user/1/') + else: + form = SubmissionForm() + return render_to_response('submit.html', { + 'form' : form, + }, context_instance=RequestContext(request)) + +from django import forms +class SubmissionForm(forms.Form): + file = forms.FileField() diff --git a/pyc/settings.py b/pyc/settings.py index 1e53bdd..75d27be 100644 --- a/pyc/settings.py +++ b/pyc/settings.py @@ -51,7 +51,7 @@ USE_L10N = True # Absolute filesystem path to the directory that will hold user-uploaded files. # Example: "/home/media/media.lawrence.com/media/" -MEDIA_ROOT = '' +MEDIA_ROOT = path.expanduser('~/submissions') # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash. @@ -127,6 +127,7 @@ INSTALLED_APPS = ( ) LOGIN_REDIRECT_URL = '/' +LOGIN_URL = '/login' # A sample logging configuration. The only tangible logging # performed by this configuration is to send an email to diff --git a/pyc/templates/lab.html b/pyc/templates/lab.html index f07a082..2d7316d 100644 --- a/pyc/templates/lab.html +++ b/pyc/templates/lab.html @@ -17,4 +17,8 @@ Lab {{ lab.id }} due {{ lab.due }} at 11:59:59 PDT (UTC-7): </tr> {% endfor %} </table> + +<p> +<a href="/submit/{{ lab.id }}/">Submit</a> your solution +</p> {% endblock %} diff --git a/pyc/templates/submit.html b/pyc/templates/submit.html new file mode 100644 index 0000000..e8746d5 --- /dev/null +++ b/pyc/templates/submit.html @@ -0,0 +1,10 @@ +{% extends 'base.html' %} +{% block body %} +<p> +<form method="POST" enctype="multipart/form-data"> +{{ form }} +<input type="submit"> +{% csrf_token %} +</form> +</p> +{% endblock %} diff --git a/pyc/urls.py b/pyc/urls.py index 9f30735..8132990 100644 --- a/pyc/urls.py +++ b/pyc/urls.py @@ -6,6 +6,7 @@ admin.autodiscover() 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'^login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}), url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/'}), |