Archived
MeResource: cleanups and fixes
This commit is contained in:
1 parent
945f3ac607
commit
9bc68f15df
4 files changed
+23
-45
No files matched your search
@@ -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
@@ -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
@@ -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
@@ -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)),
|
||||
|
||||
Reference in new issue
Block a user