admin.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. from django.contrib import messages
  2. from django.utils import timezone
  3. from django.utils.translation import ugettext_lazy as _
  4. from misago.admin.views import generic
  5. from misago.legal.forms import AgreementForm, SearchAgreementsForm
  6. from misago.legal.models import Agreement
  7. from misago.legal.utils import set_agreement_as_active
  8. class AgreementAdmin(generic.AdminBaseMixin):
  9. root_link = 'misago:admin:users:agreements:index'
  10. model = Agreement
  11. form = AgreementForm
  12. templates_dir = 'misago/admin/agreements'
  13. message_404 = _("Requested agreement does not exist.")
  14. def handle_form(self, form, request, target):
  15. form.save()
  16. if self.message_submit:
  17. messages.success(request, self.message_submit % {'title': target.get_final_title()})
  18. class AgreementsList(AgreementAdmin, generic.ListView):
  19. items_per_page = 30
  20. ordering = [
  21. ('-id', _("From newest")),
  22. ('id', _("From oldest")),
  23. ]
  24. search_form = SearchAgreementsForm
  25. selection_label = _('With agreements: 0')
  26. empty_selection_label = _('Select agreements')
  27. mass_actions = ({
  28. 'action': 'delete',
  29. 'icon': 'fa fa-times',
  30. 'name': _('Delete agreements'),
  31. 'confirmation': _('Are you sure you want to delete those agreements?')
  32. }, )
  33. def get_queryset(self):
  34. qs = super(AgreementsList, self).get_queryset()
  35. return qs.select_related()
  36. def action_delete(self, request, items):
  37. items.delete()
  38. Agreement.objects.invalidate_cache()
  39. messages.success(request, _("Selected agreements have been deleted."))
  40. class NewAgreement(AgreementAdmin, generic.ModelFormView):
  41. message_submit = _('New agreement "%(title)s" has been saved.')
  42. def handle_form(self, form, request, target):
  43. super(NewAgreement, self).handle_form(form, request, target)
  44. form.instance.set_created_by(request.user)
  45. form.instance.save()
  46. class EditAgreement(AgreementAdmin, generic.ModelFormView):
  47. message_submit = _('Agreement "%(title)s" has been edited.')
  48. def handle_form(self, form, request, target):
  49. super(EditAgreement, self).handle_form(form, request, target)
  50. form.instance.last_modified_on = timezone.now()
  51. form.instance.set_last_modified_by(request.user)
  52. form.instance.save()
  53. class DeleteAgreement(AgreementAdmin, generic.ButtonView):
  54. def button_action(self, request, target):
  55. target.delete()
  56. Agreement.objects.invalidate_cache()
  57. message = _('Agreement "%(title)s" has been deleted.')
  58. messages.success(request, message % {'title': target.get_final_title()})
  59. class SetAgreementAsActive(AgreementAdmin, generic.ButtonView):
  60. def button_action(self, request, target):
  61. set_agreement_as_active(target, commit=True)
  62. message = _('Agreement "%(title)s" has been set as active for type "%(type)s".')
  63. targets_names = {'title': target.get_final_title(), 'type': target.get_type_display()}
  64. messages.success(request, message % targets_names)