Fixed creation of relationships with POST-requests for /member/<id>/groups/<id>/

This commit is contained in:
Robert Kolner committed 2013-07-15 14:55:26 +02:00
1 parent 2d997156b9
commit 56cbf16ac2
2 files changed
+21 -15

No files matched your search

+17 -11
View File
@@ -61,27 +61,30 @@ class GroupsByMemberResource(Resource):
obj.member_id = member_id
obj.group_id = group_id
if member.groups.filter(id=group_id).count() == 0:
obj.is_member = False
else:
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 be.
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)
keys = kwargs['pk'].split('/')
if len(keys) < 2:
raise ImmediateHttpResponse(HttpBadRequest())
group_id = int(kwargs['group_id'])
group = get_object_or_404(Group, pk=group_id)
member_id = keys[0]
group_id = keys[1]
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()
print("Calling create function with parameters {0}".format(str(kwargs)))
return HttpCreated()
def obj_update(self, bundle, request=None, **kwargs):
@@ -102,3 +105,6 @@ class GroupsByMemberResource(Resource):
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
+4 -4
View File
@@ -34,15 +34,15 @@ class MemberResource(ModelResource):
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/(?P<member_id>\d+)/groups/$" % (self._meta.resource_name), self.wrap_view("get_groups"), name="api_get_groups"),
url(r"^(?P<resource_name>%s)/(?P<member_id>\d+)/groups/(?P<group_id>\d+)/$" % (self._meta.resource_name), self.wrap_view("get_detail_groups"), name="api_get_detail_groups"),
url(r"^(?P<resource_name>%s)/(?P<member_id>\d+)/groups/$" % (self._meta.resource_name), self.wrap_view("groups"), name="api_groups"),
url(r"^(?P<resource_name>%s)/(?P<member_id>\d+)/groups/(?P<group_id>\d+)/$" % (self._meta.resource_name), self.wrap_view("detail_groups"), name="api_detail_groups"),
]
def get_groups(self, request, **kwargs):
def groups(self, request, **kwargs):
resource = GroupsByMemberResource()
return resource.dispatch_list(request, **kwargs)
def get_detail_groups(self, request, **kwargs):
def detail_groups(self, request, **kwargs):
resource = GroupsByMemberResource()
return resource.dispatch_detail(request, **kwargs)