Added logout

Different paste forms for registred and anonymous users
This commit is contained in:
Sebastian 2013-10-17 16:16:27 +02:00
parent ffa5a039d9
commit cc5e2e7d78
5 changed files with 43 additions and 8 deletions

View File

@ -1,4 +1,5 @@
from django.forms import ModelForm from django.forms import ModelForm
from django import forms
from models import Geometry from models import Geometry
@ -6,4 +7,12 @@ from models import Geometry
class GeometryForm(ModelForm): class GeometryForm(ModelForm):
class Meta: class Meta:
model = Geometry model = Geometry
fields = ['name', 'description', 'public', 'expiration', 'file', 'sourcefile'] fields = ['name', 'description', 'public', 'expiration', 'file', 'sourcefile']
class AnonymousGeometryForm(ModelForm):
expiration = forms.ChoiceField(choices=Geometry.EXPIRATION_CHOICES[:-1])
class Meta:
model = Geometry
fields = ['name', 'description', 'public', 'expiration', 'file']

View File

@ -3,7 +3,7 @@ from django.views.generic.detail import DetailView
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.views.generic.base import ContextMixin from django.views.generic.base import ContextMixin
from forms import GeometryForm from forms import GeometryForm, AnonymousGeometryForm
from models import Geometry from models import Geometry
@ -23,9 +23,22 @@ class GeometryView(DetailView):
class GeometryCreate(CreateView, LastesGeometriesMixin): class GeometryCreate(CreateView, LastesGeometriesMixin):
model = Geometry model = Geometry
form_class = GeometryForm
template_name = 'pastebin/geometry_create.html' template_name = 'pastebin/geometry_create.html'
def get_success_url(self): def get_success_url(self):
return reverse('geometry_details', kwargs={'id' :self.object.id}) return reverse('geometry_details', kwargs={'id' :self.object.id})
def get_form_class(self):
if self.request.user.is_authenticated() :
return GeometryForm
else:
return AnonymousGeometryForm
def form_valid(self, form):
res = super(GeometryCreate, self).form_valid(form)
if self.request.user.is_authenticated() :
self.object.user = self.request.user
self.object.save()
return res

View File

@ -22,9 +22,12 @@
<ul> <ul>
<li ><a href="#">Home</a></li> <li ><a href="#">Home</a></li>
<li><a href="{% url 'geometry_create' %}">New Paste</a></li> <li><a href="{% url 'geometry_create' %}">New Paste</a></li>
<li><a href="{% url 'login' %}">Login</a></li> {% if user.is_authenticated %}
<li><a href="#">Sign up</a></li> <li><a href="{% url 'logout' %}">Logout</a></li>
<li><a href="#">Logout</a></li> {% else %}
<li><a href="{% url 'login' %}">Login</a></li>
<li><a href="#">Sign up</a></li>
{% endif %}
</ul> </ul>
</div> </div>
</div> </div>

View File

@ -20,7 +20,11 @@
<div class="pure-g-r"> <div class="pure-g-r">
<div class="pure-u-2-3"> <div class="pure-u-2-3">
<div class="textcontainer"> <div class="textcontainer">
<form method="post" class="pure-form pure-form-aligned"> {% if user.is_authenticated %}
You are already logged in !<br/>
Did you mean: <a href="{% url 'logout' %}">logout</a> ?
{% else %}
<form method="post" class="pure-form pure-form-aligned">
{% csrf_token %} {% csrf_token %}
<fieldset> <fieldset>
{% for field in form %} {% for field in form %}
@ -35,6 +39,8 @@
<input class="pure-button button-green" id="submitbutton" type="submit" value="Login" /> <input class="pure-button button-green" id="submitbutton" type="submit" value="Login" />
</div> </div>
</fieldset> </fieldset>
</form>
{% endif %}
</div> </div>
</div> </div>
<div class="pure-u-1-3"> <div class="pure-u-1-3">

View File

@ -1,8 +1,12 @@
from django.conf.urls import patterns, include, url from django.conf.urls import patterns, include, url
from django.core.urlresolvers import reverse_lazy
from pastebin.models import Geometry from pastebin.models import Geometry
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^login/$', 'django.contrib.auth.views.login', {'extra_context' : {'latest_geometries' : Geometry.get_latest()}, url(r'^login/$', 'django.contrib.auth.views.login', {'extra_context' : {'latest_geometries' : Geometry.get_latest()},
'template_name' : 'users/login.html'}, 'template_name' : 'users/login.html'},
name='login')) name='login'),
url(r'^logout/$', 'django.contrib.auth.views.logout',{'extra_context' : {'latest_geometries' : Geometry.get_latest()},
'next_page' : reverse_lazy('login')},
name='logout'),)