Archived
Fixed creation of relationships with POST-requests for /member/<id>/groups/<id>/
This commit is contained in:
1 parent
2d997156b9
commit
56cbf16ac2
2 files changed
+21
-15
No files matched your search
@@ -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
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in new issue
Block a user