parent
cc5e2e7d78
commit
7468dbf9b2
|
@ -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.
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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
|
|
@ -1,3 +0,0 @@
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
# Create your models here.
|
|
|
@ -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 !
|
|
@ -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'),
|
||||||
|
|
|
@ -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')
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue