This repository has been archived on 2026-10-23. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
2014-01-26 18:50:57 +01:00

43 lines
1.7 KiB
Python

from tastypie import fields
from tastypie.resources import ModelResource
from dusken.authentication import OAuth20Authentication
from dusken.authorization import MyDjangoAuthorization
from dusken.models import Member
from dusken.api.division import DivisionResource
from dusken.api.membership import MembershipResource
from dusken.api.address import AddressResource
from dusken.api.group import GroupResource
class MeResource(ModelResource):
"""
This class provides following endpoint:
/api/v1/me/
"""
groups = fields.ToManyField(GroupResource, 'groups', full=True, null=True)
divisions = fields.ToManyField(DivisionResource, 'division_set', full=True, null=True)
memberships = fields.ToManyField(MembershipResource, 'membership_set', full=True, null=True)
address = fields.ForeignKey(AddressResource, 'address', full=True, null=True)
class Meta:
queryset = Member.objects.all()
resource_name = 'me'
list_allowed_methods = [ 'get' ]
detail_allowed_methods = [ 'get']
authentication = OAuth20Authentication() # Who are you?
authorization = MyDjangoAuthorization() # What are you allowed to do?
excludes = [ 'date_joined', 'password', 'is_active', 'is_staff', 'is_superuser', 'last_login' ]
def get_object_list(self, request):
# Only return the authenticated user's member object
return super(MeResource, self).get_object_list(request).filter(pk=request.user.id)
def dehydrate(self, bundle):
"""
Catches GET requests and adds more data.
"""
bundle.data['has_valid_membership'] = bundle.obj.has_valid_membership()
return bundle