use contrib.auth class based views (#49189)

This commit is contained in:
Emmanuel Cazenave 2020-11-26 14:05:33 +01:00
parent d18989835b
commit bb5b695f75
3 changed files with 21 additions and 13 deletions

View File

@ -1,5 +1,6 @@
from django.conf.urls import url
from django.contrib.auth import views as auth_views
from django.urls import reverse_lazy
from docbow_project.docbow import views
from docbow_project.docbow import forms
@ -12,25 +13,25 @@ urlpatterns = [
{'template_name': 'registration/login.html'},
name='auth_login'),
url(r'^logout/$',
auth_views.logout,
{'template_name': 'registration/logout.html'},
auth_views.LogoutView.as_view(template_name='registration/logout.html'),
name='auth_logout'),
url(r'^password/change/$',
views.password_change,
name='auth_password_change'),
url(r'^password/change/done/$',
auth_views.password_change_done,
auth_views.PasswordChangeDoneView.as_view(),
name='auth_password_change_done'),
url(r'^password/reset/$',
auth_views.password_reset,
name='auth_password_reset',
kwargs={'post_reset_redirect': '/accounts/password/reset/done/',
'password_reset_form': forms.PasswordResetFormWithLogging}),
auth_views.PasswordResetView.as_view(
success_url=reverse_lazy('auth_password_reset_done'),
form_class=forms.PasswordResetFormWithLogging
),
name='auth_password_reset'),
url(r'^password/reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$',
auth_views.password_reset_confirm,
auth_views.PasswordResetConfirmView.as_view(),
name='auth_password_reset_confirm'),
url(r'^password/reset/complete/$',
auth_views.password_reset_complete,
auth_views.PasswordResetCompleteView.as_view(),
name='password_reset_complete'),
url(r'^password/reset/done/$',
views.password_reset_done,

View File

@ -17,10 +17,10 @@ def login(request, *args, **kwargs):
return HttpResponseRedirect(resolve_url('mellon_login'))
return HttpResponseRedirect(resolve_url('mellon_login') + '?next='
+ urllib.quote(request.GET.get('next')))
return auth_views.login(request, *args, **kwargs)
return auth_views.LoginView.as_view(*args, **kwargs)(request)
def logout(request, *args, **kwargs):
if any(get_idps()):
return HttpResponseRedirect(resolve_url('mellon_logout'))
return auth_views.logout(request, *args, **kwargs)
return auth_views.LogoutView.as_view(*args, **kwargs)(request)

View File

@ -540,7 +540,10 @@ def test_password_reset_confirm_get(users_fixture, client):
token = default_token_generator.make_token(user)
response = client.get('/accounts/password/reset/confirm/%s/%s/' % (uid, token))
assert response.status_code == 200
assert response.status_code == 302
redirect_url = '/accounts/password/reset/confirm/%s/set-password/' % uid
assert response['Location'].endswith(redirect_url)
response = client.get(redirect_url)
assert 'new_password' in force_text(response.content)
@ -550,9 +553,13 @@ def test_password_reset_confirm_post(users_fixture, client):
user = users_fixture[0]
uid = force_text(urlsafe_base64_encode(force_bytes(user.id)))
token = default_token_generator.make_token(user)
response = client.get('/accounts/password/reset/confirm/%s/%s/' % (uid, token))
assert response.status_code == 302
redirect_url = '/accounts/password/reset/confirm/%s/set-password/' % uid
assert response['Location'].endswith(redirect_url)
response = client.post(
'/accounts/password/reset/confirm/%s/%s/' % (uid, token),
redirect_url,
{'new_password1': 'newpass', 'new_password2': 'newpass'})
assert response.status_code == 302
assert response['Location'].endswith('/accounts/password/reset/complete/')