2013-08-18 4 views
4

장고 보호자와 행 수준 권한을 추가했습니다.django-guardian의 행 수준 사용 권한 - 관리 인터페이스에 영향을주지 않음

  • 가디언 특정 테이블이 생성 된 (guardian_groupobjectpermission, guardian_userobjectpermission) GuardedModelAdmin와
  • 모델은 다음의 "역사"에 "개체 권한"기능을 보여줍니다이 모든 것이 잘 작동 보인다 셋업에서

    이 날 지정 "추가"할 수 있습니다
  • 는 "변경"사용자/그룹

그러나 (RESP를 할당하는 권한을 "삭제". 지정하지) 권한은 관리자 인터페이스에 전혀 영향을주지 않습니다. 모든 사용자는 모든 객체로 모든 것을 할 수 있습니다.

나는

user_can_access_owned_objects_only = True 

으로 시도했지만 이것은 단지 개체를 볼 수있는 능력에 영향을 미친다. 사용자는이를보고 변경하고 삭제할 수 있습니다. 사용 권한에 설정된 내용에 관계없이

그리고 나는 ModelAdmin

def queryset(self, request): 
    if request.user.is_superuser: 
     return get_objects_for_user(user=request.user, perms=['change_program'], klass=Program) 

이 제안 다른 토론을 따라하지만이 위와 비슷한 효과를 가지고, 그것은 단지 표시되는 항목을 제한합니다.

관리자가 장고 - 후견인의 말을 듣고 "저장"및 "삭제"버튼 (및 기능)을 보길 원했을 것입니다. 오해입니까? 아니면 아직 전체 길을 걷지 않았습니까?

어떤 힌트를 주셔서 감사합니다! R

답변

3

가디언은 사용자/오브젝트 조합에 할당 할 자신의 권한을 만들 수 있지만, 그 개체 사용 권한에 따라 리소스에 대한 액세스 제한은 여전히 ​​귀하의 의견에 코드를 작성해야합니다. 따라서 관리자보기에는 자동 시행이 없습니다. 관리자의 통합은 보호자의 문서를, 개체 수준의 권한을 관리 볼 수있는 관리 인터페이스에 액세스 할 수있는 권한을 사용자에게 허용하는 것입니다 : 당신의 해명

http://django-guardian.readthedocs.org/en/latest/userguide/admin-integration.html

+0

감사합니다. 나는 당신이 링크 한 문서를 따라 갔지만, 관리자의 "변화하는 퍼미션"이 관리자에게 영향을 미치지 않는다는 것을 명확하게 밝히지 않았다. :-) 이제 두 가지 옵션이 표시됩니다. 모든 사용자 정의보기를 작성하거나 admin을 덮어 쓰면 수호자가 구성된 사용 권한을 확인합니다. 아직 결정하지 않은, 어떤 길로 갈지 .. – szeta

관련 문제