mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-07-23 17:26:46 +02:00
Added valid field and logic for Achievement
This commit is contained in:
@ -4,12 +4,14 @@
|
||||
from datetime import date
|
||||
|
||||
from django.conf import settings
|
||||
from django.shortcuts import redirect
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.db import transaction
|
||||
from django.views.generic import DetailView, UpdateView
|
||||
from django.views.generic import DetailView, UpdateView, ListView
|
||||
from django.views.generic.edit import DeleteView
|
||||
from django.views.generic.base import TemplateView
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_tables2 import SingleTableView
|
||||
from django_tables2 import SingleTableView, MultiTableMixin
|
||||
from permission.backends import PermissionBackend
|
||||
from permission.views import ProtectQuerysetMixin, ProtectedCreateView
|
||||
from django.urls import reverse_lazy
|
||||
@ -287,23 +289,57 @@ class FamilyManageView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView
|
||||
|
||||
def get_table(self, **kwargs):
|
||||
table = super().get_table(**kwargs)
|
||||
table.exclude = ('delete',)
|
||||
table.exclude = ('delete', 'validate',)
|
||||
table.orderable = False
|
||||
return table
|
||||
|
||||
|
||||
class AchievementsView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView):
|
||||
class AchievementsView(ProtectQuerysetMixin, LoginRequiredMixin, MultiTableMixin, ListView):
|
||||
"""
|
||||
List all achievements
|
||||
"""
|
||||
model = Achievement
|
||||
table_class = AchievementTable
|
||||
tables = [AchievementTable, AchievementTable, ]
|
||||
extra_context = {'title': _('Achievement list')}
|
||||
|
||||
def get_table(self, **kwargs):
|
||||
table = super().get_table(**kwargs)
|
||||
table.orderable = True
|
||||
return table
|
||||
def get_tables(self, **kwargs):
|
||||
tables = super().get_tables(**kwargs)
|
||||
|
||||
tables[0].prefix = 'invalid-'
|
||||
tables[1].prefix = 'valid-'
|
||||
tables[1].exclude = ('validate', 'delete',)
|
||||
|
||||
return tables
|
||||
|
||||
def get_tables_data(self):
|
||||
table_valid = self.get_queryset().filter(valid=True)
|
||||
table_invalid = self.get_queryset().filter(valid=False)
|
||||
return [table_invalid, table_valid, ]
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
tables = context['tables']
|
||||
|
||||
context['invalid'] = tables[0]
|
||||
context['valid'] = tables[1]
|
||||
return context
|
||||
|
||||
|
||||
class AchievementValidateView(ProtectQuerysetMixin, LoginRequiredMixin, TemplateView):
|
||||
"""
|
||||
Validate an achievement obtained by a family
|
||||
"""
|
||||
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'))
|
||||
|
||||
|
||||
class AchievementDeleteView(ProtectQuerysetMixin, LoginRequiredMixin, DeleteView):
|
||||
|
Reference in New Issue
Block a user