diff -r fc5ed157ebfe -r c6fe4822a243 src/cm/api/handlers.py --- a/src/cm/api/handlers.py Fri Jul 09 10:05:29 2010 +0200 +++ b/src/cm/api/handlers.py Mon Jul 12 13:53:26 2010 +0200 @@ -8,6 +8,8 @@ from cm.security import get_viewable_comments from cm.utils.embed import embed_html from cm.views.create import CreateTextContentForm, create_text +from cm.views.texts import client_exchange, text_view_frame, text_view_comments, text_export +from cm.views.feeds import text_feed from piston.utils import validate from settings import SITE_URL @@ -90,7 +92,7 @@ class TextListHandler(BaseHandler): title = "Create text" type = "Text methods" - allowed_methods = ('POST', ) + allowed_methods = ('GET', 'POST') anonymous = AnonymousTextListHandler desc = "Create a text with the provided parameters." args = """
@@ -104,6 +106,11 @@ def endpoint(): return URL_PREFIX + '/text/' + def read(self, request): + order_by = '-id' + texts = get_texts_with_perm(request, 'can_view_text').order_by(order_by) + return texts + def create(self, request): form = CreateTextContentForm(request.POST) if form.is_valid(): @@ -129,12 +136,11 @@ def endpoint(): return URL_PREFIX + '/text/{key}/delete/' - def create(self, request): + def create(self, request, key): """ Delete text identified by `key`. """ try: - key = request.POST.get('key') text_delete(request, key=key) except UnauthorizedException: return rc.FORBIDDEN @@ -188,7 +194,144 @@ text_version = text.last_text_version return {'version_key' : text_version.key , 'created': text_version.created} -from django.contrib.auth import authenticate + +class AnonymousTextFeedHandler(AnonymousBaseHandler): + allowed_methods = ('GET',) + type = "Text methods" + title = "Text feed" + desc = "Returns text RSS feed." + args = None + + @staticmethod + def endpoint(): + return URL_PREFIX + '/text/{key}/feed/?' + + def read(self, request, key): + return text_feed(request, key=key) + +class TextFeedHandler(BaseHandler): + type = "Text methods" + anonymous = AnonymousTextFeedHandler + allowed_methods = ('GET',) + no_display = True +## client methods + +class AnonymousClientHandler(AnonymousBaseHandler): + allowed_methods = ('POST',) + type = "Client methods" + title = "Handles client methods" + desc = "Handles client (ajax text view) methods." + args = """
+post arguments + """ + + @staticmethod + def endpoint(): + return URL_PREFIX + '/client/' + + def create(self, request): + return client_exchange(request) + +class ClientHandler(BaseHandler): + type = "Client methods" + anonymous = AnonymousClientHandler + allowed_methods = ('POST',) + no_display = True + + def create(self, request): + return client_exchange(request) + +## embed methods +from django.views.i18n import javascript_catalog + +class JSI18NHandler(AnonymousBaseHandler): + allowed_methods = ('GET',) + type = "Embed methods" + title = "Get js i18n dicts" + desc = "" + args = None + + @staticmethod + def endpoint(): + return URL_PREFIX + '/jsi18n/' + + def read(self, request): + return javascript_catalog(request) + + +class AnonymousCommentFrameHandler(AnonymousBaseHandler): + allowed_methods = ('GET',) + type = "Embed methods" + title = "Displays embedable frame" + desc = "" + args = None + + @staticmethod + def endpoint(): + return URL_PREFIX + '/text/{key}/comments_frame/?prefix=/api' + + def read(self, request, key): + return text_view_frame(request, key=key) + +class CommentFrameHandler(BaseHandler): + type = "Embed methods" + anonymous = AnonymousCommentFrameHandler + allowed_methods = ('GET',) + no_display = True + + def read(self, request, key): + return text_view_frame(request, key=key) + +class AnonymousCommentHandler(AnonymousBaseHandler): + allowed_methods = ('GET',) + type = "Embed methods" + title = "Displays embedable frame" + no_display = True + desc = "" + args = None + + @staticmethod + def endpoint(): + return URL_PREFIX + '/text/{key}/comments/{version_key}/?' + + def read(self, request, key, version_key): + return text_view_comments(request, key=key, version_key=version_key) + +class CommentHandler(BaseHandler): + type = "Embed methods" + anonymous = AnonymousCommentHandler + allowed_methods = ('GET',) + no_display = True + + def read(self, request, key, version_key): + return text_view_comments(request, key=key, version_key=version_key) + + +class AnonymousTextExportHandler(AnonymousBaseHandler): + allowed_methods = ('POST',) + type = "Embed methods" + title = "undocumented" + no_display = True + desc = "" + args = None + + @staticmethod + def endpoint(): + return URL_PREFIX + ' undocumented' + + def create(self, request, key, format, download, whichcomments, withcolor): + return text_export(request, key, format, download, whichcomments, withcolor, adminkey=None) + +class TextExportHandler(BaseHandler): + type = "Embed methods" + anonymous = AnonymousTextExportHandler + allowed_methods = ('POST',) + no_display = True + + def create(self, request, key, format, download, whichcomments, withcolor): + return text_export(request, key, format, download, whichcomments, withcolor, adminkey=None) + +## user methods class SetUserHandler(AnonymousBaseHandler): allowed_methods = ('POST',) @@ -217,6 +360,7 @@ + from piston.doc import documentation_view from piston.handler import handler_tracker