【发布时间】:2014-08-03 08:43:29
【问题描述】:
我正在做的项目已经脱离了 django 权限模型,并使用了本土的权限系统。
这是 django 管理员的问题。你们所有人我们的models.py hase代码都与此类似:
def is_admin(user):
return user.groups.filter(name__contains="APP Admin").exists()
def is_publisher(user):
return user.groups.filter(name="101 - APP Publisher").exists()
def is_app_user(user):
return is_admin(user) or is_publisher(user) or user.is_superuser
#admin.site.disable_action('delete_selected')
class DefaultPermitMixin(object):
def has_change_permission(self, request, obj=None):
return is_app_user(request.user)
def has_add_permission(self, request):
return request.user.is_superuser
def has_delete_permission(self, request, obj=None):
return request.user.is_superuser
所有的 ModelAdmins 都派生自 DefaultPermitMixin 并且它们中的大多数都有一个 get_readonly_fields 函数来实现字段或对象级别的权限。
问题在于 django-admin 使用权限来决定是否显示应用程序。如果我从我们的应用程序中只给用户一个权限,那么一切都会正常运行。如果用户对某个应用没有权限,则该应用会被隐藏,即使 has_*_permission 会返回 true。
有没有办法覆盖此行为并强制管理员显示我的应用程序?
【问题讨论】:
标签: python django permissions django-admin