banadmin.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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.core import cachebuster
  5. from misago.users.models import Ban
  6. from misago.users.forms.admin import SearchBansForm, BanForm
  7. class BanAdmin(generic.AdminBaseMixin):
  8. root_link = 'misago:admin:users:bans:index'
  9. Model = Ban
  10. Form = BanForm
  11. templates_dir = 'misago/admin/bans'
  12. message_404 = _("Requested ban does not exist.")
  13. def update_roles(self, target, roles):
  14. target.roles.clear()
  15. if roles:
  16. target.roles.add(*roles)
  17. def handle_form(self, form, request, target):
  18. super(BanAdmin, self).handle_form(form, request, target)
  19. cachebuster.invalidate('misago_bans')
  20. class BansList(BanAdmin, generic.ListView):
  21. items_per_page = 30
  22. ordering = (
  23. ('-id', _("From newest")),
  24. ('id', _("From oldest")),
  25. ('banned_value', _("A to z")),
  26. ('-banned_value', _("Z to a")),
  27. )
  28. SearchForm = SearchBansForm
  29. selection_label = _('With bans: 0')
  30. empty_selection_label = _('Select bans')
  31. mass_actions = (
  32. (
  33. 'delete',
  34. _('Remove bans'),
  35. _('Are you sure you want to remove those bans?')
  36. ),
  37. )
  38. def action_delete(self, request, items):
  39. items.delete()
  40. cachebuster.invalidate('misago_bans')
  41. messages.success(request, _("Selected bans have been removed."))
  42. class NewBan(BanAdmin, generic.ModelFormView):
  43. message_submit = _('New ban "%s" has been saved.')
  44. class EditBan(BanAdmin, generic.ModelFormView):
  45. message_submit = _('Ban "%s" has been edited.')
  46. class DeleteBan(BanAdmin, generic.ButtonView):
  47. def button_action(self, request, target):
  48. target.delete()
  49. cachebuster.invalidate('misago_bans')
  50. message = _('Ban "%s" has been removed.') % unicode(target.name)
  51. messages.success(request, message)