Implement Change Password form

This commit is contained in:
2021-11-09 14:50:57 +01:00
parent 95b0ff4933
commit 323e857aa5
6 changed files with 58 additions and 2 deletions

View File

@@ -7,5 +7,6 @@ urlpatterns = [
path('stocks/', parts_views.StockView.as_view(), name='parts-stocks'),
path('logout/', parts_views.logout_view, name='logout'),
path('login/', parts_views.login_view, name='login'),
path('changepw/', parts_views.ChangePasswordView.as_view(), name='parts-change-pw'),
path('stocks/<slug:uuid>', parts_views.StockViewDetail.as_view(), name='parts-stocks-detail'),
]

View File

@@ -5,6 +5,8 @@ from django.contrib.auth.models import User
from django.http import HttpResponse
from .navbar import NavBar
from django.contrib.auth.forms import AuthenticationForm as AuthForm
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth import update_session_auth_hash
from django.views import View
import django.forms as forms
from django.views.generic import TemplateView, DetailView
@@ -53,6 +55,38 @@ class BaseTemplateMixin(object):
return self.get(request)
class ChangePasswordView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
template_name = 'parts/change-pw.html'
navbar_selected = 'Main'
base_title = 'Change Password'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['form'] = PasswordChangeForm(self.request.user)
return context
def post(self, request, *args, **kwargs):
if 'submit-change-pw' not in request.POST:
return super().post(request, *args, **kwargs)
form = PasswordChangeForm(request.user, data=request.POST)
if form.is_valid():
user = form.save()
update_session_auth_hash(request, user)
return redirect('parts-main')
else:
pass
context = self.get_context_data(**kwargs)
if form.errors:
context['form'] = form
return self.render_to_response(context)
class MainView(BaseTemplateMixin, TemplateView):
template_name = 'parts/main.html'
navbar_selected = 'Main'