bans.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from django.contrib import messages
  2. from django.utils.translation import gettext_lazy as _
  3. from ....admin.views import generic
  4. from ...models import Ban
  5. from ..forms import BanForm, FilterBansForm
  6. class BanAdmin(generic.AdminBaseMixin):
  7. root_link = "misago:admin:users:bans:index"
  8. model = Ban
  9. form_class = 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().handle_form(form, request, target)
  14. Ban.objects.invalidate_cache()
  15. class BansList(BanAdmin, generic.ListView):
  16. items_per_page = 30
  17. ordering = [
  18. ("-id", _("From newest")),
  19. ("id", _("From oldest")),
  20. ("banned_value", _("A to z")),
  21. ("-banned_value", _("Z to a")),
  22. ]
  23. filter_form = FilterBansForm
  24. selection_label = _("With bans: 0")
  25. empty_selection_label = _("Select bans")
  26. mass_actions = [
  27. {
  28. "action": "delete",
  29. "name": _("Remove bans"),
  30. "confirmation": _("Are you sure you want to remove those bans?"),
  31. }
  32. ]
  33. def action_delete(self, request, items):
  34. items.delete()
  35. Ban.objects.invalidate_cache()
  36. messages.success(request, _("Selected bans have been removed."))
  37. class NewBan(BanAdmin, generic.ModelFormView):
  38. message_submit = _('New ban "%(name)s" has been saved.')
  39. class EditBan(BanAdmin, generic.ModelFormView):
  40. message_submit = _('Ban "%(name)s" has been edited.')
  41. class DeleteBan(BanAdmin, generic.ButtonView):
  42. def button_action(self, request, target):
  43. target.delete()
  44. Ban.objects.invalidate_cache()
  45. message = _('Ban "%(name)s" has been removed.')
  46. messages.success(request, message % {"name": target.name})