rankadmin.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.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. Model = Rank
  9. Form = RankForm
  10. templates_dir = 'misago/admin/ranks'
  11. message_404 = _("Requested rank does not exist.")
  12. class RanksList(RankAdmin, generic.ListView):
  13. ordering = (('order', None),)
  14. class NewRank(RankAdmin, generic.ModelFormView):
  15. message_submit = _('New rank "%s" has been saved.')
  16. class EditRank(RankAdmin, generic.ModelFormView):
  17. message_submit = _('Rank "%s" has been edited.')
  18. class DeleteRank(RankAdmin, generic.ButtonView):
  19. def check_permissions(self, request, target):
  20. if not target.user_set.exists():
  21. message = _('Rank "%s" is assigned to users and '
  22. 'can\'t be deleted.')
  23. return message % unicode(target.name)
  24. def button_action(self, request, target):
  25. target.delete()
  26. message = _('Rank "%s" has been deleted.') % unicode(target.name)
  27. messages.success(request, message)
  28. class MoveUpRank(RankAdmin, generic.ButtonView):
  29. def button_action(self, request, target):
  30. other_target = target.prev()
  31. if other_target:
  32. other_target.order, target.order = target.order, other_target.order
  33. other_target.save(update_fields=['order'])
  34. target.save(update_fields=['order'])
  35. message = _('Rank "%s" has been moved up.') % unicode(target.name)
  36. messages.success(request, message)
  37. class MoveDownRank(RankAdmin, generic.ButtonView):
  38. def button_action(self, request, target):
  39. other_target = target.next()
  40. if other_target:
  41. other_target.order, target.order = target.order, other_target.order
  42. other_target.save(update_fields=['order'])
  43. target.save(update_fields=['order'])
  44. message = _('Rank "%s" has been moved down.') % unicode(target.name)
  45. messages.success(request, message)
  46. class DefaultRank(RankAdmin, generic.ButtonView):
  47. def check_permissions(self, request, target):
  48. if target.is_default:
  49. return _('Rank "%s" is already default.') % unicode(target.name)
  50. def button_action(self, request, target):
  51. Rank.objects.make_rank_default(target)
  52. message = _('Rank "%s" has been made default.')
  53. messages.success(request, message % unicode(target.name))