from django.contrib.admin import ModelAdmin from django.urls import reverse from django.utils.html import format_html from django.utils.translation import gettext as _ class UserAdminModel(ModelAdmin): """ The model should be used for interaction of third party django apps with Misago's `User`. Removes `new` and `delete` actions (use Misago admin for that). Registration call is placed in :mod:`misago.users.admin`. The tests are in :mod:`misago.users.tests.test_djangoadmin_user`. """ list_display = ( "username", "email", "rank", "is_staff", "is_superuser", "get_edit_from_misago_url", ) search_fields = ("username", "email") list_filter = ("groups", "rank", "is_staff", "is_superuser") actions = None readonly_fields = ( "username", "email", "joined_on", "last_login", "rank", "is_staff", "is_superuser", "get_edit_from_misago_url", ) fieldsets = ( ( _("Misago user data"), { "fields": ( "username", "email", "joined_on", "last_login", "rank", "is_staff", "is_superuser", "get_edit_from_misago_url", ) }, ), (_("Edit permissions and groups"), {"fields": ("groups", "user_permissions")}), ) def has_add_permission(self, request): return False def has_delete_permission(self, request, obj=None): return False def get_edit_from_misago_url(self, user_instance): return format_html( '{text}', link=reverse( viewname="misago:admin:users:accounts:edit", kwargs={"pk": user_instance.pk}, ), cls="changelink", text=_("Edit"), ) get_edit_from_misago_url.short_description = _( "Edit the user from Misago admin panel" )