mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	[2.1.x] Refs #8936 -- Added ModelAdmin.has_view_or_change_permission().
Backport of cd790ed1a6 from master
			
			
This commit is contained in:
		| @@ -518,6 +518,9 @@ class BaseModelAdmin(metaclass=forms.MediaDefiningClass): | |||||||
|             request.user.has_perm('%s.%s' % (opts.app_label, codename_change)) |             request.user.has_perm('%s.%s' % (opts.app_label, codename_change)) | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|  |     def has_view_or_change_permission(self, request, obj=None): | ||||||
|  |         return self.has_view_permission(request, obj) or self.has_change_permission(request, obj) | ||||||
|  |  | ||||||
|     def has_module_permission(self, request): |     def has_module_permission(self, request): | ||||||
|         """ |         """ | ||||||
|         Return True if the given request has any permission in the given |         Return True if the given request has any permission in the given | ||||||
| @@ -588,9 +591,8 @@ class ModelAdmin(BaseModelAdmin): | |||||||
|             else: |             else: | ||||||
|                 inline_has_add_permission = inline.has_add_permission(request) |                 inline_has_add_permission = inline.has_add_permission(request) | ||||||
|             if request: |             if request: | ||||||
|                 if not (inline.has_view_permission(request, obj) or |                 if not (inline.has_view_or_change_permission(request, obj) or | ||||||
|                         inline_has_add_permission or |                         inline_has_add_permission or | ||||||
|                         inline.has_change_permission(request, obj) or |  | ||||||
|                         inline.has_delete_permission(request, obj)): |                         inline.has_delete_permission(request, obj)): | ||||||
|                     continue |                     continue | ||||||
|                 if not inline_has_add_permission: |                 if not inline_has_add_permission: | ||||||
| @@ -1556,7 +1558,7 @@ class ModelAdmin(BaseModelAdmin): | |||||||
|         else: |         else: | ||||||
|             obj = self.get_object(request, unquote(object_id), to_field) |             obj = self.get_object(request, unquote(object_id), to_field) | ||||||
|  |  | ||||||
|             if not self.has_view_permission(request, obj) and not self.has_change_permission(request, obj): |             if not self.has_view_or_change_permission(request, obj): | ||||||
|                 raise PermissionDenied |                 raise PermissionDenied | ||||||
|  |  | ||||||
|             if obj is None: |             if obj is None: | ||||||
| @@ -1678,7 +1680,7 @@ class ModelAdmin(BaseModelAdmin): | |||||||
|         from django.contrib.admin.views.main import ERROR_FLAG |         from django.contrib.admin.views.main import ERROR_FLAG | ||||||
|         opts = self.model._meta |         opts = self.model._meta | ||||||
|         app_label = opts.app_label |         app_label = opts.app_label | ||||||
|         if not self.has_view_permission(request) and not self.has_change_permission(request): |         if not self.has_view_or_change_permission(request): | ||||||
|             raise PermissionDenied |             raise PermissionDenied | ||||||
|  |  | ||||||
|         try: |         try: | ||||||
| @@ -1904,7 +1906,7 @@ class ModelAdmin(BaseModelAdmin): | |||||||
|         if obj is None: |         if obj is None: | ||||||
|             return self._get_obj_does_not_exist_redirect(request, model._meta, object_id) |             return self._get_obj_does_not_exist_redirect(request, model._meta, object_id) | ||||||
|  |  | ||||||
|         if not self.has_view_permission(request, obj) and not self.has_change_permission(request, obj): |         if not self.has_view_or_change_permission(request, obj): | ||||||
|             raise PermissionDenied |             raise PermissionDenied | ||||||
|  |  | ||||||
|         # Then get the history for this object. |         # Then get the history for this object. | ||||||
| @@ -2111,7 +2113,7 @@ class InlineModelAdmin(BaseModelAdmin): | |||||||
|  |  | ||||||
|     def get_queryset(self, request): |     def get_queryset(self, request): | ||||||
|         queryset = super().get_queryset(request) |         queryset = super().get_queryset(request) | ||||||
|         if not self.has_change_permission(request) and not self.has_view_permission(request): |         if not self.has_view_or_change_permission(request): | ||||||
|             queryset = queryset.none() |             queryset = queryset.none() | ||||||
|         return queryset |         return queryset | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user