diff options
Diffstat (limited to 'coip/apps/activitystreams')
-rw-r--r-- | coip/apps/activitystreams/managers.py | 17 | ||||
-rw-r--r-- | coip/apps/activitystreams/urls.py | 4 | ||||
-rw-r--r-- | coip/apps/activitystreams/views.py | 45 |
3 files changed, 46 insertions, 20 deletions
diff --git a/coip/apps/activitystreams/managers.py b/coip/apps/activitystreams/managers.py deleted file mode 100644 index aaa73f9..0000000 --- a/coip/apps/activitystreams/managers.py +++ /dev/null @@ -1,17 +0,0 @@ -''' -Created on Nov 8, 2011 - -@author: leifj -''' -from actstream.models import ActionManager -from actstream.views import stream -from datetime import datetime - - -class NameActionManager(ActionManager): - - @stream - def name_activities(self, name, time=None): - if time is None: - time = datetime.now() - return name.actor_actions.filter(timestamp__lte = time)
\ No newline at end of file diff --git a/coip/apps/activitystreams/urls.py b/coip/apps/activitystreams/urls.py index e5d0d94..edbab36 100644 --- a/coip/apps/activitystreams/urls.py +++ b/coip/apps/activitystreams/urls.py @@ -5,6 +5,6 @@ Created on Nov 7, 2011 ''' from django.conf.urls.defaults import patterns, url -urlpatterns = patterns('', - url(r'^@any/(?P<id>[0-9]+)', view='coip.apps.activitystreams.urls') +urlpatterns = patterns('coip.apps.activitystreams.views', + url(r'^@any/(?P<id>[0-9]+)/?$', view='name') )
\ No newline at end of file diff --git a/coip/apps/activitystreams/views.py b/coip/apps/activitystreams/views.py index a99bec3..91ba957 100644 --- a/coip/apps/activitystreams/views.py +++ b/coip/apps/activitystreams/views.py @@ -6,9 +6,52 @@ Created on Nov 8, 2011 from django.shortcuts import get_object_or_404 from coip.apps.name.models import Name from coip.multiresponse import json_response +from django_oauth2_lite.decorators import oauth2_required +from actstream.models import Action +from django.http import HttpResponseNotFound +from coip.extensions.templatetags.userdisplay import userdisplay + +def user_to_json(o): + return { + 'objectType': 'person', + 'id': o.username, + 'displayName': userdisplay(o) + } + +def name_to_json(o): + return { + 'objectType': 'group', + 'id': o.id, + 'url': o.url(), + 'displayName': o.shortname() + } + +def object_to_json(o): + if o: + n = o.__class__.__name__ + if n == 'User': + return user_to_json(o) + if n == 'Name': + return name_to_json(o) + else: + return "none" + +def activity_to_json(activity): + r = { + "published": activity.timestamp.isoformat(), + "actor": object_to_json(activity.actor), + "verb": activity.verb, + "object": object_to_json(activity.action_object), + "target": object_to_json(activity.target) + } + return r @oauth2_required(scope='memberships') def name(request,id): name = get_object_or_404(Name,pk=id) # check ownership - return json_response(name.actor_actions.name_activities())
\ No newline at end of file + stream = Action.objects.stream_for_object_as_target(name) + if stream: + return json_response([activity_to_json(activity) for activity in stream]) + else: + return HttpResponseNotFound()
\ No newline at end of file |