Skip to content

Commit 5c6a591

Browse files
authored
Merge pull request #194 from pneumaticapp/backend/workflow/45586__provide_access_sections_template_starters
45586 backend [ workflow ] Provide access to sections for Template Starters
2 parents 85d632c + 9fd3c49 commit 5c6a591

27 files changed

Lines changed: 1309 additions & 536 deletions

File tree

backend/src/processes/permissions.py

Lines changed: 19 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
10581
class TemplateFieldsPermission(BasePermission):
10682

10783
""" Allow access for template owners, viewers or workflow members """
@@ -140,18 +116,17 @@ def has_permission(self, request, view):
140116

141117
class 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

437416
class 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

476459
class 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

Comments
 (0)