Add patch permission.

remotes/origin/enhancement/email-actions
Andrey Antukh 2013-04-01 12:21:39 +02:00
parent e10bb00f8a
commit 4e56c0b431
3 changed files with 19 additions and 0 deletions

View File

@ -16,6 +16,7 @@ def has_project_perm(user, project, perm):
class BaseDetailPermission(permissions.BasePermission): class BaseDetailPermission(permissions.BasePermission):
get_permission = None get_permission = None
put_permission = None put_permission = None
patch_permission = None
delete_permission = None delete_permission = None
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = [] path_to_project = []
@ -37,6 +38,9 @@ class BaseDetailPermission(permissions.BasePermission):
elif request.method == "DELETE": elif request.method == "DELETE":
return has_project_perm(request.user, project_obj, self.delete_permission) return has_project_perm(request.user, project_obj, self.delete_permission)
elif request.method == "PATCH":
return has_project_perm(request.user, project_obj, self.patch_permission)
return False return False

View File

@ -229,6 +229,7 @@ class UserStory(models.Model):
('can_comment_userstory', 'Can comment user stories'), ('can_comment_userstory', 'Can comment user stories'),
('can_view_userstory', 'Can view user stories'), ('can_view_userstory', 'Can view user stories'),
('can_change_owned_userstory', 'Can modify owned user stories'), ('can_change_owned_userstory', 'Can modify owned user stories'),
('can_change_userstory', 'Can modify user stories'),
('can_add_userstory_to_milestones', 'Can add user stories to milestones'), ('can_add_userstory_to_milestones', 'Can add user stories to milestones'),
) )

View File

