mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-07-20 16:09:12 +02:00
Manage page (no js yet)
This commit is contained in:
@ -12,13 +12,12 @@ from django_tables2 import SingleTableView
|
||||
from permission.backends import PermissionBackend
|
||||
from permission.views import ProtectQuerysetMixin, ProtectedCreateView
|
||||
from django.urls import reverse_lazy
|
||||
|
||||
from .models import Family, Challenge, FamilyMembership, User
|
||||
from .tables import FamilyTable, ChallengeTable, FamilyMembershipTable
|
||||
from .forms import ChallengeUpdateForm, FamilyMembershipForm, FamilyUpdateForm
|
||||
from member.forms import ImageForm
|
||||
from member.views import PictureUpdateView
|
||||
|
||||
from .models import Family, Challenge, FamilyMembership, User, Achievement
|
||||
from .tables import FamilyTable, ChallengeTable, FamilyMembershipTable, AchievementTable
|
||||
from .forms import ChallengeForm, FamilyMembershipForm, FamilyForm
|
||||
|
||||
|
||||
class FamilyCreateView(ProtectQuerysetMixin, ProtectedCreateView):
|
||||
"""
|
||||
@ -26,6 +25,7 @@ class FamilyCreateView(ProtectQuerysetMixin, ProtectedCreateView):
|
||||
"""
|
||||
model = Family
|
||||
extra_context = {"title": _('Create family')}
|
||||
form_class = FamilyForm
|
||||
|
||||
def get_sample_object(self):
|
||||
return Family(
|
||||
@ -35,6 +35,10 @@ class FamilyCreateView(ProtectQuerysetMixin, ProtectedCreateView):
|
||||
rank=0,
|
||||
)
|
||||
|
||||
def get_success_url(self):
|
||||
self.object.refresh_from_db()
|
||||
return reverse_lazy("family:manage")
|
||||
|
||||
|
||||
class FamilyListView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView):
|
||||
"""
|
||||
@ -92,8 +96,7 @@ class FamilyUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
|
||||
"""
|
||||
model = Family
|
||||
context_object_name = "family"
|
||||
form_class = FamilyUpdateForm
|
||||
template_name = 'family/family_update.html'
|
||||
form_class = FamilyForm
|
||||
extra_context = {"title": _('Update family')}
|
||||
|
||||
def get_success_url(self):
|
||||
@ -152,11 +155,10 @@ class FamilyAddMemberView(ProtectQuerysetMixin, ProtectedCreateView):
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
form = context['form']
|
||||
|
||||
family = Family.objects.filter(PermissionBackend.filter_queryset(self.request, Family, "view"))\
|
||||
.get(pk=self.kwargs['family_pk'])
|
||||
|
||||
|
||||
context['family'] = family
|
||||
|
||||
return context
|
||||
@ -167,7 +169,7 @@ class FamilyAddMemberView(ProtectQuerysetMixin, ProtectedCreateView):
|
||||
Create family membership, check that everythinf is good
|
||||
"""
|
||||
family = Family.objects.filter(PermissionBackend.filter_queryset(self.request, Family, "view")) \
|
||||
.get(pk=self.kwargs["family_pk"])
|
||||
.get(pk=self.kwargs["family_pk"])
|
||||
|
||||
form.instance.family = family
|
||||
|
||||
@ -183,6 +185,7 @@ class ChallengeCreateView(ProtectQuerysetMixin, ProtectedCreateView):
|
||||
"""
|
||||
model = Challenge
|
||||
extra_context = {"title": _('Create challenge')}
|
||||
form_class = ChallengeForm
|
||||
|
||||
def get_sample_object(self):
|
||||
return Challenge(
|
||||
@ -234,9 +237,43 @@ class ChallengeUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
|
||||
model = Challenge
|
||||
context_object_name = "challenge"
|
||||
extra_context = {"title": _('Update challenge')}
|
||||
template_name = 'family/challenge_update.html'
|
||||
form_class = ChallengeUpdateForm
|
||||
form_class = ChallengeForm
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
self.object.refresh_from_db()
|
||||
return reverse_lazy('family:challenge_detail', kwargs={'pk': self.object.pk})
|
||||
|
||||
|
||||
class FamilyManageView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView):
|
||||
"""
|
||||
Manage families and challenges
|
||||
"""
|
||||
model = Achievement
|
||||
template_name = 'family/manage.html'
|
||||
table_class = AchievementTable
|
||||
extra_context = {'title': _('Manage families and challenges')}
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
# Check that the user is authenticated
|
||||
if not request.user.is_authenticated:
|
||||
return self.handle_no_permission()
|
||||
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_queryset(self, **kwargs):
|
||||
# retrieves only Transaction that user has the right to see.
|
||||
return Achievement.objects.filter(
|
||||
PermissionBackend.filter_queryset(self.request, Achievement, "view")
|
||||
).order_by("-obtained_at").all()[:20]
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['all_challenges'] = Challenge.objects.filter(
|
||||
PermissionBackend.filter_queryset(self.request, Challenge, "view")
|
||||
).order_by('name')
|
||||
|
||||
context["can_add_family"] = PermissionBackend.check_perm(self.request, "family.add_family")
|
||||
context["can_add_challenge"] = PermissionBackend.check_perm(self.request, "family.add_challenge")
|
||||
|
||||
return context
|
||||
|
Reference in New Issue
Block a user