Extend members app: add filtering with django-filter, MemberFilter class, and initial view setup. Update URLs, templates, and dependencies for integration.

This commit is contained in:
2026-01-04 23:24:53 +01:00
parent e67ef526f4
commit 40ddab4627
14 changed files with 94 additions and 7 deletions

View File

@@ -1,3 +0,0 @@
from django.contrib import admin
# Register your models here.

12
backend/members/urls.py Normal file
View File

@@ -0,0 +1,12 @@
from django.urls import include, path
from .views import MemberAddView, MemberDeleteView, MemberEditView, MemberListView, MemberLoadView
app_name = "members"
urlpatterns = [
path("", MemberListView.as_view(), name="list"),
# path("add/", MemberAddView.as_view(), name="add"),
# path("<int:pk>/edit/", MemberEditView.as_view(), name="edit"),
# path("<int:pk>/delete/", MemberDeleteView.as_view(), name="delete"),
# path("load/", MemberLoadView.as_view(), name="load"),
]

34
backend/members/views.py Normal file
View File

@@ -0,0 +1,34 @@
from typing import Any
from django.contrib import messages
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
from django_filters.views import FilterView
from rules.contrib.views import PermissionRequiredMixin
from members.filters import MemberFilter
from members.models import Member
class MemberListView(PermissionRequiredMixin, FilterView):
filterset_class = MemberFilter
paginate_by = 50
permission_denied_message = _("You do not have permission to view this page.")
permission_required = "members.view_member"
def handle_no_permission(self) -> HttpResponseRedirect:
messages.error(self.request, self.get_permission_denied_message())
return HttpResponseRedirect(reverse_lazy("backend:index"))
class MemberAddView: ...
class MemberEditView: ...
class MemberDeleteView: ...
class MemberLoadView: ...

View File

@@ -1,3 +0,0 @@
from django.test import TestCase
# Create your tests here.

9
backend/urls.py Normal file
View File

@@ -0,0 +1,9 @@
from django.urls import include, path
from .views import index
app_name = "backend"
urlpatterns = [
path("", index, name="index"),
path("members/", include("backend.members.urls")),
]

View File

@@ -1,3 +1,6 @@
from django.shortcuts import render
# Create your views here.
def index(request):
return render(request, "backend/index.html")