@ -3,6 +3,7 @@ from greenmine.base.permissions import BaseDetailPermission
class ProjectDetailPermission(BaseDetailPermission): class ProjectDetailPermission(BaseDetailPermission):
get_permission = "can_view_project" get_permission = "can_view_project"
put_permission = "can_change_project" put_permission = "can_change_project"
patch_permission = "can_change_project"
delete_permission = "can_delete_project" delete_permission = "can_delete_project"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = [] path_to_project = []
@ -10,6 +11,7 @@ class ProjectDetailPermission(BaseDetailPermission):
class MilestoneDetailPermission(BaseDetailPermission): class MilestoneDetailPermission(BaseDetailPermission):
get_permission = "can_view_milestone" get_permission = "can_view_milestone"
put_permission = "can_change_milestone" put_permission = "can_change_milestone"
patch_permission = "can_change_milestone"
delete_permission = "can_delete_milestone" delete_permission = "can_delete_milestone"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['project'] path_to_project = ['project']
@ -17,6 +19,7 @@ class MilestoneDetailPermission(BaseDetailPermission):
class UserStoryDetailPermission(BaseDetailPermission): class UserStoryDetailPermission(BaseDetailPermission):
get_permission = "can_view_userstory" get_permission = "can_view_userstory"
put_permission = "can_change_userstory" put_permission = "can_change_userstory"
patch_permission = "can_change_userstory"
delete_permission = "can_delete_userstory" delete_permission = "can_delete_userstory"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['project'] path_to_project = ['project']
@ -24,6 +27,7 @@ class UserStoryDetailPermission(BaseDetailPermission):
class TaskDetailPermission(BaseDetailPermission): class TaskDetailPermission(BaseDetailPermission):
get_permission = "can_view_task" get_permission = "can_view_task"
put_permission = "can_change_task" put_permission = "can_change_task"
patch_permission = "can_change_task"
delete_permission = "can_delete_task" delete_permission = "can_delete_task"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['project'] path_to_project = ['project']
@ -31,6 +35,7 @@ class TaskDetailPermission(BaseDetailPermission):
class IssueDetailPermission(BaseDetailPermission): class IssueDetailPermission(BaseDetailPermission):
get_permission = "can_view_issue" get_permission = "can_view_issue"
put_permission = "can_change_issue" put_permission = "can_change_issue"
patch_permission = "can_change_issue"
delete_permission = "can_delete_issue" delete_permission = "can_delete_issue"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['project'] path_to_project = ['project']
@ -38,6 +43,7 @@ class IssueDetailPermission(BaseDetailPermission):
class ChangeDetailPermission(BaseDetailPermission): class ChangeDetailPermission(BaseDetailPermission):
get_permission = "can_view_change" get_permission = "can_view_change"
put_permission = "can_change_change" put_permission = "can_change_change"
patch_permission = "can_change_change"
delete_permission = "can_delete_change" delete_permission = "can_delete_change"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['project'] path_to_project = ['project']
@ -45,6 +51,7 @@ class ChangeDetailPermission(BaseDetailPermission):
class ChangeAttachmentDetailPermission(BaseDetailPermission): class ChangeAttachmentDetailPermission(BaseDetailPermission):
get_permission = "can_view_changeattachment" get_permission = "can_view_changeattachment"
put_permission = "can_change_changeattachment" put_permission = "can_change_changeattachment"
patch_permission = "can_change_changeattachment"
delete_permission = "can_delete_changeattachment" delete_permission = "can_delete_changeattachment"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['change', 'project'] path_to_project = ['change', 'project']
@ -52,6 +59,7 @@ class ChangeAttachmentDetailPermission(BaseDetailPermission):
class SeverityDetailPermission(BaseDetailPermission): class SeverityDetailPermission(BaseDetailPermission):
get_permission = "can_view_severity" get_permission = "can_view_severity"
put_permission = "can_severity_severity" put_permission = "can_severity_severity"
patch_permission = "can_severity_severity"
delete_permission = "can_delete_severity" delete_permission = "can_delete_severity"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['project'] path_to_project = ['project']
@ -59,6 +67,7 @@ class SeverityDetailPermission(BaseDetailPermission):
class IssueStatusDetailPermission(BaseDetailPermission): class IssueStatusDetailPermission(BaseDetailPermission):
get_permission = "can_view_issuestatus" get_permission = "can_view_issuestatus"
put_permission = "can_severity_issuestatus" put_permission = "can_severity_issuestatus"
patch_permission = "can_severity_issuestatus"
delete_permission = "can_delete_issuestatus" delete_permission = "can_delete_issuestatus"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['project'] path_to_project = ['project']
@ -66,6 +75,7 @@ class IssueStatusDetailPermission(BaseDetailPermission):
class TaskStatusDetailPermission(BaseDetailPermission): class TaskStatusDetailPermission(BaseDetailPermission):
get_permission = "can_view_taskstatus" get_permission = "can_view_taskstatus"
put_permission = "can_severity_taskstatus" put_permission = "can_severity_taskstatus"
patch_permission = "can_severity_taskstatus"
delete_permission = "can_delete_taskstatus" delete_permission = "can_delete_taskstatus"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['project'] path_to_project = ['project']
@ -73,6 +83,7 @@ class TaskStatusDetailPermission(BaseDetailPermission):
class UserStoryStatusDetailPermission(BaseDetailPermission): class UserStoryStatusDetailPermission(BaseDetailPermission):
get_permission = "can_view_userstorystatus" get_permission = "can_view_userstorystatus"
put_permission = "can_severity_userstorystatus" put_permission = "can_severity_userstorystatus"
patch_permission = "can_severity_userstorystatus"
delete_permission = "can_delete_userstorystatus" delete_permission = "can_delete_userstorystatus"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['project'] path_to_project = ['project']
@ -80,6 +91,7 @@ class UserStoryStatusDetailPermission(BaseDetailPermission):
class PriorityDetailPermission(BaseDetailPermission): class PriorityDetailPermission(BaseDetailPermission):
get_permission = "can_view_priority" get_permission = "can_view_priority"
put_permission = "can_severity_priority" put_permission = "can_severity_priority"
patch_permission = "can_severity_priority"
delete_permission = "can_delete_priority" delete_permission = "can_delete_priority"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['project'] path_to_project = ['project']
@ -87,6 +99,7 @@ class PriorityDetailPermission(BaseDetailPermission):
class IssueTypeDetailPermission(BaseDetailPermission): class IssueTypeDetailPermission(BaseDetailPermission):
get_permission = "can_view_issuetype" get_permission = "can_view_issuetype"
put_permission = "can_severity_issuetype" put_permission = "can_severity_issuetype"
patch_permission = "can_severity_issuetype"
delete_permission = "can_delete_issuetype" delete_permission = "can_delete_issuetype"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['project'] path_to_project = ['project']
@ -94,6 +107,7 @@ class IssueTypeDetailPermission(BaseDetailPermission):
class PointsDetailPermission(BaseDetailPermission): class PointsDetailPermission(BaseDetailPermission):
get_permission = "can_view_points" get_permission = "can_view_points"
put_permission = "can_severity_points" put_permission = "can_severity_points"
patch_permission = "can_severity_points"
delete_permission = "can_delete_points" delete_permission = "can_delete_points"
safe_methods = ['HEAD', 'OPTIONS'] safe_methods = ['HEAD', 'OPTIONS']
path_to_project = ['project'] path_to_project = ['project']