Archived
Abstraction <3
This commit is contained in:
1 parent
6451b45c91
commit
bf7783b16e
3 files changed
+121
-202
No files matched your search
@@ -0,0 +1,104 @@
|
||||
from django.shortcuts import get_object_or_404
|
||||
from tastypie import fields
|
||||
from tastypie.authorization import Authorization
|
||||
from tastypie.bundle import Bundle
|
||||
from tastypie.exceptions import ImmediateHttpResponse
|
||||
from tastypie.http import HttpNotFound, HttpAccepted, HttpCreated, HttpResponse, HttpBadRequest, HttpNoContent
|
||||
from tastypie.resources import Resource
|
||||
from dusken.models import Member, Group
|
||||
|
||||
import logging
|
||||
|
||||
class GroupMemberObject(object):
|
||||
def __init__(self):
|
||||
self.member_id = 0
|
||||
self.group_id = []
|
||||
self.is_member = True
|
||||
|
||||
class AbstractGroupMemberResource(Resource):
|
||||
member_id = fields.IntegerField(attribute='member_id')
|
||||
group_id = fields.IntegerField(attribute='group_id')
|
||||
is_member = fields.BooleanField(attribute='is_member')
|
||||
|
||||
class Meta:
|
||||
object_class = GroupMemberObject
|
||||
list_allowed_methods = [ 'get' ]
|
||||
detail_allowed_methods = [ 'get', 'delete', 'post' ]
|
||||
authorization = Authorization() # TODO: Obvious
|
||||
|
||||
def detail_uri_kwargs(self, bundle_or_obj):
|
||||
kwargs = {
|
||||
'resource_name': self._meta.resource_name,
|
||||
}
|
||||
|
||||
return kwargs
|
||||
|
||||
def get_object_list(self, request):
|
||||
return self.obj_get_list(request)
|
||||
|
||||
|
||||
def obj_get_list(self, request=None, **kwargs):
|
||||
raise NotImplementedError
|
||||
|
||||
def obj_get(self, request=None, **kwargs):
|
||||
member_id = int(kwargs['member_id'])
|
||||
member = get_object_or_404(Member, pk=member_id)
|
||||
|
||||
group_id = int(kwargs['group_id'])
|
||||
group = get_object_or_404(Group, pk=group_id)
|
||||
|
||||
obj = GroupMemberObject()
|
||||
obj.member_id = member_id
|
||||
obj.group_id = group_id
|
||||
|
||||
if self._member_has_group(member, group):
|
||||
obj.is_member = True
|
||||
else:
|
||||
obj.is_member = False
|
||||
|
||||
return obj
|
||||
|
||||
def post_detail(self, request=None, **kwargs):
|
||||
"""
|
||||
Creates a new relationship between a member and a group.
|
||||
"""
|
||||
member_id = int(kwargs['member_id'])
|
||||
member = get_object_or_404(Member, pk=member_id)
|
||||
|
||||
group_id = int(kwargs['group_id'])
|
||||
group = get_object_or_404(Group, pk=group_id)
|
||||
|
||||
if self._member_has_group(member, group):
|
||||
# TODO: Check for a correct status code to return in this case.
|
||||
return HttpCreated()
|
||||
|
||||
member.groups.add(group)
|
||||
member.save()
|
||||
|
||||
return HttpCreated()
|
||||
|
||||
def obj_update(self, bundle, request=None, **kwargs):
|
||||
logging.info("Someone tried to obj_update, but I can't do that, man, I can't do that!")
|
||||
return # We can't update.
|
||||
|
||||
def obj_delete_list(self, request=None, **kwargs):
|
||||
logging.info("Someone tried to obj_delete_list, but I can't do that, man, I can't do that!")
|
||||
return # We can't delete lists.
|
||||
|
||||
def obj_delete(self, request=None, **kwargs):
|
||||
member_id = int(kwargs['member_id'])
|
||||
member = get_object_or_404(Member, pk=member_id)
|
||||
|
||||
group_id = int(kwargs['group_id'])
|
||||
group = get_object_or_404(Group, pk=group_id)
|
||||
|
||||
group.user_set.remove(member)
|
||||
return HttpNoContent()
|
||||
|
||||
def rollback(self, bundles):
|
||||
logging.info("Someone tried to rollback, but I can't do that, man, I can't do that!")
|
||||
return
|
||||
|
||||
def _member_has_group(self, member, group):
|
||||
return member.groups.filter(id=group.id).count() != 0
|
||||
|
||||
@@ -1,113 +1,20 @@
|
||||
from django.shortcuts import get_object_or_404
|
||||
from tastypie import fields
|
||||
from tastypie.authorization import Authorization
|
||||
from tastypie.bundle import Bundle
|
||||
from tastypie.exceptions import ImmediateHttpResponse
|
||||
from tastypie.http import HttpNotFound, HttpAccepted, HttpCreated, HttpResponse, HttpBadRequest, HttpNoContent
|
||||
from tastypie.resources import Resource
|
||||
from dusken.api.abstract_groupmember import GroupMemberObject, AbstractGroupMemberResource
|
||||
from dusken.models import Member, Group
|
||||
|
||||
import logging
|
||||
|
||||
class GroupByMemberObject(object):
|
||||
def __init__(self):
|
||||
self.member_id = 0
|
||||
self.group_id = []
|
||||
self.is_member = True
|
||||
|
||||
class GroupsByMemberResource(Resource):
|
||||
member_id = fields.IntegerField(attribute='member_id')
|
||||
group_id = fields.IntegerField(attribute='group_id')
|
||||
is_member = fields.BooleanField(attribute='is_member')
|
||||
|
||||
class Meta:
|
||||
object_class = GroupByMemberObject
|
||||
list_allowed_methods = [ 'get' ]
|
||||
detail_allowed_methods = [ 'get', 'delete', 'post' ]
|
||||
authorization = Authorization() # TODO: Obvious
|
||||
|
||||
def detail_uri_kwargs(self, bundle_or_obj):
|
||||
kwargs = {
|
||||
'resource_name': self._meta.resource_name,
|
||||
}
|
||||
|
||||
return kwargs
|
||||
|
||||
def get_object_list(self, request):
|
||||
return self.obj_get_list(request)
|
||||
|
||||
|
||||
class GroupsByMemberResource(AbstractGroupMemberResource):
|
||||
def obj_get_list(self, request=None, **kwargs):
|
||||
member_id = int(kwargs['member_id'])
|
||||
member = get_object_or_404(Member, pk=member_id)
|
||||
groups = []
|
||||
for group in member.groups.all():
|
||||
obj = GroupByMemberObject
|
||||
obj.member_id = member_id
|
||||
obj = GroupMemberObject()
|
||||
obj.member_id = member.id
|
||||
obj.group_id = group.id
|
||||
obj.is_member = True
|
||||
groups.append(obj)
|
||||
|
||||
return groups
|
||||
|
||||
def obj_get(self, request=None, **kwargs):
|
||||
member_id = int(kwargs['member_id'])
|
||||
member = get_object_or_404(Member, pk=member_id)
|
||||
|
||||
group_id = int(kwargs['group_id'])
|
||||
group = get_object_or_404(Group, pk=group_id)
|
||||
|
||||
obj = GroupByMemberObject()
|
||||
obj.member_id = member_id
|
||||
obj.group_id = group_id
|
||||
|
||||
if self.__member_has_group(member, group):
|
||||
obj.is_member = True
|
||||
else:
|
||||
obj.is_member = False
|
||||
|
||||
return obj
|
||||
|
||||
def post_detail(self, request=None, **kwargs):
|
||||
"""
|
||||
Creates a new relationship between a member and a group.
|
||||
"""
|
||||
member_id = int(kwargs['member_id'])
|
||||
member = get_object_or_404(Member, pk=member_id)
|
||||
|
||||
group_id = int(kwargs['group_id'])
|
||||
group = get_object_or_404(Group, pk=group_id)
|
||||
|
||||
if self.__member_has_group(member, group):
|
||||
# TODO: Check for a correct status code to return in this case.
|
||||
return HttpCreated()
|
||||
|
||||
member.groups.add(group)
|
||||
member.save()
|
||||
|
||||
return HttpCreated()
|
||||
|
||||
def obj_update(self, bundle, request=None, **kwargs):
|
||||
logging.info("Someone tried to obj_update, but I can't do that, man, I can't do that!")
|
||||
return # We can't update.
|
||||
|
||||
def obj_delete_list(self, request=None, **kwargs):
|
||||
logging.info("Someone tried to obj_delete_list, but I can't do that, man, I can't do that!")
|
||||
return # We can't delete lists.
|
||||
|
||||
def obj_delete(self, request=None, **kwargs):
|
||||
member_id = int(kwargs['member_id'])
|
||||
member = get_object_or_404(Member, pk=member_id)
|
||||
|
||||
group_id = int(kwargs['group_id'])
|
||||
group = get_object_or_404(Group, pk=group_id)
|
||||
|
||||
group.user_set.remove(member)
|
||||
return HttpNoContent()
|
||||
|
||||
def rollback(self, bundles):
|
||||
logging.info("Someone tried to rollback, but I can't do that, man, I can't do that!")
|
||||
return
|
||||
|
||||
def __member_has_group(self, member, group):
|
||||
return member.groups.filter(id=group.id).count() != 0
|
||||
+13
-105
@@ -1,112 +1,20 @@
|
||||
from tastypie import fields
|
||||
from tastypie.authorization import Authorization
|
||||
from tastypie.bundle import Bundle
|
||||
from tastypie.exceptions import ImmediateHttpResponse
|
||||
from tastypie.http import HttpNotFound, HttpAccepted, HttpCreated, HttpResponse, HttpBadRequest
|
||||
from tastypie.resources import Resource
|
||||
from django.shortcuts import get_object_or_404
|
||||
from dusken.api.abstract_groupmember import GroupMemberObject, AbstractGroupMemberResource
|
||||
from dusken.models import Member, Group
|
||||
|
||||
import logging
|
||||
|
||||
class MembersByGroupObject(object):
|
||||
def __init__(self):
|
||||
self.group_id = 0
|
||||
self.members = []
|
||||
|
||||
class MembersByGroupResource(Resource):
|
||||
group_id = fields.IntegerField(attribute='group_id')
|
||||
members = fields.ListField(attribute='members')
|
||||
|
||||
class Meta:
|
||||
resource_name = 'membersbygroup'
|
||||
object_class = MembersByGroupObject
|
||||
list_allowed_methods = []
|
||||
detail_allowed_methods = [ 'get', 'delete', 'post' ]
|
||||
authorization = Authorization() # TODO: Obvious
|
||||
|
||||
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.group_id
|
||||
else:
|
||||
kwargs['pk'] = bundle_or_obj.group_id
|
||||
|
||||
if self._meta.api_name is not None:
|
||||
kwargs['api_name'] = self._meta.api_name
|
||||
|
||||
return kwargs
|
||||
|
||||
def get_object_list(self, request):
|
||||
logging.info("Someone tried to get_object_list, but I can't do that, man, I can't do that!")
|
||||
pass # We can't return lists.
|
||||
|
||||
class MembersByGroupResource(AbstractGroupMemberResource):
|
||||
def obj_get_list(self, request=None, **kwargs):
|
||||
logging.info("Someone tried to obj_get_list, but I can't do that, man, I can't do that!")
|
||||
pass # We can't return lists.
|
||||
group_id = int(kwargs['group_id'])
|
||||
group = get_object_or_404(Group, pk=group_id)
|
||||
members = []
|
||||
for member in group.user_set.all():
|
||||
obj = GroupMemberObject()
|
||||
obj.member_id = member.id
|
||||
obj.group_id = group.id
|
||||
obj.is_member = True
|
||||
members.append(obj)
|
||||
|
||||
def obj_get(self, request=None, **kwargs):
|
||||
keys = kwargs['pk'].split("/")
|
||||
group_id = int(keys[0])
|
||||
group = Group.objects.get(id=group_id)
|
||||
return members
|
||||
|
||||
member = None
|
||||
if len(keys) > 1:
|
||||
member_id = int(keys[1])
|
||||
member = Member.objects.get(id=member_id)
|
||||
|
||||
if member is None:
|
||||
return None
|
||||
|
||||
if member.groups.filter(name=group.name).count() == 0:
|
||||
raise ImmediateHttpResponse(HttpNotFound())
|
||||
|
||||
if group is None:
|
||||
return None
|
||||
|
||||
obj = MembersByGroupObject()
|
||||
obj.group_id = group.id
|
||||
|
||||
if member is None:
|
||||
for member in group.user_set.all():
|
||||
obj.members.append(member.id)
|
||||
else:
|
||||
obj.members.append(member.id)
|
||||
|
||||
return obj
|
||||
|
||||
def post_detail(self, request=None, **kwargs):
|
||||
"""
|
||||
Creates a new relationship be.
|
||||
"""
|
||||
|
||||
keys = kwargs['pk'].split('/')
|
||||
if len(keys) < 2:
|
||||
raise ImmediateHttpResponse(HttpBadRequest())
|
||||
|
||||
member_id = keys[0]
|
||||
group_id = keys[1]
|
||||
|
||||
|
||||
logging.error("Calling create function with parameters {0}".format(str(kwargs)))
|
||||
return HttpCreated()
|
||||
|
||||
def obj_update(self, bundle, request=None, **kwargs):
|
||||
logging.info("Someone tried to obj_update, but I can't do that, man, I can't do that!")
|
||||
return # We can't update.
|
||||
|
||||
def obj_delete_list(self, request=None, **kwargs):
|
||||
logging.info("Someone tried to obj_delete_list, but I can't do that, man, I can't do that!")
|
||||
return # We can't delete lists.
|
||||
|
||||
def obj_delete(self, request=None, **kwargs):
|
||||
print str(kwargs +"\n\n\n\n")
|
||||
group = Group.objects.get(id=group_id)
|
||||
member = Member.objects.get(id=user_id)
|
||||
group.user_set.remove(member)
|
||||
|
||||
|
||||
def rollback(self, bundles):
|
||||
logging.info("Someone tried to rollback, but I can't do that, man, I can't do that!")
|
||||
return
|
||||
Reference in new issue
Block a user