Skip to content

Commit

Permalink
added Django REST Framework as new api. Needs work.
Browse files Browse the repository at this point in the history
  • Loading branch information
markotibold committed Mar 16, 2012
1 parent 2880762 commit ee649bc
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 0 deletions.
Empty file added fiber/rest_api/__init__.py
Empty file.
9 changes: 9 additions & 0 deletions fiber/rest_api/forms.py
@@ -0,0 +1,9 @@
from django import forms

POSITION_CHOICES = ['before', 'after', 'inside']

class PageForm(forms.Form):

action = forms.CharField()
position = forms.ChoiceField(choices=POSITION_CHOICES)
target_node_id = forms.IntegerField()
66 changes: 66 additions & 0 deletions fiber/rest_api/urls.py
@@ -0,0 +1,66 @@
"""
The implementation of this module is based on the example from the Django Rest Framework docs available at
http://django-rest-framework.readthedocs.org/.
"""

from django.conf.urls.defaults import patterns, url


from djangorestframework.resources import ModelResource
from djangorestframework.views import ListOrCreateModelView, InstanceModelView
from djangorestframework.permissions import IsAuthenticated


from fiber.models import Page, PageContentItem, ContentItem, Image, File


from views import ApiRoot
from forms import PageForm


class AuthRequiredListOrCreateModelView(ListOrCreateModelView):
"""
Base class for ListOrCreateModelViews. Only
authenticated users are allowed to use the api.
"""
permissions = (IsAuthenticated, )


class AuthRequiredInstanceModelView(InstanceModelView):
"""
Base class for InstanceModelViews. Only
authenticated users are allowed to use the api.
"""
#permissions = (IsAuthenticated, )


class PageResource(ModelResource):
model = Page
form = PageForm

class PageContentItemResource(ModelResource):
model = PageContentItem

class ContentItemResource(ModelResource):
model = ContentItem

class ImageResource(ModelResource):
model = Image

class FileResource(ModelResource):
model = File


urlpatterns = patterns('',
(r'^$', ApiRoot.as_view()),
url(r'^pages/$', AuthRequiredListOrCreateModelView.as_view(resource=PageResource), name='page-resource-root'),
url(r'^pages/(?P<pk>[^/]+)/$', AuthRequiredInstanceModelView.as_view(resource=PageResource), name='page-resource-instance'),
url(r'^page_content_items/$', AuthRequiredListOrCreateModelView.as_view(resource=PageContentItemResource), name='page-content-item-resource-root'),
url(r'^page_content_items/(?P<pk>[^/]+)/$', AuthRequiredInstanceModelView.as_view(resource=PageContentItemResource), name='page-content-item-resource-instance'),
url(r'^content_items/$', AuthRequiredListOrCreateModelView.as_view(resource=ContentItemResource), name='content-item-resource-root'),
url(r'^content_items/(?P<pk>[^/]+)/$', AuthRequiredInstanceModelView.as_view(resource=ContentItemResource), name='content-item-resource-instance'),
url(r'^images/$', AuthRequiredListOrCreateModelView.as_view(resource=ImageResource), name='image-resource-root'),
url(r'^images/(?P<pk>[^/]+)/$', AuthRequiredInstanceModelView.as_view(resource=ImageResource), name='image-resource-instance'),
url(r'^files/$', AuthRequiredListOrCreateModelView.as_view(resource=FileResource), name='file-resource-root'),
url(r'^files/(?P<pk>[^/]+)/$', AuthRequiredInstanceModelView.as_view(resource=FileResource), name='file-resource-instance'),
)
20 changes: 20 additions & 0 deletions fiber/rest_api/views.py
@@ -0,0 +1,20 @@
"""
The root view for the rest api.
"""

from django.core.urlresolvers import reverse
from djangorestframework.views import View
from djangorestframework.permissions import IsAuthenticated

class ApiRoot(View):

permissions = (IsAuthenticated, )

def get(self, request):
return [{'name': 'pages', 'url': reverse('page-resource-root')},
{'name': 'page content items', 'url': reverse('page-content-item-resource-root')},
{'name': 'content items', 'url': reverse('content-item-resource-root')},
{'name': 'images', 'url': reverse('image-resource-root')},
{'name': 'files', 'url': reverse('file-resource-root')},
]

1 change: 1 addition & 0 deletions setup.py
Expand Up @@ -10,6 +10,7 @@
'django-piston==0.2.3rc1',
'django-mptt==0.5.1',
'django-compressor>=0.7.1',
'djangorestframework==0.3.3'
],
dependency_links=['http://bitbucket.org/brodie/django-piston/get/c4e6eb8f7eb5.tar.gz#egg=django-piston-0.2.3rc1'],

Expand Down

0 comments on commit ee649bc

Please sign in to comment.