Explorar el Código

Basic file uploading

raylu hace 14 años
padre
commit
25167a7fa5
Se han modificado 5 ficheros con 37 adiciones y 1 borrados
  1. 20 0
      pyc/grader/views.py
  2. 2 1
      pyc/settings.py
  3. 4 0
      pyc/templates/lab.html
  4. 10 0
      pyc/templates/submit.html
  5. 1 0
      pyc/urls.py

+ 20 - 0
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()

+ 2 - 1
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

+ 4 - 0
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 %}

+ 10 - 0
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 %}

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