djangoadmin.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from django.contrib.admin import ModelAdmin
  2. from django.urls import reverse
  3. from django.utils.html import format_html
  4. from django.utils.translation import ugettext as _
  5. class UserAdminModel(ModelAdmin):
  6. """
  7. The model should be used for interaction of third party django apps with
  8. Misago's `User`.
  9. Removes `new` and `delete` actions (use Misago admin for that).
  10. Registration call is placed in :mod:`misago.users.admin`.
  11. The tests are in :mod:`misago.users.tests.test_djangoadmin_user`.
  12. """
  13. list_display = (
  14. 'username', 'email', 'rank', 'is_staff', 'is_superuser', 'get_edit_from_misago_url',
  15. )
  16. search_fields = ('username', 'email')
  17. list_filter = ('groups', 'rank', 'is_staff', 'is_superuser')
  18. actions = None
  19. readonly_fields = (
  20. 'username', 'email', 'joined_on', 'last_login', 'rank', 'is_staff', 'is_superuser',
  21. 'get_edit_from_misago_url',
  22. )
  23. fieldsets = ((
  24. _("Misago user data"), {
  25. 'fields': (
  26. 'username', 'email', 'joined_on', 'last_login', 'rank', 'is_staff', 'is_superuser',
  27. 'get_edit_from_misago_url',
  28. )
  29. },
  30. ), (_("Edit permissions and groups"), {
  31. 'fields': ('groups', 'user_permissions', )
  32. }, ), )
  33. def has_add_permission(self, request):
  34. return False
  35. def has_delete_permission(self, request, obj=None):
  36. return False
  37. def get_edit_from_misago_url(self, user_instance):
  38. return format_html(
  39. '<a href="{link}" class="{cls}" target="blank">{text}</a>',
  40. link=reverse(
  41. viewname='misago:admin:users:accounts:edit',
  42. kwargs={'pk': user_instance.pk},
  43. ),
  44. cls='changelink',
  45. text=_("Edit"),
  46. )
  47. get_edit_from_misago_url.short_description = _("Edit the user from Misago admin panel")