summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorraylu <raylu@cmu.edu>2011-05-12 19:34:22 -0400
committerraylu <raylu@cmu.edu>2011-05-12 19:34:22 -0400
commitbc9cbd2cc9286bfe86b57c8ec44fec657c6c1236 (patch)
treef52c62fd8ecaa3a7e709fe4b7bb855f8a41c7a90
parent8300a1a6644d33deaf5ad0dcbc51755db3c21f00 (diff)
downloadpyc-bc9cbd2cc9286bfe86b57c8ec44fec657c6c1236.tar.xz
Login/logout
-rw-r--r--pyc/grader/views.py10
-rw-r--r--pyc/settings.py2
-rw-r--r--pyc/templates/index.html8
-rw-r--r--pyc/templates/login.html25
-rw-r--r--pyc/urls.py3
5 files changed, 46 insertions, 2 deletions
diff --git a/pyc/grader/views.py b/pyc/grader/views.py
index bba6b8f..c4fb082 100644
--- a/pyc/grader/views.py
+++ b/pyc/grader/views.py
@@ -2,9 +2,15 @@ from django.shortcuts import render_to_response
from grader.models import Lab
def index(request):
- return render_to_response('index.html', {'labs' : Lab.objects.all()})
+ return render_to_response('index.html', {
+ 'labs' : Lab.objects.all(),
+ 'authenticated' : request.user.is_authenticated(),
+ })
def lab(request, lab_id):
lab = Lab.objects.get(pk=lab_id)
submissions = lab.submission_set.filter(user__is_staff=False).order_by('-grade', '-time')
- return render_to_response('lab.html', {'lab' : lab, 'submissions' : submissions})
+ return render_to_response('lab.html', {
+ 'lab' : lab,
+ 'submissions' : submissions,
+ })
diff --git a/pyc/settings.py b/pyc/settings.py
index 69b3746..1e53bdd 100644
--- a/pyc/settings.py
+++ b/pyc/settings.py
@@ -126,6 +126,8 @@ INSTALLED_APPS = (
'grader',
)
+LOGIN_REDIRECT_URL = '/'
+
# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error.
diff --git a/pyc/templates/index.html b/pyc/templates/index.html
index 6707fca..ba860f2 100644
--- a/pyc/templates/index.html
+++ b/pyc/templates/index.html
@@ -6,4 +6,12 @@ Labs:
<li><a href="/lab/{{ lab.id }}/">{{ lab.name }}</a></li>
{% endfor %}
</ol>
+
+<p>
+{% if authenticated %}
+ <a href="{% url django.contrib.auth.views.logout %}">Logout</a>
+{% else %}
+ <a href="{% url django.contrib.auth.views.login %}">Login</a>
+{% endif %}
+</p>
{% endblock %}
diff --git a/pyc/templates/login.html b/pyc/templates/login.html
new file mode 100644
index 0000000..b80abee
--- /dev/null
+++ b/pyc/templates/login.html
@@ -0,0 +1,25 @@
+{% extends 'base.html' %}
+{% load url from future %}
+
+{% block body %}
+{% if form.errors %}
+<p>Login error.</p>
+{% endif %}
+
+<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
+{% csrf_token %}
+<table>
+ <tr>
+ <td style="text-align: right">{{ form.username.label_tag }}</td>
+ <td>{{ form.username }}</td>
+ </tr>
+ <tr>
+ <td style="text-align: right">{{ form.password.label_tag }}</td>
+ <td>{{ form.password }}</td>
+ </tr>
+</table>
+
+<input type="submit" value="login" />
+<input type="hidden" name="next" value="{{ next }}" />
+</form>
+{% endblock %}
diff --git a/pyc/urls.py b/pyc/urls.py
index b65970e..9f30735 100644
--- a/pyc/urls.py
+++ b/pyc/urls.py
@@ -7,6 +7,9 @@ urlpatterns = patterns('',
url(r'^$', 'grader.views.index', name='index'),
url(r'^lab/(?P<lab_id>\d+)/$', 'grader.views.lab'),
+ url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),
+ url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/'}),
+
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),