Upgrade django-registration to version 3.0.

This involves changing how registration templates are referenced
and how the activation email is sent on user's email address change.

Signed-off-by: Amber Elliot <amber.n.elliot@intel.com>
This commit is contained in:
Amber Elliot 2019-01-09 22:38:57 +13:00 committed by Paul Eggleton
parent d333657e9d
commit 0f3b3e42a6
19 changed files with 75 additions and 52 deletions

View File

@ -148,7 +148,7 @@ INSTALLED_APPS = (
# Uncomment the next line to enable admin documentation: # Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs', # 'django.contrib.admindocs',
'layerindex', 'layerindex',
'registration', 'django_registration',
'reversion', 'reversion',
'reversion_compare', 'reversion_compare',
'captcha', 'captcha',

View File

@ -6,7 +6,7 @@
from django import forms from django import forms
from captcha.fields import CaptchaField from captcha.fields import CaptchaField
from registration.forms import RegistrationForm from django_registration.forms import RegistrationForm
from django.contrib.auth.forms import PasswordResetForm from django.contrib.auth.forms import PasswordResetForm
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.auth.hashers import check_password from django.contrib.auth.hashers import check_password

View File

@ -10,7 +10,7 @@ from django.core.exceptions import PermissionDenied
from django.shortcuts import render from django.shortcuts import render
from django.contrib import messages from django.contrib import messages
from django.contrib.auth import logout from django.contrib.auth import logout
from registration.backends.model_activation.views import RegistrationView from django_registration.backends.activation.views import RegistrationView
from django.contrib.auth.views import PasswordResetView from django.contrib.auth.views import PasswordResetView
from layerindex.auth_forms import CaptchaRegistrationForm, CaptchaPasswordResetForm, DeleteAccountForm from layerindex.auth_forms import CaptchaRegistrationForm, CaptchaPasswordResetForm, DeleteAccountForm

View File

@ -8,7 +8,7 @@ from collections import OrderedDict
from layerindex.models import LayerItem, LayerBranch, LayerMaintainer, LayerNote, RecipeChangeset, RecipeChange, ClassicRecipe from layerindex.models import LayerItem, LayerBranch, LayerMaintainer, LayerNote, RecipeChangeset, RecipeChange, ClassicRecipe
from django import forms from django import forms
from django.core.validators import URLValidator, RegexValidator, EmailValidator from django.core.validators import URLValidator, RegexValidator, EmailValidator
from registration.validators import ReservedNameValidator, DEFAULT_RESERVED_NAMES, validate_confusables from django_registration.validators import ReservedNameValidator, DEFAULT_RESERVED_NAMES, validate_confusables
from django.forms.models import inlineformset_factory, modelformset_factory from django.forms.models import inlineformset_factory, modelformset_factory
from captcha.fields import CaptchaField from captcha.fields import CaptchaField
from django.contrib.auth.models import User from django.contrib.auth.models import User

View File

@ -4,45 +4,56 @@
# #
# Licensed under the MIT license, see COPYING.MIT for details # Licensed under the MIT license, see COPYING.MIT for details
import sys
import os import os
from pkg_resources import parse_version import sys
from itertools import islice
from django.shortcuts import get_object_or_404, get_list_or_404, render
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden, Http404
from django.core.urlresolvers import reverse, reverse_lazy, resolve
from django.core.exceptions import PermissionDenied
from django.template import RequestContext
from layerindex.models import Branch, LayerItem, LayerMaintainer, LayerBranch, LayerDependency, LayerNote, Update, LayerUpdate, Recipe, Machine, Distro, BBClass, IncFile, BBAppend, RecipeChange, RecipeChangeset, ClassicRecipe, StaticBuildDep, DynamicBuildDep
from datetime import datetime from datetime import datetime
from django.views.generic import TemplateView, DetailView, ListView from itertools import islice
from django.views.generic.edit import CreateView, DeleteView, UpdateView from pkg_resources import parse_version
from django.views.generic.base import RedirectView
import reversion
from django import forms
from django.contrib import messages
from django.contrib.auth import logout
from django.contrib.auth.decorators import login_required
from django.contrib.auth.hashers import make_password
from django.contrib.auth.models import Permission, User
from django.contrib.messages.views import SuccessMessageMixin from django.contrib.messages.views import SuccessMessageMixin
from layerindex.forms import EditLayerForm, LayerMaintainerFormSet, EditNoteForm, EditProfileForm, RecipeChangesetForm, AdvancedRecipeSearchForm, BulkChangeEditFormSet, ClassicRecipeForm, ClassicRecipeSearchForm, ComparisonRecipeSelectForm from django.contrib.sites.models import Site
from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import resolve, reverse, reverse_lazy
from django.db import transaction from django.db import transaction
from django.contrib.auth.models import User, Permission from django.db.models import Count, Q
from django.db.models import Q, Count, Sum
from django.db.models.functions import Lower from django.db.models.functions import Lower
from django.db.models.query import QuerySet from django.db.models.query import QuerySet
from django.db.models.signals import pre_save
from django.dispatch import receiver
from django.http import Http404, HttpResponse, HttpResponseRedirect
from django.shortcuts import get_list_or_404, get_object_or_404, render
from django.template.loader import get_template from django.template.loader import get_template
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required
from django.contrib.auth import logout
from django.contrib import messages
from django import forms
from django.utils.html import escape from django.utils.html import escape
from django.contrib.sites.models import Site from django.views.generic import DetailView, ListView, TemplateView
from django.views.generic.base import RedirectView
from django.views.generic.edit import (CreateView, DeleteView, FormView,
UpdateView)
from django_registration.backends.activation.views import RegistrationView
from reversion.models import Revision from reversion.models import Revision
from . import utils
from . import simplesearch
from . import tasks
import settings import settings
from django.dispatch import receiver from layerindex.forms import (AdvancedRecipeSearchForm, BulkChangeEditFormSet,
import reversion ClassicRecipeForm, ClassicRecipeSearchForm,
from django.db.models.signals import pre_save ComparisonRecipeSelectForm, EditLayerForm,
from registration.models import RegistrationProfile EditNoteForm, EditProfileForm,
LayerMaintainerFormSet, RecipeChangesetForm)
from layerindex.models import (BBAppend, BBClass, Branch, ClassicRecipe,
Distro, DynamicBuildDep, IncFile, LayerBranch,
LayerDependency, LayerItem, LayerMaintainer,
LayerNote, LayerUpdate, Machine, Patch, Recipe,
RecipeChange, RecipeChangeset, Source, StaticBuildDep,
Update)
from . import simplesearch, tasks, utils
def edit_layernote_view(request, template_name, slug, pk=None): def edit_layernote_view(request, template_name, slug, pk=None):
layeritem = get_object_or_404(LayerItem, name=slug) layeritem = get_object_or_404(LayerItem, name=slug)
@ -887,10 +898,9 @@ class EditProfileFormView(SuccessMessageMixin, UpdateView):
# Deactivate user and put through registration again # Deactivate user and put through registration again
user.is_active = False user.is_active = False
user.save() user.save()
site = Site.objects.get_current() view = RegistrationView()
RegistrationProfile.objects.filter(user=user).delete() view.request = self.request
registration_profile = RegistrationProfile.objects.create_profile(user) view.send_activation_email(user)
registration_profile.send_activation_email(site)
return HttpResponseRedirect(reverse('reregister')) return HttpResponseRedirect(reverse('reregister'))
return HttpResponseRedirect(self.get_success_url()) return HttpResponseRedirect(self.get_success_url())
@ -1611,4 +1621,3 @@ class ComparisonRecipeSelectDetailView(DetailView):
messages.error(request, 'Failed to save changes: %s' % form.errors) messages.error(request, 'Failed to save changes: %s' % form.errors)
return self.get(request, *args, **kwargs) return self.get(request, *args, **kwargs)

View File

@ -10,7 +10,7 @@ django-axes==4.4.2
django-cors-headers==2.4.0 django-cors-headers==2.4.0
django-ipware==2.1.0 django-ipware==2.1.0
django-ranged-response==0.2.0 django-ranged-response==0.2.0
django-registration==2.5.2 django-registration==3
django-reversion==2.0.13 django-reversion==2.0.13
django-reversion-compare==0.8.5 django-reversion-compare==0.8.5
django-simple-captcha==0.5.9 django-simple-captcha==0.5.9

View File

@ -148,7 +148,7 @@ INSTALLED_APPS = (
# Uncomment the next line to enable admin documentation: # Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs', # 'django.contrib.admindocs',
'layerindex', 'layerindex',
'registration', 'django_registration',
'reversion', 'reversion',
'reversion_compare', 'reversion_compare',
'captcha', 'captcha',

View File

@ -53,14 +53,14 @@
<b class="caret"></b> <b class="caret"></b>
</button> </button>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="{% url 'auth_logout' %}">{% trans "Log out" %}</a></li> <li><a href="{% url 'logout' %}">{% trans "Log out" %}</a></li>
<li><a href="{% url 'auth_password_change' %}">{% trans "Change password" %}</a></li> <li><a href="{% url 'password_change' %}">{% trans "Change password" %}</a></li>
<li><a href="{% url 'profile' %}?return_to={{ request.path }}">{% trans "Edit profile" %}</a></li> <li><a href="{% url 'profile' %}?return_to={{ request.path }}">{% trans "Edit profile" %}</a></li>
</ul> </ul>
</div> </div>
{% else %} {% else %}
<div class="pull-right nav-spacer"> <div class="pull-right nav-spacer">
<a class="btn btn-default navbar-btn" href="{% url 'auth_login' %}{% if login_return_url %}?next={{ login_return_url }}{% endif %}">{% trans "Log in" %}</a> <a class="btn btn-default navbar-btn" href="{% url 'login' %}{% if login_return_url %}?next={{ login_return_url }}{% endif %}">{% trans "Log in" %}</a>
</div> </div>
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@ -7,7 +7,7 @@
<p>{% trans "Account successfully activated" %}</p> <p>{% trans "Account successfully activated" %}</p>
<p><a href="{% url "auth_login" %}">{% trans "Log in" %}</a></p> <p><a href="{% url "login" %}">{% trans "Log in" %}</a></p>
{% else %} {% else %}

View File

@ -5,6 +5,6 @@
{% trans "Your account has been successfully activated." %} {% trans "Your account has been successfully activated." %}
<br/> <br/>
{% trans "You can now " %} <a href="{% url 'auth_login' %}">{% trans "log in" %}</a>. {% trans "You can now " %} <a href="{% url 'login' %}">{% trans "log in" %}</a>.
{% endblock %} {% endblock %}

View File

@ -7,7 +7,7 @@ link is valid for {{ expiration_days }} days.
{% endblocktrans %} {% endblocktrans %}
http://{{ site.domain }}{% url "registration_activate" activation_key %} http://{{ site.domain }}{% url "django_registration_activate" activation_key %}
{% blocktrans %} {% blocktrans %}
If you did not make this request, please ignore this message. If you did not make this request, please ignore this message.

View File

@ -0,0 +1,13 @@
{% extends "base.html" %}
{% load i18n %}
{% block content %}
{% blocktrans %}
Activation has failed.
<br/>
{% endblocktrans %}
{% endblock %}

View File

@ -13,8 +13,8 @@
{% csrf_token %} {% csrf_token %}
</form> </form>
<p>{% trans "Forgot password" %}? <a href="{% url "auth_password_reset" %}">{% trans "Reset it" %}</a>!</p> <p>{% trans "Forgot password" %}? <a href="{% url "password_reset" %}">{% trans "Reset it" %}</a>!</p>
<p>{% trans "Don't have an account" %}? <a href="{% url "registration_register" %}">{% trans "Create one now" %}</a>!</p> <p>{% trans "Don't have an account" %}? <a href="{% url "django_registration_register" %}">{% trans "Create one now" %}</a>!</p>
{% endblock %} {% endblock %}

View File

@ -5,6 +5,6 @@
<p>{% trans "Password reset successfully" %}</p> <p>{% trans "Password reset successfully" %}</p>
<p><a href="{% url "auth_login" %}">{% trans "Log in" %}</a></p> <p><a href="{% url "login" %}">{% trans "Log in" %}</a></p>
{% endblock %} {% endblock %}

View File

@ -4,7 +4,7 @@
If you did request to reset your password, please click on the following link to do so:{% endblocktrans %} If you did request to reset your password, please click on the following link to do so:{% endblocktrans %}
{% block reset_link %} {% block reset_link %}
{{ protocol }}://{{ domain }}{% url "auth_password_reset_confirm" uidb64=uid token=token %} {{ protocol }}://{{ domain }}{% url "password_reset_confirm" uidb64=uid token=token %}
{% endblock %} {% endblock %}
{% blocktrans %}If you did not make this request then please ignore this message.{% endblocktrans %} {% blocktrans %}If you did not make this request then please ignore this message.{% endblocktrans %}

View File

@ -21,17 +21,18 @@ urlpatterns = [
url(r'^accounts/password/reset/$', url(r'^accounts/password/reset/$',
CaptchaPasswordResetView.as_view( CaptchaPasswordResetView.as_view(
email_template_name='registration/password_reset_email.txt', email_template_name='registration/password_reset_email.txt',
success_url=reverse_lazy('auth_password_reset_done')), success_url=reverse_lazy('password_reset_done')),
name='auth_password_reset'), name='password_reset'),
url(r'^accounts/register/$', CaptchaRegistrationView.as_view(), url(r'^accounts/register/$', CaptchaRegistrationView.as_view(),
name='registration_register'), name='django_registration_register'),
url(r'^accounts/delete/$', delete_account_view, url(r'^accounts/delete/$', delete_account_view,
{'template_name': 'layerindex/deleteaccount.html'}, {'template_name': 'layerindex/deleteaccount.html'},
name='delete_account'), name='delete_account'),
url(r'^accounts/reregister/$', TemplateView.as_view( url(r'^accounts/reregister/$', TemplateView.as_view(
template_name='registration/reregister.html'), template_name='registration/reregister.html'),
name='reregister'), name='reregister'),
url(r'^accounts/', include('registration.backends.default.urls')), url(r'^accounts/', include('django_registration.backends.activation.urls')),
url(r'^accounts/', include('django.contrib.auth.urls')),
url(r'^captcha/', include('captcha.urls')), url(r'^captcha/', include('captcha.urls')),
] ]