mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-07-25 02:00:35 +02:00
Tests
This commit is contained in:
@ -8,14 +8,14 @@ from django.shortcuts import redirect
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.db import transaction
|
||||
from django.views.generic import DetailView, UpdateView, ListView
|
||||
from django.views.generic.edit import DeleteView
|
||||
from django.views.generic.edit import DeleteView, FormMixin
|
||||
from django.views.generic.base import TemplateView
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_tables2 import SingleTableView, MultiTableMixin
|
||||
from permission.backends import PermissionBackend
|
||||
from permission.views import ProtectQuerysetMixin, ProtectedCreateView
|
||||
from django.urls import reverse_lazy
|
||||
from member.views import PictureUpdateView
|
||||
from member.forms import ImageForm
|
||||
|
||||
from .models import Family, Challenge, FamilyMembership, User, Achievement
|
||||
from .tables import FamilyTable, ChallengeTable, FamilyMembershipTable, AchievementTable, FamilyAchievementTable
|
||||
@ -112,17 +112,28 @@ class FamilyUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
|
||||
return reverse_lazy('family:family_detail', kwargs={'pk': self.object.pk})
|
||||
|
||||
|
||||
class FamilyPictureUpdateView(PictureUpdateView):
|
||||
class FamilyPictureUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin, DetailView):
|
||||
"""
|
||||
Update profile picture of the family
|
||||
"""
|
||||
model = Family
|
||||
extra_context = {"title": _("Update family picture")}
|
||||
template_name = 'family/picture_update.html'
|
||||
form_class = ImageForm
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['form'] = self.form_class(self.request.POST, self.request.FILES)
|
||||
return context
|
||||
|
||||
def get_success_url(self):
|
||||
"""Redirect to family page after upload"""
|
||||
return reverse_lazy('family:family_detail', kwargs={'pk': self.object.id})
|
||||
return reverse_lazy('family:family_detail', kwargs={'pk': self.object.pk})
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
form = self.get_form()
|
||||
self.object = self.get_object()
|
||||
return self.form_valid(form) if form.is_valid() else self.form_invalid(form)
|
||||
|
||||
@transaction.atomic
|
||||
def form_valid(self, form):
|
||||
@ -141,6 +152,11 @@ class FamilyPictureUpdateView(PictureUpdateView):
|
||||
else:
|
||||
image.name = "{}_pic.png".format(self.object.pk)
|
||||
|
||||
# Save
|
||||
self.object.display_image = image
|
||||
self.object.save()
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
class FamilyAddMemberView(ProtectQuerysetMixin, ProtectedCreateView):
|
||||
"""
|
||||
@ -282,8 +298,8 @@ class FamilyManageView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView
|
||||
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")
|
||||
context["can_add_family"] = PermissionBackend.check_perm(self.request, "family.family_create")
|
||||
context["can_add_challenge"] = PermissionBackend.check_perm(self.request, "family.challenge_create")
|
||||
|
||||
return context
|
||||
|
||||
@ -294,7 +310,7 @@ class FamilyManageView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView
|
||||
return table
|
||||
|
||||
|
||||
class AchievementsView(ProtectQuerysetMixin, LoginRequiredMixin, MultiTableMixin, ListView):
|
||||
class AchievementListView(ProtectQuerysetMixin, LoginRequiredMixin, MultiTableMixin, ListView):
|
||||
"""
|
||||
List all achievements
|
||||
"""
|
||||
@ -333,12 +349,11 @@ class AchievementValidateView(ProtectQuerysetMixin, LoginRequiredMixin, Template
|
||||
template_name = 'family/achievement_confirm_validate.html'
|
||||
|
||||
def post(self, request, pk):
|
||||
# On récupère l'objet à valider
|
||||
achievement = Achievement.objects.get(pk=pk)
|
||||
# On modifie le champ valid
|
||||
|
||||
achievement.valid = True
|
||||
achievement.save()
|
||||
# On redirige vers la page de détail ou la liste
|
||||
|
||||
return redirect(reverse_lazy('family:achievement_list'))
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user