From 459f32b7475c0ad1c66c8e62672d9097d84aa19d Mon Sep 17 00:00:00 2001 From: Leif Johansson Date: Fri, 11 Nov 2011 10:40:35 +0100 Subject: group part of voot --- coip/apps/opensocial/urls.py | 1 + coip/apps/opensocial/views.py | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/coip/apps/opensocial/urls.py b/coip/apps/opensocial/urls.py index 67b1177..420b424 100644 --- a/coip/apps/opensocial/urls.py +++ b/coip/apps/opensocial/urls.py @@ -9,5 +9,6 @@ urlpatterns = patterns('coip.apps.opensocial.views', url(r'^rpc$',view='rpc'), url(r'^people/(?P.+)$', view='person'), url(r'^people/(?P.+)/(?P.+)$', view='person'), + url(r'^groups/(?P.+)$', view='group'), url(r'^activitystreams/', include('coip.apps.activitystreams.urls')) ) \ No newline at end of file diff --git a/coip/apps/opensocial/views.py b/coip/apps/opensocial/views.py index ff04505..fee2285 100644 --- a/coip/apps/opensocial/views.py +++ b/coip/apps/opensocial/views.py @@ -12,6 +12,7 @@ from django.http import HttpResponseNotFound, HttpResponseBadRequest from coip.apps.name.models import Name import json from django.utils import simplejson +from coip.apps.membership.models import Membership def _resolve_user(request,uid): if uid == '@me': @@ -43,7 +44,7 @@ def _resolve_group(request,user,gid): return None -def _opensocial_response(lst): +def _opensocial_collection(lst): return { "startIndex": 0, "totalResults": len(lst), @@ -65,7 +66,7 @@ def person(request,uid,gid='@self'): user = _resolve_user(request,uid) if not user: - return HttpResponseNotFound() + return HttpResponseNotFound("No such user") name = _resolve_group(request,user,gid) @@ -73,5 +74,15 @@ def person(request,uid,gid='@self'): return HttpResponseNotFound() ##TODO - implement listing people based on group memberships - return json_response(_opensocial_response([user])) + return json_response(_opensocial_collection([user])) +@oauth2_required(scope='opensocial') +def group(request,uid='@me'): + user = _resolve_user(request,uid) + if not user: + return HttpResponseNotFound("No such user") + + memberships = user.memberships.filter(hidden=False) + return json_response(_opensocial_collection([m.name for m in memberships])) + + \ No newline at end of file -- cgit v1.1