Implement Change Password form
This commit is contained in:
@@ -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'),
|
||||
]
|
||||
|
@@ -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'
|
||||
|
Reference in New Issue
Block a user