diff -r ef8b166a0993 -r bacf162c7b58 src/cm/api/handlers.py --- a/src/cm/api/handlers.py Wed Apr 25 09:25:39 2012 +0200 +++ b/src/cm/api/handlers.py Mon May 07 09:10:45 2012 +0200 @@ -1,7 +1,7 @@ from piston.handler import AnonymousBaseHandler, BaseHandler from piston.utils import rc -from cm.models import Text,TextVersion, Role, UserRole, Comment +from cm.models import Text,TextVersion, Role, UserRole, Comment, Attachment 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 from cm.security import get_texts_with_perm, has_perm, get_viewable_comments, \ has_perm_on_text_api @@ -134,6 +134,35 @@ else: resp = rc.BAD_REQUEST return resp + +from cm.converters import _convert_from_mimetype +import os +from django.core.urlresolvers import reverse + +class ConvertHandler(BaseHandler): + type = "Text methods" + allowed_methods = ('POST', ) + title = "Convert a legacy file" + desc = "Returns the HTLM file." + args = """
+`file`: the file in legacy format
+ """ + + @staticmethod + def endpoint(): + return URL_PREFIX + '/convert/' + + def create(self, request): + mime = request.POST.get('mime', None) + the_file = request.FILES['file']; + html, attachs = _convert_from_mimetype(the_file.read(), mime, 'html') + for attach_file in attachs: + attach_data = file(attach_file, 'rb').read() + filename = os.path.basename(attach_file) + attachment = Attachment.objects.create_attachment(filename=filename, data=attach_data, text_version=None) + attach_url = reverse('notext-attach', args=[attachment.key]) + html = html.replace(filename, settings.SITE_URL + attach_url) + return {'html' : html} from cm.exception import UnauthorizedException from cm.views.texts import text_delete @@ -202,10 +231,16 @@ def create(self, request, key): + prev_text = get_text_by_keys_or_404(key) + prev_text_version = prev_text.last_text_version + prev_comments = prev_text_version.get_comments() + prev_scope_removed = [c for c in prev_comments if c.is_scope_removed()] res = text_edit(request, key=key) text = get_text_by_keys_or_404(key) text_version = text.last_text_version - return {'version_key' : text_version.key , 'created': text_version.created} + comments = text_version.get_comments() + scope_removed = [c for c in comments if c.is_scope_removed()] + return {'version_key' : text_version.key , 'created': text_version.created, 'nb_deleted' : len(prev_comments) - len(comments), 'nb_scope_removed' : len(scope_removed) - len(prev_scope_removed)} class AnonymousTextFeedHandler(AnonymousBaseHandler): @@ -452,7 +487,7 @@ if limit: query = query[:int(limit)] return query - + from piston.doc import documentation_view from piston.handler import handler_tracker