]> git.0d.be Git - panikdb.git/blobdiff - panikdb/aa/views.py
add possibility to user admin to change password of users
[panikdb.git] / panikdb / aa / views.py
index 3272e26dca253d5fba7e222eca84c1be9f9ca246..4624ec8e816c798918cb8404d92fe3f5f4e63d76 100644 (file)
@@ -2,6 +2,7 @@ import vobject
 from django.conf import settings
 from django.contrib.admin.views.decorators import staff_member_required
 from django.contrib.auth.decorators import login_required
+from django.contrib.auth.forms import AdminPasswordChangeForm
 from django.contrib.auth.models import Group, Permission
 from django.core.exceptions import PermissionDenied
 from django.db.models import Q, Sum
@@ -187,6 +188,37 @@ class MemberEditView(UpdateView):
 member_edit = login_required(MemberEditView.as_view())
 
 
+class MemberPasswordView(FormView):
+    form_class = AdminPasswordChangeForm
+    template_name = 'aa/member_password.html'
+
+    def get_object(self):
+        if not self.request.user.has_perm('aa.add_user'):
+            raise PermissionDenied()
+        return User.objects.get(id=self.kwargs['pk'])
+
+    def get_form_kwargs(self):
+        kwargs = super().get_form_kwargs()
+        kwargs['user'] = self.get_object()
+        return kwargs
+
+    def get_context_data(self, **kwargs):
+        context = super().get_context_data(**kwargs)
+        context['user_pk'] = self.kwargs['pk']
+        return context
+
+    def form_valid(self, form):
+        response = super().form_valid(form)
+        form.save()
+        return response
+
+    def get_success_url(self):
+        return reverse_lazy('member-view', kwargs={'pk': self.kwargs['pk']})
+
+
+member_password = login_required(MemberPasswordView.as_view())
+
+
 class MemberCreateView(CreateView):
     model = User
     form_class = MemberCreateForm