fix delete method / fix anon resources
authorraph
Mon, 12 Jul 2010 13:53:26 +0200
changeset 288 c6fe4822a243
parent 287 fc5ed157ebfe
child 289 285e67006eb0
fix delete method / fix anon resources
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 = """<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