djangoadmin.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 gettext 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",
  15. "email",
  16. "rank",
  17. "is_staff",
  18. "is_superuser",
  19. "get_edit_from_misago_url",
  20. )
  21. search_fields = ("username", "email")
  22. list_filter = ("groups", "rank", "is_staff", "is_superuser")
  23. actions = None
  24. readonly_fields = (
  25. "username",
  26. "email",
  27. "joined_on",
  28. "last_login",
  29. "rank",
  30. "is_staff",
  31. "is_superuser",
  32. "get_edit_from_misago_url",
  33. )
  34. fieldsets = (
  35. (
  36. _("Misago user data"),
  37. {
  38. "fields": (
  39. "username",
  40. "email",
  41. "joined_on",
  42. "last_login",
  43. "rank",
  44. "is_staff",
  45. "is_superuser",
  46. "get_edit_from_misago_url",
  47. )
  48. },
  49. ),
  50. (_("Edit permissions and groups"), {"fields": ("groups", "user_permissions")}),
  51. )
  52. def has_add_permission(self, request):
  53. return False
  54. def has_delete_permission(self, request, obj=None):
  55. return False
  56. def get_edit_from_misago_url(self, user_instance):
  57. return format_html(
  58. '<a href="{link}" class="{cls}" target="blank">{text}</a>',
  59. link=reverse(
  60. viewname="misago:admin:users:accounts:edit",
  61. kwargs={"pk": user_instance.pk},
  62. ),
  63. cls="changelink",
  64. text=_("Edit"),
  65. )
  66. get_edit_from_misago_url.short_description = _(
  67. "Edit the user from Misago admin panel"
  68. )