Better management of roles in ClubMemberForm

This commit is contained in:
imperosol
2025-09-13 18:37:53 +02:00
parent 3e8f3b9275
commit 66cf2bd957
5 changed files with 70 additions and 30 deletions

View File

@@ -72,7 +72,7 @@ from core.auth.mixins import (
)
from core.models import PageRev
from core.views import DetailFormView, PageEditViewBase, UseFragmentsMixin
from core.views.mixins import FragmentMixin, TabedViewMixin
from core.views.mixins import FragmentMixin, FragmentRenderer, TabedViewMixin
from counter.models import Selling
@@ -307,17 +307,26 @@ class ClubMembersView(
form_class = ClubOldMemberForm
template_name = "club/club_members.jinja"
current_tab = "members"
fragments = {"add_member_fragment": ClubAddMembersFragment}
permission_required = "club.view_club"
def get_fragments(self) -> dict[str, type[FragmentMixin] | FragmentRenderer]:
membership = self.object.get_membership_for(self.request.user)
if (
membership
and membership.role <= settings.SITH_MAXIMUM_FREE_ROLE
and not self.request.user.has_perm("club.add_membership")
):
return {}
return {"add_member_fragment": ClubAddMembersFragment}
def get_fragment_data(self) -> dict[str, Any]:
return {"add_member_fragment": {"club": self.object}}
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs["user"] = self.request.user
kwargs["club"] = self.object
return kwargs
return super().get_form_kwargs() | {
"user": self.request.user,
"club": self.object,
}
def get_context_data(self, **kwargs):
kwargs = super().get_context_data(**kwargs)