warnings.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 WarningLevel
  6. from misago.users.forms.admin import WarningLevelForm
  7. class WarningsAdmin(generic.AdminBaseMixin):
  8. root_link = 'misago:admin:users:warnings:index'
  9. Model = WarningLevel
  10. Form = WarningLevelForm
  11. templates_dir = 'misago/admin/warnings'
  12. message_404 = _("Requested warning level does not exist.")
  13. class WarningsList(WarningsAdmin, generic.ListView):
  14. ordering = (('level', None),)
  15. class NewWarning(WarningsAdmin, generic.ModelFormView):
  16. message_submit = _('New warning level "%s" has been saved.')
  17. class EditWarning(WarningsAdmin, generic.ModelFormView):
  18. message_submit = _('Warning level "%s" has been edited.')
  19. class DeleteWarning(WarningsAdmin, generic.ButtonView):
  20. def button_action(self, request, target):
  21. target.delete()
  22. message = _('Warning level "%s" has been deleted.')
  23. messages.success(request, message % unicode(target.name))
  24. class MoveDownWarning(WarningsAdmin, generic.ButtonView):
  25. def button_action(self, request, target):
  26. try:
  27. other_target = WarningLevel.objects.filter(level__gt=target.level)
  28. other_target = other_target.earliest('level')
  29. except WarningLevel.DoesNotExist:
  30. other_target = None
  31. if other_target:
  32. other_target.level, target.level = target.level, other_target.level
  33. other_target.save(update_fields=['level'])
  34. target.save(update_fields=['level'])
  35. message = _('Warning level "%s" has been moved below "%s".')
  36. targets_names = (target.name, other_target.name)
  37. messages.success(request, message % targets_names)
  38. class MoveUpWarning(WarningsAdmin, generic.ButtonView):
  39. def button_action(self, request, target):
  40. try:
  41. other_target = WarningLevel.objects.filter(level__lt=target.level)
  42. other_target = other_target.latest('level')
  43. except WarningLevel.DoesNotExist:
  44. other_target = None
  45. if other_target:
  46. other_target.level, target.level = target.level, other_target.level
  47. other_target.save(update_fields=['level'])
  48. target.save(update_fields=['level'])
  49. message = _('Warning level "%s" has been moved above "%s".')
  50. targets_names = (target.name, other_target.name)
  51. messages.success(request, message % targets_names)