diff --git a/dusken/api/groupsbymember.py b/dusken/api/groupsbymember.py index d93bd99..1950ce3 100644 --- a/dusken/api/groupsbymember.py +++ b/dusken/api/groupsbymember.py @@ -20,7 +20,7 @@ class GroupsByMemberResource(Resource): class Meta: object_class = GroupsByMemberObject - list_allowed_methods = [] + list_allowed_methods = [ 'get' ] detail_allowed_methods = [ 'get', 'delete', 'post' ] authorization = Authorization() # TODO: Obvious @@ -28,59 +28,43 @@ class GroupsByMemberResource(Resource): 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. + return self.obj_get_list(request) + def obj_get_list(self, request=None, **kwargs): - member_id = int(kwargs['pk']) + member_id = int(kwargs['member_id']) 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" + groups = [] for group in member.groups.all(): - obj.groups.append(group) + groups.append(group) - return obj + return groups def obj_get(self, request=None, **kwargs): - member_id = int(kwargs['pk']) + member_id = int(kwargs['member_id']) member = Member.objects.get(id=member_id) - member = None - if len(keys) > 1: - member_id = int(keys[1]) - member = Member.objects.get(id=member_id) + group_id = int(kwargs['group_id']) + group = Group.objects.get(id=group_id) - if member is None: - return None + if member is None: + raise ImmediateHttpResponse(HttpNotFound()) - if member.groups.filter(name=group.name).count() == 0: - raise ImmediateHttpResponse(HttpNotFound()) + 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) + obj = GroupsByMemberObject() + obj.member_id = member_id + for group in member.groups.all(): + obj.groups.append(group) return obj diff --git a/dusken/api/member.py b/dusken/api/member.py index c535441..e18805f 100644 --- a/dusken/api/member.py +++ b/dusken/api/member.py @@ -34,16 +34,17 @@ class MemberResource(ModelResource): def prepend_urls(self): return [ - url(r"^(?P%s)/(?P\d+)/groups/$" % (self._meta.resource_name), self.wrap_view("get_groups"), name="api_get_groups"), + url(r"^(?P%s)/(?P\d+)/groups/$" % (self._meta.resource_name), self.wrap_view("get_groups"), name="api_get_groups"), + url(r"^(?P%s)/(?P\d+)/groups/(?P\d+)/$" % (self._meta.resource_name), self.wrap_view("get_detail_groups"), name="api_get_detail_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) + return resource.dispatch_list(request, **kwargs) + + def get_detail_groups(self, request, **kwargs): + resource = GroupsByMemberResource() + return resource.dispatch_detail(request, **kwargs) def apply_filters(self, request, applicable_filters): # Extra filters are used for filtering by attributes in User class. Find out if there diff --git a/dusken/models.py b/dusken/models.py index 8a686a0..2df299c 100644 --- a/dusken/models.py +++ b/dusken/models.py @@ -104,7 +104,7 @@ class MembershipType(models.Model): class Membership(models.Model): start_date = models.DateField() mtype = models.ForeignKey(MembershipType, db_column='type') - payment = models.ForeignKey(PaymentForMembership, unique=True, null=True, blank=True) + payment = models.ForeignKey(Payment, unique=True, null=True, blank=True) member = models.ForeignKey(Member) created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True)