218 lignes
6.2 KiB
Python
218 lignes
6.2 KiB
Python
from django.http import HttpResponseBadRequest, JsonResponse
|
|
from django.urls import reverse, reverse_lazy
|
|
from django.views import View
|
|
|
|
from cruditor import views
|
|
|
|
from benevalibre.utils import utils
|
|
from benevalibre.utils.views import StaffCruditorPageMixin
|
|
|
|
from . import forms, models, tables
|
|
|
|
# DEFAULT ROLES
|
|
# ------------------------------------------------------------------------------
|
|
|
|
|
|
class DefaultRoleViewMixin(StaffCruditorPageMixin):
|
|
model = models.DefaultRole
|
|
success_url = reverse_lazy('instance:role:index')
|
|
|
|
|
|
class DefaultRoleIndex(DefaultRoleViewMixin, views.CruditorListView):
|
|
table_class = tables.DefaultRoleIndexTable
|
|
title = "Liste des rôles par défaut"
|
|
create_tablebutton_label = "Ajouter un rôle par défaut"
|
|
create_url = reverse_lazy('instance:role:create')
|
|
|
|
|
|
class DefaultRoleCreate(DefaultRoleViewMixin, views.CruditorAddView):
|
|
form_class = forms.DefaultRoleCreateForm
|
|
|
|
|
|
class DefaultRoleUpdate(DefaultRoleViewMixin, views.CruditorChangeView):
|
|
form_class = forms.DefaultRoleUpdateForm
|
|
|
|
def get_delete_url(self):
|
|
return reverse('instance:role:delete', args=(self.object.pk,))
|
|
|
|
|
|
class DefaultRoleDelete(DefaultRoleViewMixin, views.CruditorDeleteView):
|
|
pass
|
|
|
|
|
|
# DEFAULT LEVELS
|
|
# ------------------------------------------------------------------------------
|
|
|
|
|
|
class DefaultLevelViewMixin(StaffCruditorPageMixin):
|
|
model = models.DefaultLevel
|
|
success_url = reverse_lazy('instance:level:index')
|
|
|
|
|
|
class DefaultLevelIndex(DefaultLevelViewMixin, views.CruditorListView):
|
|
table_class = tables.DefaultLevelIndexTable
|
|
title = "Liste des niveaux de bénévolat par défaut"
|
|
create_tablebutton_label = "Ajouter un niveau par défaut"
|
|
create_url = reverse_lazy('instance:level:create')
|
|
|
|
|
|
class DefaultLevelCreate(DefaultLevelViewMixin, views.CruditorAddView):
|
|
form_class = forms.DefaultLevelCreateForm
|
|
|
|
|
|
class DefaultLevelUpdate(DefaultLevelViewMixin, views.CruditorChangeView):
|
|
form_class = forms.DefaultLevelUpdateForm
|
|
|
|
def get_delete_url(self):
|
|
return reverse('instance:level:delete', args=(self.object.pk,))
|
|
|
|
|
|
class DefaultLevelDelete(DefaultLevelViewMixin, views.CruditorDeleteView):
|
|
pass
|
|
|
|
|
|
# INSTANCE CATEGORIES
|
|
# ------------------------------------------------------------------------------
|
|
|
|
|
|
class InstanceCategoryViewMixin(StaffCruditorPageMixin):
|
|
model = models.InstanceCategory
|
|
success_url = reverse_lazy('instance:instance_category:index')
|
|
|
|
|
|
class InstanceCategoryIndex(InstanceCategoryViewMixin, views.CruditorListView):
|
|
table_class = tables.InstanceCategoryIndexTable
|
|
title = "Liste des catégories d'instance"
|
|
create_tablebutton_label = "Ajouter une catégorie d'instance"
|
|
create_url = reverse_lazy('instance:instance_category:create')
|
|
|
|
|
|
class InstanceCategoryCreate(InstanceCategoryViewMixin, views.CruditorAddView):
|
|
form_class = forms.InstanceCategoryCreateForm
|
|
|
|
|
|
class InstanceCategoryUpdate(
|
|
InstanceCategoryViewMixin, views.CruditorChangeView
|
|
):
|
|
form_class = forms.InstanceCategoryUpdateForm
|
|
|
|
def get_delete_url(self):
|
|
return reverse(
|
|
'instance:instance_category:delete', args=(self.object.pk,)
|
|
)
|
|
|
|
|
|
class InstanceCategoryDelete(
|
|
InstanceCategoryViewMixin, views.CruditorDeleteView
|
|
):
|
|
pass
|
|
|
|
|
|
# DEFAULT CATEGORIES
|
|
# ------------------------------------------------------------------------------
|
|
|
|
|
|
class DefaultCategoryViewMixin(StaffCruditorPageMixin):
|
|
model = models.DefaultCategory
|
|
success_url = reverse_lazy('instance:category:index')
|
|
|
|
|
|
class DefaultCategoryIndex(DefaultCategoryViewMixin, views.CruditorListView):
|
|
table_class = tables.DefaultCategoryIndexTable
|
|
title = "Liste des catégories de bénévolat par défaut"
|
|
create_tablebutton_label = "Ajouter une catégorie par défaut"
|
|
create_url = reverse_lazy('instance:category:create')
|
|
|
|
|
|
class DefaultCategoryCreate(DefaultCategoryViewMixin, views.CruditorAddView):
|
|
form_class = forms.DefaultCategoryCreateForm
|
|
|
|
|
|
class DefaultCategoryUpdate(
|
|
DefaultCategoryViewMixin, views.CruditorChangeView
|
|
):
|
|
form_class = forms.DefaultCategoryUpdateForm
|
|
|
|
def get_delete_url(self):
|
|
return reverse('instance:category:delete', args=(self.object.pk,))
|
|
|
|
|
|
class DefaultCategoryDelete(
|
|
DefaultCategoryViewMixin, views.CruditorDeleteView
|
|
):
|
|
pass
|
|
|
|
|
|
# CHART OF USE DEFINITION
|
|
# ------------------------------------------------------------------------------
|
|
|
|
|
|
class TermsOfUseCreate(
|
|
StaffCruditorPageMixin,
|
|
views.CruditorAddView,
|
|
):
|
|
object = None
|
|
success_url = reverse_lazy('base:home')
|
|
title = "Téléverser une nouvelle charte d'utilisation"
|
|
form_class = forms.TermsOfUseCreateForm
|
|
success_message = (
|
|
"La nouvelle charte d'utilisation est désormais en ligne."
|
|
)
|
|
|
|
|
|
# INSTANCE MESSAGES
|
|
# ------------------------------------------------------------------------------
|
|
|
|
|
|
class InstanceMessageViewMixin(StaffCruditorPageMixin):
|
|
model = models.InstanceMessage
|
|
success_url = reverse_lazy('instance:instance_message:index')
|
|
|
|
|
|
class InstanceMessageIndex(
|
|
InstanceMessageViewMixin,
|
|
views.CruditorListView,
|
|
):
|
|
table_class = tables.InstanceMessageIndexTable
|
|
title = "Liste des messages d'instance"
|
|
create_titlebutton_label = "Ajouter un message"
|
|
create_url = reverse_lazy('instance:instance_message:create')
|
|
|
|
|
|
class InstanceMessageCreate(InstanceMessageViewMixin, views.CruditorAddView):
|
|
form_class = forms.InstanceMessageCreateForm
|
|
|
|
def form_valid(self, form):
|
|
form.instance.author = self.request.user
|
|
return super().form_valid(form)
|
|
|
|
|
|
class InstanceMessageUpdate(
|
|
InstanceMessageViewMixin, views.CruditorChangeView
|
|
):
|
|
form_class = forms.InstanceMessageUpdateForm
|
|
|
|
def get_delete_url(self):
|
|
return reverse(
|
|
'instance:instance_message:delete', args=(self.object.pk,)
|
|
)
|
|
|
|
|
|
class InstanceMessageDelete(
|
|
InstanceMessageViewMixin, views.CruditorDeleteView
|
|
):
|
|
pass
|
|
|
|
|
|
class InstanceMessageDismiss(View):
|
|
def post(self, request, *args, **kwargs):
|
|
if not request.is_ajax():
|
|
return HttpResponseBadRequest()
|
|
|
|
dismissed = utils.get_dismissed_instance_messages(request)
|
|
utils.set_dismissed_instance_messages(
|
|
request, dismissed + [kwargs['id']]
|
|
)
|
|
|
|
return JsonResponse({'dismissed': True})
|