@@ -78,30 +78,6 @@ def has_permission(self, request, view):
7878 return template_access_qst .exists ()
7979
8080
81- class TemplateOwnerOrViewerPermission (BasePermission ):
82-
83- """ Allow access for template owners or template viewers (read-only) """
84-
85- message = MSG_PT_0070
86-
87- def has_permission (self , request , view ):
88- try :
89- template_id = int (view .kwargs .get ('pk' ))
90- except (ValueError , TypeError ):
91- return False
92-
93- if request .user .is_account_owner :
94- return True
95-
96- return (
97- Template .objects
98- .by_id (template_id )
99- .on_account (request .user .account_id )
100- .with_template_owner_or_viewer (request .user .id )
101- .exists ()
102- )
103-
104-
10581class TemplateFieldsPermission (BasePermission ):
10682
10783 """ Allow access for template owners, viewers or workflow members """
@@ -140,18 +116,17 @@ def has_permission(self, request, view):
140116
141117class UserCanAccessHighlightsPermission (BasePermission ):
142118
143- """ Allow admin, account owner, template owners or template viewers
144- (of any template on account) to access Highlights and Reports.
145- Template starters are NOT allowed — they only have access
146- to Dashboard and My Tasks sections. """
119+ """ Allow admin, account owner, template owners, viewers
120+ or template starters (of any template on account) to
121+ access Highlights. """
147122
148123 def has_permission (self , request , view ):
149124 if request .user .is_admin or request .user .is_account_owner :
150125 return True
151126 return (
152127 Template .objects
153128 .on_account (request .user .account_id )
154- .with_template_owner_or_viewer (request .user .id )
129+ .with_template_access (request .user .id )
155130 .exists ()
156131 )
157132
@@ -196,7 +171,7 @@ def has_permission(self, request, view):
196171 pk = workflow_id ,
197172 account_id = request .user .account_id ,
198173 )
199- .with_template_owner_or_viewer (request .user .id )
174+ .with_owner_viewer_or_started_by_starter (request .user .id )
200175 .exists ()
201176 )
202177
@@ -387,7 +362,7 @@ def has_permission(self, request, view):
387362 tasks__id = task_id ,
388363 account_id = request .user .account_id ,
389364 )
390- .with_template_owner_or_viewer (request .user .id )
365+ .with_owner_viewer_or_started_by_starter (request .user .id )
391366 .exists ()
392367 )
393368
@@ -430,8 +405,12 @@ def has_permission(self, request, view):
430405 if is_workflow_member :
431406 return True
432407
433- # Check template owner or viewer
434- return base_qst .with_template_owner_or_viewer (user_id ).exists ()
408+ # Check template owner, viewer or starter who started workflow
409+ return (
410+ base_qst
411+ .with_owner_viewer_or_started_by_starter (user_id )
412+ .exists ()
413+ )
435414
436415
437416class WorkflowCommentPermission (BasePermission ):
@@ -469,8 +448,12 @@ def has_permission(self, request, view):
469448 if is_workflow_member :
470449 return True
471450
472- # Check template owner or viewer
473- return base_qst .with_template_owner_or_viewer (user_id ).exists ()
451+ # Check template owner, viewer or starter who started workflow
452+ return (
453+ base_qst
454+ .with_owner_viewer_or_started_by_starter (user_id )
455+ .exists ()
456+ )
474457
475458
476459class GuestWorkflowPermission (BasePermission ):
@@ -647,7 +630,7 @@ def has_permission(self, request, view):
647630 Workflow .objects
648631 .by_id (workflow_id )
649632 .on_account (user .account_id )
650- .with_template_owner_or_viewer (user .id )
633+ .with_owner_viewer_or_started_by_starter (user .id )
651634 .exists ()
652635 )
653636
0 commit comments