12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- from django.contrib import messages
- from django.utils import timezone
- from django.utils.translation import gettext_lazy as _
- from misago.admin.views import generic
- from misago.legal.forms import AgreementForm, SearchAgreementsForm
- from misago.legal.models import Agreement
- from misago.legal.utils import set_agreement_as_active
- class AgreementAdmin(generic.AdminBaseMixin):
- root_link = "misago:admin:users:agreements:index"
- model = Agreement
- form = AgreementForm
- templates_dir = "misago/admin/agreements"
- message_404 = _("Requested agreement does not exist.")
- def handle_form(self, form, request, target):
- form.save()
- if self.message_submit:
- messages.success(
- request, self.message_submit % {"title": target.get_final_title()}
- )
- class AgreementsList(AgreementAdmin, generic.ListView):
- items_per_page = 30
- ordering = [("-id", _("From newest")), ("id", _("From oldest"))]
- search_form = SearchAgreementsForm
- selection_label = _("With agreements: 0")
- empty_selection_label = _("Select agreements")
- mass_actions = (
- {
- "action": "delete",
- "icon": "fa fa-times",
- "name": _("Delete agreements"),
- "confirmation": _("Are you sure you want to delete those agreements?"),
- },
- )
- def get_queryset(self):
- qs = super().get_queryset()
- return qs.select_related()
- def action_delete(self, request, items):
- items.delete()
- Agreement.objects.invalidate_cache()
- messages.success(request, _("Selected agreements have been deleted."))
- class NewAgreement(AgreementAdmin, generic.ModelFormView):
- message_submit = _('New agreement "%(title)s" has been saved.')
- def handle_form(self, form, request, target):
- super().handle_form(form, request, target)
- form.instance.set_created_by(request.user)
- form.instance.save()
- class EditAgreement(AgreementAdmin, generic.ModelFormView):
- message_submit = _('Agreement "%(title)s" has been edited.')
- def handle_form(self, form, request, target):
- super().handle_form(form, request, target)
- form.instance.last_modified_on = timezone.now()
- form.instance.set_last_modified_by(request.user)
- form.instance.save()
- class DeleteAgreement(AgreementAdmin, generic.ButtonView):
- def button_action(self, request, target):
- target.delete()
- Agreement.objects.invalidate_cache()
- message = _('Agreement "%(title)s" has been deleted.')
- messages.success(request, message % {"title": target.get_final_title()})
- class SetAgreementAsActive(AgreementAdmin, generic.ButtonView):
- def button_action(self, request, target):
- set_agreement_as_active(target, commit=True)
- message = _('Agreement "%(title)s" has been set as active for type "%(type)s".')
- targets_names = {
- "title": target.get_final_title(),
- "type": target.get_type_display(),
- }
- messages.success(request, message % targets_names)
|