src/cm/api/handlers.py
changeset 463 9c7de6dd1723
parent 415 bacf162c7b58
equal deleted inserted replaced
462:189be4b3d712 463:9c7de6dd1723
     5 from cm.views import get_keys_from_dict, get_textversion_by_keys_or_404, get_text_by_keys_or_404, get_textversion_by_keys_or_404, redirect
     5 from cm.views import get_keys_from_dict, get_textversion_by_keys_or_404, get_text_by_keys_or_404, get_textversion_by_keys_or_404, redirect
     6 from cm.security import get_texts_with_perm, has_perm, get_viewable_comments, \
     6 from cm.security import get_texts_with_perm, has_perm, get_viewable_comments, \
     7     has_perm_on_text_api
     7     has_perm_on_text_api
     8 from cm.security import get_viewable_comments
     8 from cm.security import get_viewable_comments
     9 from cm.utils.embed import embed_html
     9 from cm.utils.embed import embed_html
    10 from cm.views.create import CreateTextContentForm, create_text
    10 from cm.views.create import CreateTextContentForm, create_text, CreateTextImportForm, _text_create_import
    11 from cm.views.texts import client_exchange, text_view_frame, text_view_comments, text_export
    11 from cm.views.texts import client_exchange, text_view_frame, text_view_comments, text_export
    12 from cm.views.feeds import text_feed
    12 from cm.views.feeds import text_feed
    13 from piston.utils import validate
    13 from piston.utils import validate
    14 from django.conf import settings
    14 from django.conf import settings
    15 from django.db.models import F
    15 from django.db.models import F
   207     
   207     
   208     def create(self, request, key):
   208     def create(self, request, key):
   209         return text_pre_edit(request, key=key)
   209         return text_pre_edit(request, key=key)
   210 
   210 
   211 from cm.views.texts import text_edit
   211 from cm.views.texts import text_edit
   212     
   212 
   213 class TextEditHandler(BaseHandler):
   213 class TextEditHandler(BaseHandler):
   214     allowed_methods = ('POST', )    
   214     allowed_methods = ('POST', )    
   215     type = "Text methods"
   215     type = "Text methods"
   216     title = "Edit text"    
   216     title = "Edit text"    
   217     desc = "Update text identified by `key`."
   217     desc = "Update text identified by `key`."
   427     no_display = True 
   427     no_display = True 
   428 
   428 
   429     @has_perm_on_text_api('can_view_text')
   429     @has_perm_on_text_api('can_view_text')
   430     def create(self, request, key, format, download, whichcomments, withcolor):
   430     def create(self, request, key, format, download, whichcomments, withcolor):
   431         return text_export(request, key, format, download, whichcomments, withcolor, adminkey=None)
   431         return text_export(request, key, format, download, whichcomments, withcolor, adminkey=None)
       
   432 
       
   433 class ImportHandler(BaseHandler):
       
   434     allowed_methods = ('POST', )    
       
   435     type = "Text methods"
       
   436     title = "Import text and comments"
       
   437     desc = "Import a previously exported text, along with comments and attachments in XML format."
       
   438     args = """<br />
       
   439 `xml`: Previously exported XML file of text, comments and attachments<br />
       
   440     """ 
       
   441     
       
   442     @staticmethod
       
   443     def endpoint():
       
   444         return URL_PREFIX + '/import/'
       
   445     
       
   446     
       
   447     def create(self, request):
       
   448       text, res = _text_create_import(request, CreateTextImportForm)
       
   449       text_version = text.last_text_version
       
   450       return {'key' : text.key , 'version_key' : text.last_text_version.key, 'html': text_version.content}
   432 
   451 
   433 class AnonymousCommentsHandler(AnonymousBaseHandler):
   452 class AnonymousCommentsHandler(AnonymousBaseHandler):
   434     allowed_methods = ('GET',)    
   453     allowed_methods = ('GET',)    
   435     type = "Comment methods"
   454     type = "Comment methods"
   436     fields = ('id_key', 'title', 'format', 'content', 'created', 'name', ('text_version' , ('key', ('text', ('key',))) ))   
   455     fields = ('id_key', 'title', 'format', 'content', 'created', 'name', ('text_version' , ('key', ('text', ('key',))) ))