bans.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from django.contrib import messages
  2. from django.utils.translation import ugettext_lazy as _
  3. from misago.admin.views import generic
  4. from misago.users.forms.admin import BanForm, SearchBansForm
  5. from misago.users.models import Ban
  6. class BanAdmin(generic.AdminBaseMixin):
  7. root_link = 'misago:admin:users:bans:index'
  8. model = Ban
  9. form = BanForm
  10. templates_dir = 'misago/admin/bans'
  11. message_404 = _("Requested ban does not exist.")
  12. def handle_form(self, form, request, target):
  13. super(BanAdmin, self).handle_form(form, request, target)
  14. Ban.objects.invalidate_cache()
  15. class BansList(BanAdmin, generic.ListView):
  16. items_per_page = 30
  17. ordering = (('-id', _("From newest")), ('id', _("From oldest")), ('banned_value', _("A to z")),
  18. ('-banned_value', _("Z to a")), )
  19. search_form = SearchBansForm
  20. selection_label = _('With bans: 0')
  21. empty_selection_label = _('Select bans')
  22. mass_actions = ({
  23. 'action': 'delete',
  24. 'icon': 'fa fa-times',
  25. 'name': _('Remove bans'),
  26. 'confirmation': _('Are you sure you want to remove those bans?')
  27. }, )
  28. def action_delete(self, request, items):
  29. items.delete()
  30. Ban.objects.invalidate_cache()
  31. messages.success(request, _("Selected bans have been removed."))
  32. class NewBan(BanAdmin, generic.ModelFormView):
  33. message_submit = _('New ban "%(name)s" has been saved.')
  34. class EditBan(BanAdmin, generic.ModelFormView):
  35. message_submit = _('Ban "%(name)s" has been edited.')
  36. class DeleteBan(BanAdmin, generic.ButtonView):
  37. def button_action(self, request, target):
  38. target.delete()
  39. Ban.objects.invalidate_cache()
  40. message = _('Ban "%(name)s" has been removed.')
  41. messages.success(request, message % {'name': target.name})