From 1d701a7cada850a13bab49ce09e677b4594557c8 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Mon, 6 Apr 2015 12:35:05 +0200 Subject: [PATCH] Updating timeline API --- taiga/routers.py | 2 ++ taiga/timeline/api.py | 23 ++++++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/taiga/routers.py b/taiga/routers.py index f167f9fd..968c6354 100644 --- a/taiga/routers.py +++ b/taiga/routers.py @@ -150,9 +150,11 @@ router.register(r"history/wiki", WikiHistory, base_name="wiki-history") # Timelines +from taiga.timeline.api import ProfileTimeline from taiga.timeline.api import UserTimeline from taiga.timeline.api import ProjectTimeline +router.register(r"timeline/profile", ProfileTimeline, base_name="profile-timeline") router.register(r"timeline/user", UserTimeline, base_name="user-timeline") router.register(r"timeline/project", ProjectTimeline, base_name="project-timeline") diff --git a/taiga/timeline/api.py b/taiga/timeline/api.py index 4845b82a..851a693f 100644 --- a/taiga/timeline/api.py +++ b/taiga/timeline/api.py @@ -18,14 +18,14 @@ from django.contrib.contenttypes.models import ContentType from taiga.base import response from taiga.base.api.utils import get_object_or_404 -from taiga.base.api import GenericViewSet +from taiga.base.api import ReadOnlyListViewSet from . import serializers from . import service from . import permissions -class TimelineViewSet(GenericViewSet): +class TimelineViewSet(ReadOnlyListViewSet): serializer_class = serializers.TimelineSerializer content_type = None @@ -57,19 +57,36 @@ class TimelineViewSet(GenericViewSet): def list(self, request): return response.NotFound() + def get_timeline(self, obj): + raise NotImplementedError + def retrieve(self, request, pk): obj = self.get_object() self.check_permissions(request, "retrieve", obj) - qs = service.get_timeline(obj) + qs = self.get_timeline(obj) return self.response_for_queryset(qs) +class ProfileTimeline(TimelineViewSet): + content_type = "users.user" + permission_classes = (permissions.UserTimelinePermission,) + + def get_timeline(self, user): + return service.get_profile_timeline(user, accessing_user=self.request.user) + + class UserTimeline(TimelineViewSet): content_type = "users.user" permission_classes = (permissions.UserTimelinePermission,) + def get_timeline(self, user): + return service.get_user_timeline(user, accessing_user=self.request.user) + class ProjectTimeline(TimelineViewSet): content_type = "projects.project" permission_classes = (permissions.ProjectTimelinePermission,) + + def get_timeline(self, project): + return service.get_project_timeline(project, accessing_user=self.request.user)