From ffa5a039d93311c48f143b9675b5ced21a898b3a Mon Sep 17 00:00:00 2001 From: sebastian Date: Wed, 16 Oct 2013 23:59:32 +0200 Subject: [PATCH] Added login --- past3d/settings.py | 4 +++ past3d/urls.py | 1 + pastebin/views.py | 13 +++++--- templates/base.html | 4 +-- users/__init__.py | 0 users/models.py | 3 ++ users/templates/users/login.html | 56 ++++++++++++++++++++++++++++++++ users/tests.py | 16 +++++++++ users/urls.py | 8 +++++ users/views.py | 1 + 10 files changed, 99 insertions(+), 7 deletions(-) create mode 100644 users/__init__.py create mode 100644 users/models.py create mode 100644 users/templates/users/login.html create mode 100644 users/tests.py create mode 100644 users/urls.py create mode 100644 users/views.py diff --git a/past3d/settings.py b/past3d/settings.py index 4d36cf0..5729eb5 100644 --- a/past3d/settings.py +++ b/past3d/settings.py @@ -1,4 +1,5 @@ # Django settings for past3d project. +from django.core.urlresolvers import reverse_lazy import os BASE_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../') @@ -127,6 +128,7 @@ INSTALLED_APPS = ( 'django.contrib.messages', 'django.contrib.staticfiles', 'pastebin', + 'users', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: @@ -135,6 +137,8 @@ INSTALLED_APPS = ( SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer' +LOGIN_REDIRECT_URL = reverse_lazy('geometry_create') + # 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 when DEBUG=False. diff --git a/past3d/urls.py b/past3d/urls.py index 6a57a0a..5231abe 100644 --- a/past3d/urls.py +++ b/past3d/urls.py @@ -12,6 +12,7 @@ urlpatterns = patterns('', # url(r'^$', 'past3d.views.home', name='home'), # url(r'^past3d/', include('past3d.foo.urls')), + url(r'^users/', include('users.urls')), url(r'^3d/', include('pastebin.urls')), # Uncomment the admin/doc line below to enable admin documentation: diff --git a/pastebin/views.py b/pastebin/views.py index 0524133..d526034 100644 --- a/pastebin/views.py +++ b/pastebin/views.py @@ -7,6 +7,13 @@ from forms import GeometryForm from models import Geometry +class LastesGeometriesMixin(ContextMixin): + def get_context_data(self, **kwargs): + context = super(LastesGeometriesMixin, self).get_context_data(**kwargs) + context['latest_geometries'] = Geometry.get_latest() + return context + + class GeometryView(DetailView): model = Geometry pk_url_kwarg = 'id' @@ -14,7 +21,7 @@ class GeometryView(DetailView): template_name = 'pastebin/geometry.html' -class GeometryCreate(CreateView): +class GeometryCreate(CreateView, LastesGeometriesMixin): model = Geometry form_class = GeometryForm template_name = 'pastebin/geometry_create.html' @@ -22,7 +29,3 @@ class GeometryCreate(CreateView): def get_success_url(self): return reverse('geometry_details', kwargs={'id' :self.object.id}) - def get_context_data(self, **kwargs): - context = super(CreateView, self).get_context_data(**kwargs) - context['latest_geometries'] = Geometry.get_latest() - return context \ No newline at end of file diff --git a/templates/base.html b/templates/base.html index 6383c80..f54b358 100644 --- a/templates/base.html +++ b/templates/base.html @@ -20,9 +20,9 @@ past3d diff --git a/users/__init__.py b/users/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/users/models.py b/users/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/users/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/users/templates/users/login.html b/users/templates/users/login.html new file mode 100644 index 0000000..5a9235e --- /dev/null +++ b/users/templates/users/login.html @@ -0,0 +1,56 @@ +{% extends "base.html" %} + + +{% block title %} Login {% endblock %} + + +{% block headeraddons %} + + +{% endblock %} + + +{% block content %} +
+
+ +
+ +

Login

+
+
+
+
+ {% csrf_token %} +
+ {% for field in form %} +
+ {{ field.label_tag }} + {{ field }} + {{ field.errors }} +
+ {% endfor %} +
+ + +
+
+
+
+
+
+

Latest uploads

+
    + {% for geometry in latest_geometries %} +
  • + + {{geometry.name}} + - {{geometry.date}} +
  • + {% endfor %} +
+
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/users/tests.py b/users/tests.py new file mode 100644 index 0000000..501deb7 --- /dev/null +++ b/users/tests.py @@ -0,0 +1,16 @@ +""" +This file demonstrates writing tests using the unittest module. These will pass +when you run "manage.py test". + +Replace this with more appropriate tests for your application. +""" + +from django.test import TestCase + + +class SimpleTest(TestCase): + def test_basic_addition(self): + """ + Tests that 1 + 1 always equals 2. + """ + self.assertEqual(1 + 1, 2) diff --git a/users/urls.py b/users/urls.py new file mode 100644 index 0000000..5757020 --- /dev/null +++ b/users/urls.py @@ -0,0 +1,8 @@ +from django.conf.urls import patterns, include, url + +from pastebin.models import Geometry + +urlpatterns = patterns('', + url(r'^login/$', 'django.contrib.auth.views.login', {'extra_context' : {'latest_geometries' : Geometry.get_latest()}, + 'template_name' : 'users/login.html'}, + name='login')) \ No newline at end of file diff --git a/users/views.py b/users/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/users/views.py @@ -0,0 +1 @@ +# Create your views here.