Archived
Merging changes to membership and institution docs.
This commit is contained in:
commit
cfc737e002
8 files changed
+201
-3
No files matched your search
+1
-1
@@ -5,4 +5,4 @@ settings.py
|
||||
*.bak
|
||||
build
|
||||
docs/_build
|
||||
|
||||
db.sqlite3
|
||||
+1
-1
@@ -14,7 +14,7 @@ Contents:
|
||||
member
|
||||
group
|
||||
membership
|
||||
|
||||
institution
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
Institution
|
||||
======
|
||||
|
||||
GET /institution/
|
||||
------------
|
||||
.. http:get:: /institution/
|
||||
|
||||
Returns info about all institutions.
|
||||
|
||||
**Example request**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
GET /institution/?format=json HTTP/1.1
|
||||
|
||||
:query offset: offset number. default is 0
|
||||
:query limit: limit number. default is 20
|
||||
:statuscode 200: Everything is gonna be alright.
|
||||
:statuscode 403: User does not have necessary permissions.
|
||||
|
||||
**Example response**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
Vary: Accept
|
||||
Content-Type: text/javascript
|
||||
|
||||
{
|
||||
"meta" : {
|
||||
"limit" : 20,
|
||||
"next" : null,
|
||||
"offset" : 0,
|
||||
"previous" : null,
|
||||
"total_count" : 2
|
||||
},
|
||||
"objects" : [
|
||||
{
|
||||
"created": "2013-06-26T12:15:52.889701",
|
||||
"id": 1,
|
||||
"name": "Universitetet i Oslo",
|
||||
"resource_uri": "/api/v1/institution/1/",
|
||||
"short_name": "UiO",
|
||||
"updated": "2013-06-26T12:15:52.889785"
|
||||
},
|
||||
{
|
||||
"created": "2013-06-26T12:16:07.840886",
|
||||
"id": 2,
|
||||
"name": "Høgskolen i Oslo og Akershus",
|
||||
"resource_uri": "/api/v1/institution/2/",
|
||||
"short_name": "HiOA",
|
||||
"updated": "2013-06-26T12:29:38.488712"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
Membership
|
||||
==========
|
||||
|
||||
GET /membership/
|
||||
----------------
|
||||
.. http:get:: /membership/
|
||||
|
||||
Returns info about all memberships.
|
||||
|
||||
**Example request**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
GET /membership/?format=json HTTP/1.1
|
||||
|
||||
:query filter: one of ``valid``, ``can_vote``
|
||||
:query offset: offset number. default is 0
|
||||
:query limit: limit number. default is 20
|
||||
:statuscode 200: Thumbs up!
|
||||
:statuscode 403: Ur not authorized – don't cheat!
|
||||
|
||||
**Example response**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
{
|
||||
"meta" : {
|
||||
"limit" : 20,
|
||||
"next" : null,
|
||||
"offset" : 0,
|
||||
"previous" : null,
|
||||
"total_count" : 1
|
||||
},
|
||||
"objects" : {
|
||||
"created" : "2012-08-23T01:30:14",
|
||||
"end_date" : "2013-08-01T00:00:00",
|
||||
"id" : 1,
|
||||
"member" : 1,
|
||||
"membership_type" : 1,
|
||||
"payment" : 86,
|
||||
"start_date" : "2012-08-23T01:30:14",
|
||||
"updated" : "2013-08-01T00:00:00",
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
GET /membership/(int)/
|
||||
----------------------
|
||||
.. http:get:: /membership/(int:membership_id)/
|
||||
|
||||
Returns info about membership (`membership_id`).
|
||||
|
||||
**Example request**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
GET /membership/13371337/?format=json HTTP/1.1
|
||||
Content-Type: application/json
|
||||
|
||||
:statuscode 200: Thumbs up!
|
||||
:statuscode 403: You'll need to get authorized first, buddy.
|
||||
:statuscode 404: This is not the membership you're looking for.
|
||||
|
||||
**Example response**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
{
|
||||
"membership" : {
|
||||
"created" : "2012-08-23T01:30:14",
|
||||
"end_date" : "2013-08-01T00:00:00",
|
||||
"id" : 1,
|
||||
"member" : 1,
|
||||
"membership_type" : 1,
|
||||
"payment" : 86,
|
||||
"start_date" : "2012-08-23T01:30:14",
|
||||
"updated" : "2013-08-01T00:00:00",
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
POST /membership/
|
||||
-----------------
|
||||
.. http:post:: /membership/
|
||||
|
||||
Creates a new membership with data given in body (json).
|
||||
|
||||
**Example request**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
POST /membership/ HTTP/1.1
|
||||
Body:
|
||||
{
|
||||
"member": 1337,
|
||||
"membership_type": 1,
|
||||
"payment": 16811,
|
||||
}
|
||||
|
||||
:statuscode 201: You just created a brand new membership!
|
||||
:statuscode 403: Don't fake it – get authorized!
|
||||
:statuscode 500: You messed up and made a pile of poo. Check body, make sure values are correct.
|
||||
+5
-1
@@ -1,5 +1,5 @@
|
||||
from django.contrib import admin
|
||||
from dusken.models import Member
|
||||
from dusken.models import Member, Institution
|
||||
|
||||
class MemberAdmin(admin.ModelAdmin):
|
||||
fieldsets = [
|
||||
@@ -8,4 +8,8 @@ class MemberAdmin(admin.ModelAdmin):
|
||||
('User data', {'fields' : ['phone_number', 'date_of_birth', 'address', 'place_of_study']}),
|
||||
]
|
||||
|
||||
class InstitutionAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
|
||||
admin.site.register(Member, MemberAdmin)
|
||||
admin.site.register(Institution, InstitutionAdmin)
|
||||
@@ -0,0 +1,25 @@
|
||||
from django.contrib.auth.models import User
|
||||
from django.conf.urls import url
|
||||
from django.shortcuts import get_object_or_404
|
||||
from tastypie import fields
|
||||
from tastypie.authorization import Authorization
|
||||
from tastypie.exceptions import ImmediateHttpResponse
|
||||
from tastypie.http import HttpForbidden, HttpNoContent, HttpResponse
|
||||
from tastypie.resources import ModelResource, ALL
|
||||
from dusken.models import *
|
||||
from dusken.api.membersbygroup import MembersByGroupResource
|
||||
from dusken.api.groupsbymember import GroupsByMemberResource
|
||||
|
||||
|
||||
class InstitutionResource(ModelResource):
|
||||
|
||||
class Meta:
|
||||
queryset = Institution.objects.all()
|
||||
resource_name = 'institution'
|
||||
list_allowed_methods = [ 'get', 'post' ]
|
||||
detail_allowed_methods = [ 'get', 'patch', 'delete' ]
|
||||
authorization = Authorization() # TODO: for dev (VERY INSECURE)
|
||||
filtering = {
|
||||
'name' : [ 'exact' ],
|
||||
}
|
||||
|
||||
@@ -2,6 +2,9 @@ import django
|
||||
from django.db import models
|
||||
|
||||
class Country(models.Model):
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
name = models.CharField(max_length=50, unique=True)
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
updated = models.DateTimeField(auto_now=True)
|
||||
@@ -15,7 +18,11 @@ class Address(models.Model):
|
||||
updated = models.DateTimeField(auto_now=True)
|
||||
|
||||
class Institution(models.Model):
|
||||
def __unicode__(self):
|
||||
return u'%s - %s' % (self.short_name, self.name)
|
||||
|
||||
name = models.CharField(max_length=255)
|
||||
short_name = models.CharField(max_length=16)
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
updated = models.DateTimeField(auto_now=True)
|
||||
|
||||
@@ -26,6 +33,9 @@ class PlaceOfStudy(models.Model):
|
||||
updated = models.DateTimeField(auto_now=True)
|
||||
|
||||
class Member(django.contrib.auth.models.User):
|
||||
def __unicode__(self):
|
||||
return u'%s %s' % (self.first_name, self.last_name)
|
||||
|
||||
phone_number = models.IntegerField(unique=True, null=True, blank=True)
|
||||
date_of_birth = models.DateField(blank=True, null=True)
|
||||
legacy_id = models.IntegerField(unique=True, null=True, blank=True)
|
||||
|
||||
@@ -8,6 +8,7 @@ from dusken.api.membership import MembershipResource
|
||||
from dusken.api.group import GroupResource
|
||||
from dusken.api.groupsbymember import GroupsByMemberResource
|
||||
from dusken.api.membersbygroup import MembersByGroupResource
|
||||
from dusken.api.institution import InstitutionResource
|
||||
|
||||
admin.autodiscover()
|
||||
|
||||
@@ -17,6 +18,7 @@ v1_api.register(MembershipResource())
|
||||
v1_api.register(GroupResource())
|
||||
v1_api.register(GroupsByMemberResource())
|
||||
v1_api.register(MembersByGroupResource())
|
||||
v1_api.register(InstitutionResource())
|
||||
|
||||
urlpatterns = patterns('',
|
||||
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
|
||||
|
||||
Reference in new issue
Block a user