rankadmin.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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.models import Rank
  5. from misago.users.forms.admin import RankForm
  6. class RankAdmin(generic.AdminBaseMixin):
  7. root_link = 'misago:admin:users:ranks:index'
  8. template_dir = 'misago/admin/ranks'
  9. message_404 = _("Requested rank does not exist.")
  10. form = RankForm
  11. def get_model(self):
  12. return Rank
  13. class RanksList(RankAdmin, generic.ListView):
  14. ordering = ((None, 'order'),)
  15. class NewRank(RankAdmin, generic.FormView):
  16. message_submit = _('New rank "%s" has been saved.')
  17. class EditRank(RankAdmin, generic.FormView):
  18. message_submit = _('Rank "%s" has been edited.')
  19. class DeleteRank(RankAdmin, generic.ButtonView):
  20. def button_action(self, request, target=None):
  21. target.delete()
  22. message = _('Rank "%s" has been deleted.') % unicode(target.name)
  23. messages.success(request, message)
  24. class MoveUpRank(RankAdmin, generic.ButtonView):
  25. def button_action(self, request, target=None):
  26. other_target = target.prev()
  27. if other_target:
  28. other_target.order, target.order = target.order, other_target.order
  29. other_target.save(update_fields=['order'])
  30. target.save(update_fields=['order'])
  31. message = _('Rank "%s" has been moved up.') % unicode(target.name)
  32. messages.success(request, message)
  33. class MoveDownRank(RankAdmin, generic.ButtonView):
  34. def button_action(self, request, target=None):
  35. other_target = target.next()
  36. if other_target:
  37. other_target.order, target.order = target.order, other_target.order
  38. other_target.save(update_fields=['order'])
  39. target.save(update_fields=['order'])
  40. message = _('Rank "%s" has been moved down.') % unicode(target.name)
  41. messages.success(request, message)