2017-02-21 11 views
1

django-guardian의 개체 권한을 사용하고 특정 사용자에 대한 특정 권한을 하나 이상의 Django 사용자에게 부여하고 싶습니다.ViewFlow 및 django-guardian

File "/home/me/.virtualenvs/viewflow3/lib/python3.4/site-packages/viewflow/mixins.py", line 253, in ready 
    self.flow_class.process_class._meta.permissions.append(
AttributeError: 'tuple' object has no attribute 'append' 

내 초기 계획에 있었다 : 불행하게도이 viewflow 즉시 runserver를 시작한 후 오류가 발생하는 원인이

class TestProcess(Process): 
    title = models.CharField(max_length=64) 

    something = models.ForeignKey(ForInheritage, null=True, on_delete=models.CASCADE) 
    no_approval = models.BooleanField(default=False) 
    approved = models.BooleanField(default=False) 

    def something_is_approved(self): 
     try: 
      return self.something.approved 
     except: 
      return None 

    class Meta: 
     permissions = (
      ('view_process', 'View Process'), 
     ) 

을 :

나는이처럼 내 프로세스 클래스에 일부 권한을 추가 시도 서브 클래스 StartView 흐름 클래스는 PermissionMixin에서 상속 된 Permission 함수가 작동하는 방식을 변경합니다. 그러나 이것은 이것보다 더 많은 일로 보인다.

django-guardiancookbook 섹션 here 중 하나에서 이미 언급되었지만 현재 404 페이지로 연결됩니다.

프로세스 및 작업에 보호자 권한을 사용하는 것이 권장/가장 깨끗한 방법은 무엇입니까? 당신이 튜플과 같은 권한을 지정/c를 대신

class Meta: 
    permissions = [ 
     ('view_process', 'View Process'), 
    ] 

Viewflow 이미 '보기'를 추가 목록을 시도하고 당신이 그 (것)들을 재사용 할 수 있도록 권한을 '관리'B

답변

1

귀하의 특정 문제가 발생합니다.

그러나 django-guardian을 사용하는 객체 수준에 대한 프로세스 별보기 권한은 그다지 실용적이지 않습니다. 각각의 새 프로세스 작성시, 시작보기에서 모든 프로세스 참여자에게보기 권한을 부여해야합니다. 이로 인해 hudge 권한 테이블이 커지고 권한 조회가 느려집니다.

개체 수준 사용 권한의 적절한 사용 예는 사용자 부서를 기반으로하는 작업에 대한 사용자 액세스를 제한하는 것과 비슷할 수 있습니다.

deliver = flow.View(
    views.deliver 
).Permission(
    'parcel.land_on_planet', 
    obj=lambda process: process.department 
).Next(this.report) 
+0

나는 각 사용자를 설정하는 것은 너무 큰 권한 테이블로 이어질 수 있음을 얻을 수 있지만, 나는 대부분의 ('assign_perm ('change_task', 그룹, 작업)에 대한 그룹을 기반으로 권한을 설정할 것 'django-guardian에서). 지금 가능한가요? 예를 들어 다른 운송 회사가있을 수 있습니다. ShipmentCompanyX ('model''ShipmentCompany '의 객체)는 상응하는'group'ShipmentCompanyXGroup을'permission' "view_company"와 함께 가질 것입니다. 새로운 프로세스/태스크를 생성 할 때이 태스크에 대해 "view_task"와 같은 것을 추가하고 싶습니다. –

+0

뷰 흐름의보기 권한은 개체 기반이 아닙니다. – kmmbvnr