def change_view(self, request, object_id, form_url='', extra_context=None):
"""
Override this function to hide the sumbit row from the user who has
view only permission
"""
to_field = request.POST.get(
TO_FIELD_VAR, request.GET.get(TO_FIELD_VAR)
)
model = self.model
opts = model._meta
# TODO: Overriding the change_view costs 1 query more (one from us
# and another from the super)
obj = self.get_object(request, unquote(object_id), to_field)
if self.has_view_permission(request, obj) and \
not self._has_change_only_permission(request, obj):
extra_context = extra_context or {}
extra_context['title'] = _('View %s') % force_text(
opts.verbose_name)
extra_context['show_save'] = False
extra_context['show_save_and_continue'] = False
extra_context['show_save_and_add_another'] = False
extra_context['show_save_as_new'] = False
inlines = self.get_inline_instances(request, obj)
for inline in inlines:
if (inline._has_change_only_permission(request, obj) or
inline.has_add_permission(request)):
extra_context['show_save'] = True
extra_context['show_save_and_continue'] = True
break
return super(AdminViewPermissionModelAdmin, self).change_view(
request, object_id, form_url, extra_context)
评论列表
文章目录