diff options
Diffstat (limited to 'coip/apps/opensocial/people.py')
-rw-r--r-- | coip/apps/opensocial/people.py | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/coip/apps/opensocial/people.py b/coip/apps/opensocial/people.py deleted file mode 100644 index a52fb9d..0000000 --- a/coip/apps/opensocial/people.py +++ /dev/null @@ -1,134 +0,0 @@ -''' -Created on Jun 19, 2011 - -@author: leifj -''' -from django.contrib.auth.models import User -from coip.apps.opensocial.serializer import OpenSocialSerializer -from django.conf.urls.defaults import url -from coip.apps.membership.models import Membership -from tastypie.fields import ToOneField -from tastypie.utils.urls import trailing_slash -from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned -from tastypie.http import HttpGone, HttpMultipleChoices -from coip.apps.name.models import Name -from tastypie.constants import ALL_WITH_RELATIONS -from django.shortcuts import get_object_or_404 -import logging -from pprint import pformat -from coip.apps.opensocial.common import OpenSocialResource -from tastypie.authorization import DjangoAuthorization - -class GroupResource(OpenSocialResource): - - class Meta: - queryset = Name.objects.all() - serializer = OpenSocialSerializer() - resource_name = 'groups' - fields = ['short','description','id'] - #authentication = OAuthAuthentication() - #authorization = DjangoAuthorization() - - def override_urls(self): - return [ - url(r"^(?P<resource_name>%s)/(?P<username>[\@\w\d_.-:]+)/(?P<name_id>[\d]+)%s?" % (self._meta.resource_name,trailing_slash()), - self.wrap_view('list_memberships'), name="api_list_memberships"), - url(r"^(?P<resource_name>%s)/(?P<username>[\@\w\d_.-:]+)%s" % (self._meta.resource_name,trailing_slash()), - self.wrap_view('list_memberships'), name="api_list_memberships"), - url(r"^(?P<resource_name>%s)%s" % (self._meta.resource_name,trailing_slash()), - self.wrap_view('list_memberships'), name="api_list_memberships"), - ] - - def list_memberships(self, request, **kwargs): - logging.debug(pformat(kwargs)) - try: - user = self.cached_obj_get(request=request, username=kwargs['username']) - logging.debug(pformat(user)) - except ObjectDoesNotExist: - return HttpGone() - except MultipleObjectsReturned: - return HttpMultipleChoices("More than one resource is found at this URI.") - - group_resource = GroupResource() - if kwargs.has_key('name_id'): - name_id = kwargs.pop('name_id') - return group_resource.get_list(request=request, pk=name_id) - else: - - return - - - def dispatch(self, request_type, request, **kwargs): - if kwargs.has_key('username') and kwargs['username'] == '@me': - kwargs['username'] = request.user.username - return super(GroupResource, self).dispatch(request_type, request, **kwargs) - -class MembershipResource(OpenSocialResource): - - user = ToOneField("coip.apps.opensocial.people.PersonResource",'user',full=True) - name = ToOneField("coip.apps.opensocial.people.GroupResource",'name',full=False) - - class Meta: - queryset = Membership.objects.all() - serializer = OpenSocialSerializer() - #authentication = OAuthAuthentication() - #authorization = DjangoAuthorization() - resource_name = 'membership' - fields = ['user','name'] - filtering = { - 'name': ALL_WITH_RELATIONS - } - - def dehydrate(self,bundle): - bundle = super(MembershipResource,self).dehydrate(bundle) - del bundle.data['resource_uri'] - logging.debug(pformat(bundle)) - return bundle - -class PersonResource(OpenSocialResource): - - #memberships = ToManyField(MembershipResource,'memberships',full=True) - - class Meta: - queryset = User.objects.all() - #authentication = OAuthAuthentication() - #authorization = DjangoAuthorization() - fields = ['username'] - resource_name = 'people' - serializer = OpenSocialSerializer() - - def override_urls(self): - return [ - url(r"^(?P<resource_name>%s)/(?P<username>[\@\w\d_.-:]+)/(?P<name_id>[\d]+)%s?" % (self._meta.resource_name,trailing_slash()), - self.wrap_view('list_memberships'), name="api_list_memberships"), - url(r"^(?P<resource_name>%s)/(?P<username>[\@\w\d_.-:]+)(?:/\@self)?%s" % (self._meta.resource_name,trailing_slash()), - self.wrap_view('dispatch_detail'), name="api_dispatch_detail"), - ] - - def list_memberships(self, request, **kwargs): - logging.debug(pformat(kwargs)) - try: - user = self.cached_obj_get(request=request, username=kwargs['username']) - logging.debug(pformat(user)) - except ObjectDoesNotExist: - return HttpGone() - except MultipleObjectsReturned: - return HttpMultipleChoices("More than one resource is found at this URI.") - - people_resource = PersonResource() - name_id = kwargs.pop('name_id') - name = get_object_or_404(Name,id=name_id) - return people_resource.get_list(request=request, memberships__name=name) - - def dispatch(self, request_type, request, **kwargs): - if kwargs.has_key('username') and kwargs['username'] == '@me': - kwargs['username'] = request.user.username - return super(PersonResource, self).dispatch(request_type, request, **kwargs) - - def dehydrate(self,bundle): - bundle = super(PersonResource,self).dehydrate(bundle) - bundle.data['id'] = bundle.data['username'] - bundle.data['displayName'] = bundle.obj.get_profile().display_name - del bundle.data['resource_uri'] - del bundle.data['username'] - return bundle
\ No newline at end of file |