diff --git a/dusken/api/membersbygroup.py b/dusken/api/membersbygroup.py index 74bac83..4b13d0b 100644 --- a/dusken/api/membersbygroup.py +++ b/dusken/api/membersbygroup.py @@ -2,10 +2,12 @@ from tastypie import fields from tastypie.authorization import Authorization from tastypie.bundle import Bundle from tastypie.exceptions import ImmediateHttpResponse -from tastypie.http import HttpNotFound +from tastypie.http import HttpNotFound, HttpAccepted, HttpCreated, HttpResponse, HttpBadRequest from tastypie.resources import Resource from dusken.models import Member, Group +import logging + class MembersByGroupObject(object): def __init__(self): self.group_id = 0 @@ -18,8 +20,8 @@ class MembersByGroupResource(Resource): class Meta: resource_name = 'membersbygroup' object_class = MembersByGroupObject - list_allowed_methods = [ 'post' ] - detail_allowed_methods = [ 'get', 'delete' ] + list_allowed_methods = [] + detail_allowed_methods = [ 'get', 'delete', 'post' ] authorization = Authorization() # TODO: Obvious def detail_uri_kwargs(self, bundle_or_obj): @@ -37,9 +39,11 @@ class MembersByGroupResource(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): + 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. def obj_get(self, request=None, **kwargs): @@ -72,20 +76,37 @@ class MembersByGroupResource(Resource): return obj - def obj_create(self, request=None, **kwargs): - pass # TODO + 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 diff --git a/dusken/tests/membersbygroup.py b/dusken/tests/membersbygroup.py index b189009..90bbed7 100644 --- a/dusken/tests/membersbygroup.py +++ b/dusken/tests/membersbygroup.py @@ -26,7 +26,7 @@ class MembersByGroupTest(ResourceTestCase): self.assertHttpMethodNotAllowed(resp) resp = self.api_client.post(self.url) - self.assertNotEquals(resp.status_code, 405) + self.assertHttpMethodNotAllowed(resp) resp = self.api_client.put(self.url) self.assertHttpMethodNotAllowed(resp) @@ -48,7 +48,25 @@ class MembersByGroupTest(ResourceTestCase): self.assertValidJSONResponse(resp) def test_create_relation(self): - pass + group = Group(name="Design", posix_name="design") + + data = { + 'member_id': self.member.pk, + 'group_id': group.pk + } + resp = self.api_client.post(self.url, format='json', data=data) + self.assertHttpCreated(resp) + self.assertNotEquals(self.member.groups.filter(name=group.name).count(), 0) def test_remove_relation(self): - pass + data = { + 'member_id': self.member.pk, + 'group_id': self.group.pk + } + resp = self.api_client.delete(self.url, format='json', data=data) + self.assertHttpAccepted(resp) + self.assertEquals(self.member.groups.filter(name=group.name).count(), 0) + + resp = self.api_client.delete(self.url, format='json', data=data) + self.assertHttpGone(resp) +