diff --git a/greenmine/projects/api.py b/greenmine/projects/api.py index 17e43885..2b461225 100644 --- a/greenmine/projects/api.py +++ b/greenmine/projects/api.py @@ -30,6 +30,12 @@ class ProjectViewSet(ModelCrudViewSet): super(ProjectViewSet, self).pre_save(obj) +class MembershipViewSet(ModelCrudViewSet): + model = models.Membership + serializer_class = serializers.MembershipSerializer + permission_classes = (IsAuthenticated, permissions.MembershipPermission) + + # User Stories commin ViewSets class PointsViewSet(ModelListViewSet): diff --git a/greenmine/projects/permissions.py b/greenmine/projects/permissions.py index 755577a4..6a6b4e5a 100644 --- a/greenmine/projects/permissions.py +++ b/greenmine/projects/permissions.py @@ -12,6 +12,15 @@ class ProjectPermission(BasePermission): path_to_project = [] +class MembershipPermission(BasePermission): + get_permission = "view_membership" + put_permission = "change_membership" + patch_permission = "change_membership" + delete_permission = "delete_membership" + safe_methods = ["HEAD", "OPTIONS"] + path_to_project = ["project"] + + class AttachmentPermission(BasePermission): get_permission = "view_attachment" put_permission = "change_attachment" diff --git a/greenmine/routers.py b/greenmine/routers.py index 6ce3cd72..cb46bba6 100644 --- a/greenmine/routers.py +++ b/greenmine/routers.py @@ -3,7 +3,7 @@ from greenmine.base import routers from greenmine.base.users.api import AuthViewSet, RolesViewSet, UsersViewSet from greenmine.base.searches.api import SearchViewSet -from greenmine.projects.api import ProjectViewSet +from greenmine.projects.api import ProjectViewSet, MembershipViewSet from greenmine.projects.milestones.api import MilestoneViewSet from greenmine.projects.userstories.api import UserStoryViewSet, UserStoryAttachmentViewSet from greenmine.projects.tasks.api import TaskViewSet, TaskAttachmentViewSet @@ -25,6 +25,7 @@ router.register(r"search", SearchViewSet, base_name="search") # greenmine.projects router.register(r"projects", ProjectViewSet, base_name="projects") +router.register(r"memberships", MembershipViewSet, base_name="memberships") # greenmine.projects.milestones router.register(r"milestones", MilestoneViewSet, base_name="milestones")