MeResource: cleanups and fixes

This commit is contained in:
nikolark committed 2013-12-27 22:55:55 +01:00
1 parent 945f3ac607
commit 9bc68f15df
4 files changed
+23 -45

No files matched your search

+2
View File
@@ -34,5 +34,7 @@ admin.site.register(Member, MemberAdmin)
admin.site.register(MemberMeta)
admin.site.register(Membership)
admin.site.register(MembershipType)
admin.site.register(Payment)
admin.site.register(PaymentType)
admin.site.register(PlaceOfStudy)
admin.site.register(ServiceHook)
+10 -38
View File
@@ -1,36 +1,24 @@
from django.conf.urls import url
from django.contrib.auth.hashers import make_password
from django.contrib.auth.models import User
from django.db import IntegrityError
from django.shortcuts import get_object_or_404
from tastypie.authorization import Authorization
from tastypie.exceptions import ImmediateHttpResponse, BadRequest
from tastypie.http import HttpForbidden, HttpNoContent, HttpResponse, HttpAccepted
from tastypie import fields
from tastypie.resources import ModelResource, ALL
from tastypie.validation import CleanedDataFormValidation
from tastypie.resources import ModelResource
from dusken.authentication import ServiceAuthentication, OAuth20Authentication
from dusken.authentication import OAuth20Authentication
from dusken.authorization import MyDjangoAuthorization
from dusken.models import *
from dusken.utils.api import generate_username, random_string
from dusken.forms import MemberCreateForm
from dusken.models import Member
from dusken.api.division import DivisionResource
from dusken.api.membership import MembershipResource
from dusken.api.address import AddressResource
from dusken.api.groupsbymember import GroupsByMemberResource
from dusken.api.group import GroupResource
class MeResource(ModelResource):
"""
This class provides following endpoints:
(1) /api/v1/me/
This class provides following endpoint:
/api/v1/me/
"""
groups = fields.ToManyField(GroupsByMemberResource, 'groups')
divisions = fields.ToManyField(DivisionResource, 'division_set')
memberships = fields.ToManyField(MembershipResource, 'membership_set')
#address = fields.ForeignKey(AddressResource, 'address')
groups = fields.ToManyField(GroupResource, 'groups', full=True)
divisions = fields.ToManyField(DivisionResource, 'division_set', full=True)
memberships = fields.ToManyField(MembershipResource, 'membership_set', full=True)
address = fields.ForeignKey(AddressResource, 'address', full=True)
class Meta:
queryset = Member.objects.all()
@@ -45,26 +33,10 @@ class MeResource(ModelResource):
# Only return the authenticated user's member object
return super(MeResource, self).get_object_list(request).filter(pk=request.user.id)
def detail_groups(self, request, **kwargs):
resource = GroupsByMemberResource()
return resource.dispatch_detail(request, **kwargs)
def dehydrate(self, bundle):
"""
Catches GET requests and adds more data.
"""
bundle.data['has_valid_membership'] = bundle.obj.has_valid_membership()
# Add address:
#address = bundle.obj.address
#if address is None:
# bundle.data['address'] = None
#else:
# # TODO: There has to be a better way...
# bundle.data['address'] = {
# 'city' : address.city,
# 'country' : address.country.name,
# 'postal_code' : address.postal_code,
# 'street_address' : address.street_address,
# }
return bundle
+4 -4
View File
@@ -35,7 +35,7 @@ class Member(django.contrib.auth.models.AbstractUser):
# FIXME more than one membership?
# FIXME membership_type?
membership = self.membership_set.filter(end_date__gt=datetime.datetime.now())
return len(membership) == 1 and membership.is_valid()
return len(membership) == 1 and membership[0].is_valid()
class Membership(AbstractBaseModel):
def __unicode__(self):
@@ -67,7 +67,7 @@ class MembershipType(AbstractBaseModel):
is_active = models.BooleanField(default=True)
does_not_expire = models.BooleanField(default=False)
class PaymentType(AbstractBaseModel):
class PaymentType(models.Model):
def __unicode__(self):
return u"{}".format(self.name)
@@ -77,7 +77,7 @@ class PaymentType(AbstractBaseModel):
class Payment(AbstractBaseModel):
def __unicode__(self):
return self.payment_type #TODO
return "{},- via {}".format(self.value, self.payment_type.name)
# Note: More like tokens?
payment_type = models.ForeignKey('dusken.PaymentType')
@@ -156,7 +156,7 @@ class Division(AbstractBaseModel):
is_active = models.BooleanField(default=True)
members = models.ManyToManyField('dusken.Member', null=True, blank=True)
parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
groups = models.ManyToManyField(django.contrib.auth.models.Group, null=True, blank=True) # permissions
groups = models.ManyToManyField(django.contrib.auth.models.Group, null=True, blank=True) # permissions # TODO remove this?
class ServiceHook(AbstractBaseModel):
"""
+7 -3
View File
@@ -2,6 +2,8 @@ from django.conf.urls import patterns, include, url
from django.contrib import admin
from tastypie.api import Api
from dusken.api.address import AddressResource
from dusken.api.division import DivisionResource
from dusken.api.me import MeResource
from dusken.api.member import MemberResource, MemberCreateResource
from dusken.api.membership import MembershipResource
@@ -11,11 +13,13 @@ from dusken.api.institution import InstitutionResource
admin.autodiscover()
v1_api = Api(api_name='v1')
v1_api.register(MeResource())
v1_api.register(MemberResource())
v1_api.register(MembershipResource())
v1_api.register(AddressResource())
v1_api.register(DivisionResource())
v1_api.register(GroupResource())
v1_api.register(InstitutionResource())
v1_api.register(MemberResource())
v1_api.register(MembershipResource())
v1_api.register(MeResource())
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),