From 25167a7fa5adc08c3bbf79c730d6a0bb45e50efb Mon Sep 17 00:00:00 2001 From: raylu Date: Thu, 12 May 2011 21:37:52 -0400 Subject: Basic file uploading --- pyc/grader/views.py | 20 ++++++++++++++++++++ pyc/settings.py | 3 ++- pyc/templates/lab.html | 4 ++++ pyc/templates/submit.html | 10 ++++++++++ pyc/urls.py | 1 + 5 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 pyc/templates/submit.html 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): {% endfor %} + +

+Submit your solution +

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

+

+{{ form }} + +{% csrf_token %} +
+

+{% 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\d+)/$', 'grader.views.lab'), + url(r'^submit/(?P\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': '/'}), -- cgit v1.2.3