This repository has been archived on 2025-06-17. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
dusken-prototype/dusken/api/groupsbymember.py
T
2013-05-19 16:19:03 +02:00

80 lines
2.3 KiB
Python

from tastypie import fields
from tastypie.authorization import Authorization
from tastypie.bundle import Bundle
from tastypie.resources import Resource
from dusken.models import Member, Group
class GroupsByMemberObject(object):
def __init__(self):
self.member_id = 0
self.groups = []
class GroupsByMemberResource(Resource):
member_id = fields.IntegerField(attribute='member_id')
groups = fields.ListField(attribute='groups')
class Meta:
resource_name = 'groupsbymember'
object_class = GroupsByMemberObject
list_allowed_methods = [ 'post' ]
detail_allowed_methods = [ 'get', 'delete' ]
authorization = Authorization() # TODO: look up
filtering = {
'member_id' : [ 'exact' ]
}
def detail_uri_kwargs(self, bundle_or_obj):
kwargs = {
'resource_name': self._meta.resource_name,
}
if isinstance(bundle_or_obj, Bundle):
kwargs['pk'] = bundle_or_obj.obj.member_id
else:
kwargs['pk'] = bundle_or_obj.member_id
if self._meta.api_name is not None:
kwargs['api_name'] = self._meta.api_name
return kwargs
def get_object_list(self, request):
pass # We can't return lists.
def obj_get_list(self, request=None, **kwargs):
pass # We can't return lists.
def obj_get(self, request=None, **kwargs):
member_id = int(kwargs['pk'])
member = Member.objects.get(id=member_id)
if member is None:
return None
obj = GroupsByMemberObject()
obj.member_id = member.id
for group in member.groups.all():
obj.groups.append(group.id)
return obj
def obj_create(self, request=None, **kwargs):
group = Group.objects.get(id=group_id)
member = Member.objects.get(id=user_id)
group.user_set.add(member)
def obj_update(self, bundle, request=None, **kwargs):
pass # We can't update.
def obj_delete_list(self, request=None, **kwargs):
pass # We can't delete lists.
def obj_delete(self, request=None, **kwargs):
group = Group.objects.get(id=group_id)
member = Member.objects.get(id=user_id)
group.user_set.remove(member)
def rollback(self, bundles):
pass