aboutsummaryrefslogtreecommitdiffstats
path: root/examples/blogpost/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/blogpost/views.py')
-rw-r--r--examples/blogpost/views.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/examples/blogpost/views.py b/examples/blogpost/views.py
new file mode 100644
index 00000000..05e795fa
--- /dev/null
+++ b/examples/blogpost/views.py
@@ -0,0 +1,63 @@
+from flywheel.response import Response, status
+from flywheel.resource import Resource
+from flywheel.modelresource import ModelResource, QueryModelResource
+from blogpost.models import BlogPost, Comment
+
+##### Root Resource #####
+
+class RootResource(Resource):
+ """This is the top level resource for the API.
+ All the sub-resources are discoverable from here."""
+ allowed_methods = ('GET',)
+
+ def get(self, request, *args, **kwargs):
+ return Response(status.HTTP_200_OK,
+ {'blog-posts': self.reverse(BlogPostList),
+ 'blog-post': self.reverse(BlogPostCreator)})
+
+
+##### Blog Post Resources #####
+
+BLOG_POST_FIELDS = ('created', 'title', 'slug', 'content', 'absolute_url', 'comment_url', 'comments_url')
+
+class BlogPostList(QueryModelResource):
+ """A resource which lists all existing blog posts."""
+ allowed_methods = ('GET', )
+ model = BlogPost
+ fields = BLOG_POST_FIELDS
+
+class BlogPostCreator(ModelResource):
+ """A resource with which blog posts may be created."""
+ allowed_methods = ('POST',)
+ model = BlogPost
+ fields = BLOG_POST_FIELDS
+
+class BlogPostInstance(ModelResource):
+ """A resource which represents a single blog post."""
+ allowed_methods = ('GET', 'PUT', 'DELETE')
+ model = BlogPost
+ fields = BLOG_POST_FIELDS
+
+
+##### Comment Resources #####
+
+COMMENT_FIELDS = ('username', 'comment', 'created', 'rating', 'absolute_url', 'blogpost_url')
+
+class CommentList(QueryModelResource):
+ """A resource which lists all existing comments for a given blog post."""
+ allowed_methods = ('GET', )
+ model = Comment
+ fields = COMMENT_FIELDS
+
+class CommentCreator(ModelResource):
+ """A resource with which blog comments may be created for a given blog post."""
+ allowed_methods = ('POST',)
+ model = Comment
+ fields = COMMENT_FIELDS
+
+class CommentInstance(ModelResource):
+ """A resource which represents a single comment."""
+ allowed_methods = ('GET', 'PUT', 'DELETE')
+ model = Comment
+ fields = COMMENT_FIELDS
+