Regsitration works

Confimation email works
This commit is contained in:
sebastian 2013-10-20 18:14:22 +02:00
parent cc5e2e7d78
commit 7468dbf9b2
7 changed files with 95 additions and 5 deletions

View File

@ -139,6 +139,9 @@ SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
LOGIN_REDIRECT_URL = reverse_lazy('geometry_create') LOGIN_REDIRECT_URL = reverse_lazy('geometry_create')
EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'
EMAIL_FILE_PATH = '/tmp/django'
# A sample logging configuration. The only tangible logging # A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to # performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False. # the site admins on every HTTP 500 error when DEBUG=False.

View File

@ -5,10 +5,12 @@ import re
from hashlib import md5 from hashlib import md5
from datetime import datetime, timedelta from datetime import datetime, timedelta
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
from django.db import models from django.db import models
vertex_pattern = re.compile(r'vertex\s+([0-9.e+-]+)\s+([0-9.e+-]+)\s+([0-9.e+-]+)') vertex_pattern = re.compile(r'vertex\s+([0-9.e+-]+)\s+([0-9.e+-]+)\s+([0-9.e+-]+)')
def safe_upload_path(base_dir): def safe_upload_path(base_dir):

38
users/forms.py Normal file
View File

@ -0,0 +1,38 @@
from django import forms
from django.forms import ModelForm
from django.contrib.auth.models import User
class UserCreateForm(ModelForm):
password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)
class Meta:
model = User
fields = ['username', 'email']
def clean_password2(self):
password1 = self.cleaned_data.get("password1")
password2 = self.cleaned_data.get("password2")
if password1 and password2 and password1 != password2:
raise forms.ValidationError("Passwords don't match")
return password1
def clean_email(self):
email = self.cleaned_data.get("email")
if User.objects.filter(email = email):
raise forms.ValidationError("Email already in use.")
return email
def save(self, commit=True):
user = super(UserCreateForm, self).save(commit=False)
user.set_password(self.cleaned_data["password1"])
user.is_active = False
if commit:
user.save()
return user

View File

@ -1,3 +0,0 @@
from django.db import models
# Create your models here.

View File

@ -0,0 +1,7 @@
Hello {{user.username}},
and thank you for registering an account at {{site_name}}.
To validate your email address and complete the registration you need to visit this link:
{{validation_link}}
Have fun !

View File

@ -3,7 +3,10 @@ from django.core.urlresolvers import reverse_lazy
from pastebin.models import Geometry from pastebin.models import Geometry
from views import UserCreate
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^signup/$', UserCreate.as_view(), name='user_signup'),
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'),

View File

@ -1 +1,41 @@
# Create your views here. from django.views.generic.edit import CreateView
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.contrib.sites.models import get_current_site
from django.contrib.auth.tokens import default_token_generator
from django.template import loader
from django.utils.http import int_to_base36
from pastebin.views import LastesGeometriesMixin
from forms import UserCreateForm
class UserCreate(CreateView, LastesGeometriesMixin):
model = User
form_class = UserCreateForm
template_name = 'pastebin/geometry_create.html'
email_template_name = 'users/validate_email.txt'
def form_valid(self, form):
res = super(UserCreate, self).form_valid(form)
site_name = get_current_site(self.request).name
uid = int_to_base36(self.object.pk)
token = default_token_generator.make_token(self.object)
context = {
'email': self.object.email,
'site_name': site_name,
'validation_link': "%s - %s" % (uid, token),
'user': self.object
}
subject = "Validate your registration at %s" % site_name
email = loader.render_to_string(self.email_template_name, context)
self.object.email_user(subject,email)
return res
def get_success_url(self):
return reverse('login')