--- 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 = """<br/>
@@ -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 = """<br />
+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