내 고객이 삭제/작성하는 경우 django-guardian
을 사용하지 않기로했습니다. ModelManager
에 기존 오버레이를 추가하여 새로운 그룹으로 이전해야합니다. 따라서 Django REST를 통해 filter_queryset
으로 필터링 된 인스턴스가 내 경우에는 문제가되지 않습니다.Django 권한이 그룹에 속하지만 해당 그룹의 사용자에게 그룹의 권한이 없습니다
FailedTestCase :
from django.contrib.auth.models import User
from poinkbackend.apps.companies.models import Company
from poinkbackend.apps.roles.models import Role
from poinkbackend.apps.userroles.models import UserRole
from poinkbackend.apps.commons.tests import companies, userprofiles, branches
def test_support_view_userprofile(companies, userprofiles):
company = Company.objects.get(name='Singh')
support = Role.objects.add_support('firstsupport', company)
user = User.objects.get(username='notty')
UserRole.objects.create(user=user, role=support)
user.refresh_from_db()
import pdb; pdb.set_trace()
assert True is user.has_perm('view_userprofile')
-> assert True is user.has_perm('view_userprofile') (Pdb) user.groups.first() <Group: firstsupport-Singh> (Pdb) g1 = user.groups.first() (Pdb) g1.permissions.all() <QuerySet [<Permission: userprofiles | user profile | View UserProfile>]> (Pdb) user.has_perm('view_userprofile') False
질문 :
는 어디에서 잘못입니까?
업데이트 2017년 11월 16일 10시 30 분 GMT + 7 추가 4 URL 기 스트 :
회사 : https://gist.github.com/elcolie/684ba34391d0a94df7ca98855cea765b
역할 : https://gist.github.com/elcolie/64a3a3daf22240b2072e113eb10164e2
UserRole : https://gist.github.com/elcolie/d28e7fcf54334a9f13df5fff1b7d9fe0
BusinessPermisson : https://gist.github.com/elcolie/bbeb00f41db0c7884cee34c6bccaf5f9
참고 문헌 :
나는이 오류의 근본 원인을 찾을 수 있지만Django user has_perm returning false even though group has permission
Django user not getting the assigned group's permissions
django group permission
죄송합니다. 나는'FailedTestCase' 요지에서 디버깅 라인을 업데이트했다. – Sarit
오노 내 잘못입니다. 'user.has_perm ('userprofiles.view_userprofile')'. 'app_label'을 잊어 버렸습니다. – Sarit
예제를 수정하는 것이 좋습니다. 추적하기가 어렵습니다. ''add_support'' 메소드는 무엇입니까? 그녀의 코드는 어디에 있습니까? 왜 pdb입니까? 이 예제 이후에 불필요한 점프를 방지하기 위해 콘솔 모드를 사용하지 않는 이유는 무엇입니까? 모델이 어디 있습니까 ("회사", "역할", "사용자 역할"이란 무엇입니까?)? –