Completed signup process
This commit is contained in:
parent
7468dbf9b2
commit
457d95ec64
|
@ -26,7 +26,7 @@
|
|||
<li><a href="{% url 'logout' %}">Logout</a></li>
|
||||
{% else %}
|
||||
<li><a href="{% url 'login' %}">Login</a></li>
|
||||
<li><a href="#">Sign up</a></li>
|
||||
<li><a href="{% url 'signup' %}">Sign up</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
|
||||
{% block title %} New paste {% endblock %}
|
||||
|
||||
|
||||
{% block headeraddons %}
|
||||
<script src="{{STATIC_URL}}js/jquery-1.10.2.min.js"></script>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<div id="content">
|
||||
<div id="prompt">
|
||||
<!-- if IE without GCF, prompt goes here -->
|
||||
</div>
|
||||
|
||||
<h1>Confirm your registration</h1>
|
||||
<div class="pure-g-r">
|
||||
<div class="pure-u-2-3">
|
||||
<div class="textcontainer">
|
||||
Oh hey <b>{{confirm_user.username}}</b>,<br/>
|
||||
thank you for confirming your mail address.</br>
|
||||
You should now be able to <a href="{% url 'login' %}">login</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pure-u-1-3">
|
||||
<div class="textcontainer">
|
||||
<h2><i class="icon-upload-alt"></i> Latest uploads</h2>
|
||||
<ul class="uploads-list">
|
||||
{% for geometry in latest_geometries %}
|
||||
<li>
|
||||
<i class="icon-file"></i>
|
||||
<a href="{{geometry.get_absolute_url}}">{{geometry.name}}</a>
|
||||
- {{geometry.date}}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -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 !
|
|
@ -0,0 +1,47 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
|
||||
{% block title %} New paste {% endblock %}
|
||||
|
||||
|
||||
{% block headeraddons %}
|
||||
<script src="{{STATIC_URL}}js/jquery-1.10.2.min.js"></script>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<div id="content">
|
||||
<div id="prompt">
|
||||
<!-- if IE without GCF, prompt goes here -->
|
||||
</div>
|
||||
|
||||
<h1>Confirm your registration</h1>
|
||||
<div class="pure-g-r">
|
||||
<div class="pure-u-2-3">
|
||||
<div class="textcontainer">
|
||||
Oh hey <b>{{confirm_user.username}}</b>,<br/>
|
||||
to complete your registration please klick on the link in the email
|
||||
that has just been send to you.
|
||||
<br/>
|
||||
<br/>
|
||||
If you did not receive an email with a validation link,
|
||||
please click <a href="{% url 'send_confirmation' user_id=confirm_user.pk %}">here</a> to send another one.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pure-u-1-3">
|
||||
<div class="textcontainer">
|
||||
<h2><i class="icon-upload-alt"></i> Latest uploads</h2>
|
||||
<ul class="uploads-list">
|
||||
{% for geometry in latest_geometries %}
|
||||
<li>
|
||||
<i class="icon-file"></i>
|
||||
<a href="{{geometry.get_absolute_url}}">{{geometry.name}}</a>
|
||||
- {{geometry.date}}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -0,0 +1,60 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
|
||||
{% block title %} New paste {% endblock %}
|
||||
|
||||
|
||||
{% block headeraddons %}
|
||||
<script src="{{STATIC_URL}}js/jquery-1.10.2.min.js"></script>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<div id="content">
|
||||
<div id="prompt">
|
||||
<!-- if IE without GCF, prompt goes here -->
|
||||
</div>
|
||||
|
||||
<h1>Sign up</h1>
|
||||
<div class="pure-g-r">
|
||||
<div class="pure-u-2-3">
|
||||
<div class="textcontainer">
|
||||
{% if user.is_authenticated %}
|
||||
You are alerady logged in, why in the world would you want to sign up ?
|
||||
{% else %}
|
||||
<form method="post" class="pure-form pure-form-aligned">
|
||||
{% csrf_token %}
|
||||
<fieldset>
|
||||
{% for field in form %}
|
||||
<div class="pure-control-group">
|
||||
{{ field.label_tag }}
|
||||
{{ field }}
|
||||
{{ field.errors }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="pure-control-group">
|
||||
<label for="submitbutton" >... and </label>
|
||||
<input class="pure-button button-green" id="submitbutton" type="submit" value="sign up" />
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="pure-u-1-3">
|
||||
<div class="textcontainer">
|
||||
<h2><i class="icon-upload-alt"></i> Latest uploads</h2>
|
||||
<ul class="uploads-list">
|
||||
{% for geometry in latest_geometries %}
|
||||
<li>
|
||||
<i class="icon-file"></i>
|
||||
<a href="{{geometry.get_absolute_url}}">{{geometry.name}}</a>
|
||||
- {{geometry.date}}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -3,10 +3,13 @@ from django.core.urlresolvers import reverse_lazy
|
|||
|
||||
from pastebin.models import Geometry
|
||||
|
||||
from views import UserCreate
|
||||
from views import UserCreate, SendConfirmationView, CheckConfirmationView
|
||||
|
||||
urlpatterns = patterns('',
|
||||
url(r'^signup/$', UserCreate.as_view(), name='user_signup'),
|
||||
url(r'^signup/$', UserCreate.as_view(), name='signup'),
|
||||
url(r'^confirm/(?P<user_id>\d+)/$', SendConfirmationView.as_view(), name='send_confirmation'),
|
||||
url(r'^confirm/(?P<user_id>\d+)/(?P<token>.+)/$', CheckConfirmationView.as_view(), name='check_confirmation'),
|
||||
|
||||
url(r'^login/$', 'django.contrib.auth.views.login', {'extra_context' : {'latest_geometries' : Geometry.get_latest()},
|
||||
'template_name' : 'users/login.html'},
|
||||
name='login'),
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
from django.views.generic.edit import CreateView
|
||||
from django.views.generic.base import TemplateView
|
||||
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 django.http import Http404
|
||||
|
||||
from pastebin.views import LastesGeometriesMixin
|
||||
|
||||
|
@ -13,29 +15,75 @@ 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'
|
||||
template_name = 'users/signup.html'
|
||||
|
||||
def form_valid(self, form):
|
||||
res = super(UserCreate, self).form_valid(form)
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('send_confirmation', kwargs={'user_id' : self.object.pk})
|
||||
|
||||
|
||||
|
||||
class SendConfirmationView(TemplateView, LastesGeometriesMixin):
|
||||
template_name = 'users/send_confirmation.html'
|
||||
email_template_name = 'users/confirmation_email.txt'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(SendConfirmationView, self).get_context_data(**kwargs)
|
||||
context['confirm_user'] = User.objects.get(id=kwargs['user_id'])
|
||||
return context
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
try:
|
||||
user = User.objects.get(id=kwargs['user_id'])
|
||||
except User.DoesNotExist:
|
||||
raise Http404
|
||||
|
||||
if user.is_active:
|
||||
raise Http404
|
||||
|
||||
site_name = get_current_site(self.request).name
|
||||
uid = int_to_base36(self.object.pk)
|
||||
token = default_token_generator.make_token(self.object)
|
||||
uid = int_to_base36(user.pk)
|
||||
token = default_token_generator.make_token(user)
|
||||
link = request.build_absolute_uri(reverse('check_confirmation', kwargs={'user_id' : user.pk, 'token' : token}))
|
||||
|
||||
context = {
|
||||
'email': self.object.email,
|
||||
'email': user.email,
|
||||
'site_name': site_name,
|
||||
'validation_link': "%s - %s" % (uid, token),
|
||||
'user': self.object
|
||||
'validation_link': link,
|
||||
'user': user
|
||||
}
|
||||
|
||||
subject = "Validate your registration at %s" % site_name
|
||||
email = loader.render_to_string(self.email_template_name, context)
|
||||
self.object.email_user(subject,email)
|
||||
user.email_user(subject,email)
|
||||
|
||||
return res
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('login')
|
||||
return super(SendConfirmationView,self).get(self, request, *args, **kwargs)
|
||||
|
||||
|
||||
|
||||
class CheckConfirmationView(TemplateView, LastesGeometriesMixin):
|
||||
template_name = 'users/check_confirmation.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(CheckConfirmationView, self).get_context_data(**kwargs)
|
||||
context['confirm_user'] = User.objects.get(id=kwargs['user_id'])
|
||||
return context
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
try:
|
||||
user = User.objects.get(id=kwargs['user_id'])
|
||||
except User.DoesNotExist:
|
||||
raise Http404
|
||||
|
||||
if user.is_active:
|
||||
raise Http404
|
||||
|
||||
if not default_token_generator.check_token(user,kwargs['token']):
|
||||
raise Http404
|
||||
|
||||
user.is_active = True
|
||||
user.save()
|
||||
|
||||
print "Acitvating %s" % user.username
|
||||
|
||||
return super(CheckConfirmationView,self).get(self, request, *args, **kwargs)
|
Loading…
Reference in New Issue