Refactor MemberEditView to include permissions, success messages, and HTMX support. Adjust member filter template layout to use flex-row.

This commit is contained in:
2026-03-31 16:49:03 +02:00
parent 06e51f2278
commit 646479c5be
2 changed files with 17 additions and 2 deletions

View File

@@ -56,7 +56,22 @@ class MemberAddView(HTMXViewMixin, PermissionRequiredMixin, SuccessMessageMixin,
return self.success_message % dict(cleaned_data, name=self.object.user.get_full_name()) return self.success_message % dict(cleaned_data, name=self.object.user.get_full_name())
class MemberEditView: ... class MemberEditView(HTMXViewMixin, PermissionRequiredMixin, SuccessMessageMixin, UpdateView):
model = Member
form_class = MemberForm
permission_required = "members.change_member"
permission_denied_message = _("You do not have permission to view this page.")
success_message = _("Member <strong>%(name)s</strong> has been updated successfully.")
success_url = reverse_lazy("backend:members:list")
partial_name = "members/member_form.html#content"
menu_highlight = "members"
def handle_no_permission(self) -> HttpResponseRedirect:
messages.error(self.request, self.get_permission_denied_message())
return HttpResponseRedirect(reverse_lazy("backend:index"))
def get_success_message(self, cleaned_data):
return self.success_message % dict(cleaned_data, name=self.object.user.get_full_name())
class MemberDeleteView(HTMXViewMixin, PermissionRequiredMixin, SuccessMessageMixin, DeleteView): class MemberDeleteView(HTMXViewMixin, PermissionRequiredMixin, SuccessMessageMixin, DeleteView):

View File

@@ -113,7 +113,7 @@
<td>{{ member.birthday|date:"d M Y"|default:"-" }}</td> <td>{{ member.birthday|date:"d M Y"|default:"-" }}</td>
<td>{{ member.license|default:"-" }}</td> <td>{{ member.license|default:"-" }}</td>
<td> <td>
<div class="flex flex-col gap-1"> <div class="flex flex-row gap-1">
{% if member.phone_number %} {% if member.phone_number %}
<a href="{{ member.phone_number.as_rfc3966 }}" class="btn btn-info btn-xs"> <a href="{{ member.phone_number.as_rfc3966 }}" class="btn btn-info btn-xs">
<i class="fa-solid fa-phone"></i>{{ member.phone_number }} <i class="fa-solid fa-phone"></i>{{ member.phone_number }}