bitwise permissions not working when combine has_object_permission and has_permission · Issue #7117 · encode/django-rest-framework (original) (raw)
Navigation Menu
- Explore
- Pricing
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Appearance settings
Description
Checklist
- I have verified that that issue exists against the
master
branch of Django REST framework. - I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
- This is not a usage question. (Those should be directed to the discussion group instead.)
- This cannot be dealt with as a third party library. (We prefer new functionality to be in the form of third party libraries where possible.)
- I have reduced the issue to the simplest possible case.
- I have included a failing test as a pull request. (If you are unable to do so we can still accept the issue.)
Steps to reproduce
Set
from rest_framework import viewsets
from rest_framework.permissions import IsAdminUser
class IsCompanyMemberPermission(IsAuthenticated):
"""
Allows access only to company owner members.
"""
def has_object_permission(self, request, view, obj):
return obj == request.user.company
class MyViewSet(viewsets.ModelViewSet):
def get_permissions(self):
if self.action in ['update', 'partial_update', 'destroy']:
self.permission_classes = (IsAdminUser | IsCompanyMemberPermission, )
return super(BuilderOrganizationViewSet, self).get_permissions()
Do put request
I also found similar issue on https://stackoverflow.com/a/55773420/1786016
Expected behavior
has_object_permission
must be called and return False in my case
Actual behavior
has_object_permission
not called