diff --git a/dncore/views.py b/dncore/views.py index 21a45aa..f9a23f4 100644 --- a/dncore/views.py +++ b/dncore/views.py @@ -1,5 +1,7 @@ from django.shortcuts import render from django.contrib.auth.decorators import login_required +from django.contrib.auth.forms import PasswordChangeForm +from django.contrib.auth import login as auth_login from django.db.models import Q from django.views.generic import CreateView from django.urls import reverse_lazy, reverse @@ -16,17 +18,32 @@ from .forms import CustomUserCreationForm @login_required def profile(request): - return render(request, "profile/profile.html", {}) + pwForm = None + + if request.method == "POST": + if request.POST.get("submit", None) == "pwchange": + pwForm = PasswordChangeForm(user=request.user, data=request.POST) + if pwForm.is_valid(): + pwForm.save() + auth_login(request, pwForm.user) + messages.success(request, "Password changed") + + return HttpResponseRedirect(reverse("profile")) + + if not pwForm: + pwForm = PasswordChangeForm(user=request.user) + + return render(request, "registration/profile.html", {'pwForm': pwForm}) @login_required def dashboard(request): mnts = request.user.maintainer_set.all() - ownMnts = request.user.maintainer_set.filter(rir=False, lir=False).all() - asns = ASNumber.objects.filter(Q(mnt_by__in=ownMnts) | Q(mnt_lower__in=ownMnts)) - inetnums = InetNum.objects.filter(Q(mnt_by__in=ownMnts) | Q(mnt_lower__in=ownMnts)) - domains = Domain.objects.filter(mnt_by__in=mnts) - rrequests = Request.objects.filter((Q(provider__in=mnts) | Q(applicant__in=mnts)) & Q(status=Request.STATE_OPEN)) + ownMnts = request.user.maintainer_set.filter(rir=False, lir=False).all().distinct() + asns = ASNumber.objects.filter(Q(mnt_by__in=ownMnts) | Q(mnt_lower__in=ownMnts)).distinct() + inetnums = InetNum.objects.filter(Q(mnt_by__in=ownMnts) | Q(mnt_lower__in=ownMnts)).distinct() + domains = Domain.objects.filter(mnt_by__in=mnts).distinct() + rrequests = Request.objects.filter((Q(provider__in=mnts) | Q(applicant__in=mnts)) & Q(status=Request.STATE_OPEN)).distinct() return render(request, "dncore/dashboard.html", {"asns": asns, "inetnums": inetnums, "domains": domains, 'rrequests': rrequests}) diff --git a/templates/base.html b/templates/base.html index fe58ebc..a7f6b2c 100644 --- a/templates/base.html +++ b/templates/base.html @@ -45,11 +45,11 @@
diff --git a/templates/registration/profile.html b/templates/registration/profile.html index e6866c8..c535e8b 100644 --- a/templates/registration/profile.html +++ b/templates/registration/profile.html @@ -9,8 +9,9 @@{{ user }}
+