Archived
Fancier docs.
This commit is contained in:
1 parent
6e5c3a89c7
commit
9943fb1165
4 files changed
+168
-37
No files matched your search
@@ -1,9 +1,14 @@
|
||||
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
|
||||
from tastypie.resources import Resource
|
||||
from dusken.models import Member, Group
|
||||
|
||||
import logging
|
||||
|
||||
class GroupsByMemberObject(object):
|
||||
def __init__(self):
|
||||
self.member_id = 0
|
||||
@@ -14,24 +19,19 @@ class GroupsByMemberResource(Resource):
|
||||
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' ]
|
||||
}
|
||||
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.member_id
|
||||
kwargs['pk'] = bundle_or_obj.obj.group_id
|
||||
else:
|
||||
kwargs['pk'] = bundle_or_obj.member_id
|
||||
kwargs['pk'] = bundle_or_obj.group_id
|
||||
|
||||
if self._meta.api_name is not None:
|
||||
kwargs['api_name'] = self._meta.api_name
|
||||
@@ -39,41 +39,82 @@ class GroupsByMemberResource(Resource):
|
||||
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.
|
||||
|
||||
def obj_get_list(self, request=None, **kwargs):
|
||||
pass # We can't return lists.
|
||||
member_id = int(kwargs['pk'])
|
||||
member = get_object_or_404(Member, pk=member_id)
|
||||
|
||||
obj = GroupsByMemberObject()
|
||||
obj.member_id = member_id
|
||||
|
||||
#print "\n\n\n" +str(member.groups.all()) +"\n\n\n"
|
||||
for group in member.groups.all():
|
||||
obj.groups.append(group)
|
||||
|
||||
return obj
|
||||
|
||||
def obj_get(self, request=None, **kwargs):
|
||||
member_id = int(kwargs['pk'])
|
||||
member = Member.objects.get(id=member_id)
|
||||
|
||||
if member is None:
|
||||
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 = GroupsByMemberObject()
|
||||
obj.member_id = member.id
|
||||
for group in member.groups.all():
|
||||
obj.groups.append(group.id)
|
||||
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 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 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):
|
||||
pass # We can't update.
|
||||
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):
|
||||
pass # We can't delete lists.
|
||||
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):
|
||||
pass
|
||||
logging.info("Someone tried to rollback, but I can't do that, man, I can't do that!")
|
||||
return
|
||||
+18
-1
@@ -1,10 +1,14 @@
|
||||
from django.contrib.auth.models import User
|
||||
from django.conf.urls import url
|
||||
from django.shortcuts import get_object_or_404
|
||||
from tastypie import fields
|
||||
from tastypie.authorization import Authorization
|
||||
from tastypie.exceptions import ImmediateHttpResponse
|
||||
from tastypie.http import HttpForbidden, HttpNoContent
|
||||
from tastypie.http import HttpForbidden, HttpNoContent, HttpResponse
|
||||
from tastypie.resources import ModelResource, ALL
|
||||
from dusken.models import *
|
||||
from dusken.api.membersbygroup import MembersByGroupResource
|
||||
from dusken.api.groupsbymember import GroupsByMemberResource
|
||||
|
||||
|
||||
class MemberResource(ModelResource):
|
||||
@@ -28,6 +32,19 @@ class MemberResource(ModelResource):
|
||||
'phone_number' : [ 'exact' ],
|
||||
}
|
||||
|
||||
def prepend_urls(self):
|
||||
return [
|
||||
url(r"^(?P<resource_name>%s)/(?P<pk>\d+)/groups/$" % (self._meta.resource_name), self.wrap_view("get_groups"), name="api_get_groups"),
|
||||
]
|
||||
|
||||
def get_groups(self, request, **kwargs):
|
||||
pk = kwargs['pk']
|
||||
member = get_object_or_404(Member, pk=pk)
|
||||
|
||||
#response = HttpResponse(self._meta.serializer.serialize(member, self.determine_format(request)))
|
||||
resource = GroupsByMemberResource()
|
||||
return resource.get_list(request, pk=pk)
|
||||
|
||||
def apply_filters(self, request, applicable_filters):
|
||||
# Extra filters are used for filtering by attributes in User class. Find out if there
|
||||
# are any, and if so, apply them.
|
||||
|
||||
Reference in new issue
Block a user