views.py 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from django.core.urlresolvers import reverse as django_reverse
  2. from django.utils.translation import ugettext as _
  3. from misago.admin import site
  4. from misago.admin.widgets import *
  5. from misago.utils import slugify
  6. from misago.users.admin.users.forms import SearchUsersForm
  7. from misago.users.models import User
  8. def reverse(route, target=None):
  9. if target:
  10. return django_reverse(route, kwargs={'target': target.pk, 'slug': slugify(target.username)})
  11. return django_reverse(route)
  12. """
  13. Views
  14. """
  15. class List(ListWidget):
  16. """
  17. List Users
  18. """
  19. admin = site.get_action('users')
  20. id = 'list'
  21. columns=(
  22. ('username_slug', _("User Name"), 50),
  23. ('join_date', _("Join Date")),
  24. )
  25. default_sorting = 'username'
  26. sortables={
  27. 'username_slug': 1,
  28. 'join_date': 0,
  29. }
  30. pagination = 15
  31. nothing_checked_message = _('You have to check at least one user.')
  32. actions=(
  33. ('reset', _("Reset passwords"), _("Are you sure you want to reset selected members passwords?")),
  34. ('remove_avs', _("Remove avatars"), _("Are you sure you want to reset selected members passwords?")),
  35. ('delete', _("Delete selected"), _("Are you sure you want to delete selected users?")),
  36. )
  37. def get_search_form(self, request):
  38. return SearchUsersForm
  39. def set_filters(self, model, filters):
  40. if 'username' in filters:
  41. model = model.filter(username_slug__contains=filters['username'])
  42. if 'email' in filters:
  43. model = model.filter(email__contains=filters['email'])
  44. if 'activation' in filters:
  45. model = model.filter(activation__in=filters['activation'])
  46. return model
  47. def get_item_actions(self, request, item):
  48. return (
  49. self.action('pencil', _("Edit User Details"), reverse('admin_qa_edit', item)),
  50. self.action('remove', _("Delete User"), reverse('admin_users_delete', item), post=True, prompt=_("Are you sure you want to delete this user account?")),
  51. )
  52. def action_delete(self, request, items, checked):
  53. print '%r' % checked
  54. for user in items:
  55. if unicode(user.pk) in checked:
  56. if user.pk == request.user.id:
  57. return BasicMessage(_('You cannot delete yourself.'), 'error'), reverse('admin_users')
  58. if user.is_god():
  59. return BasicMessage(_('You cannot delete system administrator.'), 'error'), reverse('admin_users')
  60. User.objects.filter(id__in=checked).delete()
  61. User.objects.resync_monitor(request.monitor)
  62. return BasicMessage(_('Selected users have been deleted successfully.'), 'success'), reverse('admin_users')
  63. class Delete(ButtonWidget):
  64. """
  65. Delete QA Test
  66. """
  67. admin = site.get_action('users')
  68. id = 'delete'
  69. fallback = 'admin_users'
  70. notfound_message = _('Requested user account could not be found.')
  71. def action(self, request, target):
  72. if target.pk == request.user.id:
  73. return BasicMessage(_('You cannot delete yourself.'), 'error'), False
  74. if target.is_god():
  75. return BasicMessage(_('You cannot delete system administrator.'), 'error'), False
  76. target.delete()
  77. User.objects.resync_monitor(request.monitor)
  78. return BasicMessage(_('User "%(name)s" has been deleted.' % {'name': target.username}), 'success'), False