jespern / django-piston (http://bitbucket.org/jespern/)

Piston is a Django mini-framework creating APIs.

Clone this repository (size: 470.9 KB): HTTPS / SSH
$ hg clone http://bitbucket.org/jespern/django-piston/

Changed (Δ105 bytes):

raw changeset »

examples/blogserver/api/handlers.py (9 lines added, 15 lines removed)

Up to file-list examples/blogserver/api/handlers.py:

@@ -3,23 +3,12 @@ from piston.utils import rc, require_mim
3
3
4
4
from blogserver.blog.models import Blogpost
5
5
6
class AnonymousBlogpostHandler(AnonymousBaseHandler):
7
    """
8
    Anonymous entrypoint for blogposts.
9
    """
10
    model = Blogpost
11
    fields = ('id', 'title', 'content', 'created_on')
12
13
    @classmethod
14
    def resource_uri(cls):
15
        return ('blogposts', [ 'format', ])
16
17
6
class BlogpostHandler(BaseHandler):
18
7
    """
19
8
    Authenticated entrypoint for blogposts.
20
9
    """
21
10
    model = Blogpost
22
    anonymous = AnonymousBlogpostHandler
11
    anonymous = 'AnonymousBlogpostHandler'
23
12
    fields = ('title', 'content', ('author', ('username',)), 
24
13
              'created_on', 'content_length')
25
14
@@ -28,8 +17,8 @@ class BlogpostHandler(BaseHandler):
28
17
        return len(blogpost.content)
29
18
30
19
    @classmethod
31
    def resource_uri(cls):
32
        return ('blogposts', [ 'format', ])
20
    def resource_uri(cls, blogpost):
21
        return ('blogposts', [ 'json', ])
33
22
34
23
    def read(self, request, title=None):
35
24
        """
@@ -46,7 +35,6 @@ class BlogpostHandler(BaseHandler):
46
35
        else:
47
36
            return base.all()
48
37
49
    @require_extended
50
38
    def create(self, request):
51
39
        """
52
40
        Creates a new blogpost.
@@ -62,3 +50,9 @@ class BlogpostHandler(BaseHandler):
62
50
            post.save()
63
51
            
64
52
            return post
53
54
class AnonymousBlogpostHandler(BlogpostHandler, AnonymousBaseHandler):
55
    """
56
    Anonymous entrypoint for blogposts.
57
    """
58
    fields = ('id', 'title', 'content', 'created_on')