rankadmin.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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 check_permissions(self, request, target):
  21. if not target.user_set.exists():
  22. message = _('Rank "%s" is assigned to users and '
  23. 'can\'t be deleted.')
  24. return message % unicode(target.name)
  25. def button_action(self, request, target=None):
  26. target.delete()
  27. message = _('Rank "%s" has been deleted.') % unicode(target.name)
  28. messages.success(request, message)
  29. class MoveUpRank(RankAdmin, generic.ButtonView):
  30. def button_action(self, request, target=None):
  31. other_target = target.prev()
  32. if other_target:
  33. other_target.order, target.order = target.order, other_target.order
  34. other_target.save(update_fields=['order'])
  35. target.save(update_fields=['order'])
  36. message = _('Rank "%s" has been moved up.') % unicode(target.name)
  37. messages.success(request, message)
  38. class MoveDownRank(RankAdmin, generic.ButtonView):
  39. def button_action(self, request, target=None):
  40. other_target = target.next()
  41. if other_target:
  42. other_target.order, target.order = target.order, other_target.order
  43. other_target.save(update_fields=['order'])
  44. target.save(update_fields=['order'])
  45. message = _('Rank "%s" has been moved down.') % unicode(target.name)
  46. messages.success(request, message)
  47. class DefaultRank(RankAdmin, generic.ButtonView):
  48. def check_permissions(self, request, target):
  49. if target.is_default:
  50. return _('Rank "%s" is already default.') % unicode(target.name)
  51. def button_action(self, request, target=None):
  52. Rank.objects.make_rank_default(target)
  53. message = _('Rank "%s" has been made default.')
  54. messages.success(request, message % unicode(target.name))