Skip to content

Commit

Permalink
Adding end points for getting projects by slug, tasks, userstories an…
Browse files Browse the repository at this point in the history
…d issues by ref
  • Loading branch information
superalex committed Dec 23, 2014
1 parent 88a1cd3 commit bb40c52
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 0 deletions.
6 changes: 6 additions & 0 deletions taiga/projects/api.py
Expand Up @@ -60,6 +60,12 @@ def get_queryset(self):
qs = models.Project.objects.all()
return attach_votescount_to_queryset(qs, as_field="stars_count")

@list_route(methods=["GET"])
def by_slug(self, request):
slug = request.QUERY_PARAMS.get("slug", None)
project = get_object_or_404(models.Project, slug=slug)
return self.retrieve(request, pk=project.pk)

@detail_route(methods=["GET", "PATCH"])
def modules(self, request, pk=None):
project = self.get_object()
Expand Down
7 changes: 7 additions & 0 deletions taiga/projects/issues/api.py
Expand Up @@ -153,6 +153,13 @@ def pre_conditions_on_save(self, obj):
if obj.type and obj.type.project != obj.project:
raise exc.PermissionDenied(_("You don't have permissions to set this type to this issue."))

@list_route(methods=["GET"])
def by_ref(self, request):
ref = request.QUERY_PARAMS.get("ref", None)
project_id = request.QUERY_PARAMS.get("project", None)
issue = get_object_or_404(models.Issue, ref=ref, project_id=project_id)
return self.retrieve(request, pk=issue.pk)

@list_route(methods=["POST"])
def bulk_create(self, request, **kwargs):
serializer = serializers.IssuesBulkSerializer(data=request.DATA)
Expand Down
1 change: 1 addition & 0 deletions taiga/projects/permissions.py
Expand Up @@ -40,6 +40,7 @@ def check_permissions(self, request, view, obj=None):

class ProjectPermission(TaigaResourcePermission):
retrieve_perms = HasProjectPerm('view_project')
by_slug_perms = HasProjectPerm('view_project')
create_perms = IsAuthenticated()
update_perms = IsProjectOwner()
partial_update_perms = IsProjectOwner()
Expand Down
4 changes: 4 additions & 0 deletions taiga/projects/serializers.py
Expand Up @@ -237,6 +237,7 @@ class ProjectSerializer(ModelSerializer):
my_permissions = serializers.SerializerMethodField("get_my_permissions")
i_am_owner = serializers.SerializerMethodField("get_i_am_owner")
tags_colors = TagsColorsField(required=False)
users = serializers.SerializerMethodField("get_users")

class Meta:
model = models.Project
Expand All @@ -257,6 +258,9 @@ def get_i_am_owner(self, obj):
return is_project_owner(self.context["request"].user, obj)
return False

def get_users(self, obj):
return UserSerializer(obj.members.all(), many=True).data

def validate_total_milestones(self, attrs, source):
"""
Check that total_milestones is not null, it's an optional parameter but
Expand Down
7 changes: 7 additions & 0 deletions taiga/projects/tasks/api.py
Expand Up @@ -64,6 +64,13 @@ def pre_conditions_on_save(self, obj):
if obj.milestone and obj.user_story and obj.milestone != obj.user_story.milestone:
raise exc.WrongArguments(_("You don't have permissions for add/modify this task."))

@list_route(methods=["GET"])
def by_ref(self, request):
ref = request.QUERY_PARAMS.get("ref", None)
project_id = request.QUERY_PARAMS.get("project", None)
task = get_object_or_404(models.Task, ref=ref, project_id=project_id)
return self.retrieve(request, pk=task.pk)

@list_route(methods=["POST"])
def bulk_create(self, request, **kwargs):
serializer = serializers.TasksBulkSerializer(data=request.DATA)
Expand Down
7 changes: 7 additions & 0 deletions taiga/projects/userstories/api.py
Expand Up @@ -95,6 +95,13 @@ def post_save(self, obj, created=False):

super().post_save(obj, created)

@list_route(methods=["GET"])
def by_ref(self, request):
ref = request.QUERY_PARAMS.get("ref", None)
project_id = request.QUERY_PARAMS.get("project", None)
userstory = get_object_or_404(models.UserStory, ref=ref, project_id=project_id)
return self.retrieve(request, pk=userstory.pk)

@list_route(methods=["POST"])
def bulk_create(self, request, **kwargs):
serializer = serializers.UserStoriesBulkSerializer(data=request.DATA)
Expand Down
7 changes: 7 additions & 0 deletions taiga/projects/wiki/api.py
Expand Up @@ -45,6 +45,13 @@ class WikiViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin,
filter_backends = (filters.CanViewWikiPagesFilterBackend,)
filter_fields = ("project", "slug")

@list_route(methods=["GET"])
def by_slug(self, request):
slug = request.QUERY_PARAMS.get("slug", None)
project_id = request.QUERY_PARAMS.get("project", None)
wiki_page = get_object_or_404(models.WikiPage, slug=slug, project_id=project_id)
return self.retrieve(request, pk=wiki_page.pk)

@list_route(methods=["POST"])
def render(self, request, **kwargs):
content = request.DATA.get("content", None)
Expand Down

0 comments on commit bb40c52

Please sign in to comment.