summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coip/apps/opensocial/urls.py1
-rw-r--r--coip/apps/opensocial/views.py17
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<uid>.+)$', view='person'),
url(r'^people/(?P<uid>.+)/(?P<gid>.+)$', view='person'),
+ url(r'^groups/(?P<uid>.+)$', 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