# HG changeset patch # User cavaliet # Date 1378223057 -7200 # Node ID 3b1b0a9309d6acf21d6cf651a739ff73c05173db # Parent cd4055479ba3897684bd09c7f28dc542806a4c51 login logout diff -r cd4055479ba3 -r 3b1b0a9309d6 src/p4l/settings.py --- a/src/p4l/settings.py Tue Sep 03 15:23:43 2013 +0200 +++ b/src/p4l/settings.py Tue Sep 03 17:44:17 2013 +0200 @@ -187,4 +187,12 @@ from config import * # @UnusedWildImport if not "SRC_BASE_URL" in locals(): - SRC_BASE_URL = BASE_URL + __name__.split('.')[0] + '/' + SRC_BASE_URL = BASE_URL + __name__.split('.')[0] + '/' +if not "LOGIN_URL" in locals(): + LOGIN_URL = SRC_BASE_URL + 'auth/login/' +if not "LOGOUT_URL" in locals(): + LOGOUT_URL = SRC_BASE_URL + 'auth/disconnect/' +if not "LOGIN_REDIRECT_URL" in locals(): + LOGIN_REDIRECT_URL = SRC_BASE_URL +if not "LOGOUT_REDIRECT_URL" in locals(): + LOGOUT_REDIRECT_URL = SRC_BASE_URL + 'auth/login' diff -r cd4055479ba3 -r 3b1b0a9309d6 src/p4l/templates/p4l/p4l_base.html --- a/src/p4l/templates/p4l/p4l_base.html Tue Sep 03 15:23:43 2013 +0200 +++ b/src/p4l/templates/p4l/p4l_base.html Tue Sep 03 17:44:17 2013 +0200 @@ -24,6 +24,15 @@ Plan 4 Learning + {% endblock %} diff -r cd4055479ba3 -r 3b1b0a9309d6 src/p4l/templates/registration/login.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/p4l/templates/registration/login.html Tue Sep 03 17:44:17 2013 +0200 @@ -0,0 +1,31 @@ +{% extends "p4l/p4l_base.html" %} +{% load i18n %} + +{% block page_title %}{% trans 'login' %}{% endblock %} + +{% block content %} +{% if form.errors %} +

{% trans "Sorry, that's not a valid username or password." %}

+{% endif %} +
+ {% csrf_token %} + +
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+{% endblock %} diff -r cd4055479ba3 -r 3b1b0a9309d6 src/p4l/urls.py --- a/src/p4l/urls.py Tue Sep 03 15:23:43 2013 +0200 +++ b/src/p4l/urls.py Tue Sep 03 17:44:17 2013 +0200 @@ -1,12 +1,13 @@ from django.conf.urls import patterns, include, url from django.contrib import admin +from django.contrib.auth import urls as auth_urls from p4l.views import RecordListView, RecordDetailView admin.autodiscover() urlpatterns = patterns('', - # Examples: url(r'^$', RecordListView.as_view(), name='p4l_home'), + url(r'^auth/', include(auth_urls)), url(r'^record/view$', RecordDetailView.as_view(), name='p4l_record_view'), url(r'^api/', include('p4l.api.urls')), diff -r cd4055479ba3 -r 3b1b0a9309d6 src/p4l/views.py --- a/src/p4l/views.py Tue Sep 03 15:23:43 2013 +0200 +++ b/src/p4l/views.py Tue Sep 03 17:44:17 2013 +0200 @@ -6,12 +6,10 @@ ''' from django.conf import settings -#from django.core.paginator import Paginator, InvalidPage, EmptyPage -#from django.db.models import Count -#from django.http.response import HttpResponse, HttpResponseForbidden +from django.contrib.auth.decorators import login_required from django.shortcuts import get_object_or_404 -from django.views.generic import ListView, DetailView#, View -#from django.views.generic.list import MultipleObjectMixin +from django.utils.decorators import method_decorator +from django.views.generic import ListView, DetailView from .models import Record from .forms import RecordFilterForm from .utils import get_labels_for_uris @@ -27,6 +25,9 @@ template_name = "p4l/p4l_home.html" form_class = RecordFilterForm + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super(RecordListView, self).dispatch(*args, **kwargs) def get_context_data(self, **kwargs): context = ListView.get_context_data(self, **kwargs) @@ -53,6 +54,10 @@ template_name = "p4l/p4l_record_view.html" slug_field = "uri" # Even if it is useless because we override get_objet + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super(RecordDetailView, self).dispatch(*args, **kwargs) + def get_object(self, queryset=None): if "uri" not in self.request.GET: raise AttributeError(u"Record view must be called uri GET parameter")