X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/bd2f4130a81e68a2bb3c8d88448540ec60fe7be5..7a12b550f4a8366c8ace2f9c55706aba7c4b17f7:/apps/api/handlers/library_handlers.py?ds=sidebyside diff --git a/apps/api/handlers/library_handlers.py b/apps/api/handlers/library_handlers.py old mode 100644 new mode 100755 index aef1e9c1..562ed1b3 --- a/apps/api/handlers/library_handlers.py +++ b/apps/api/handlers/library_handlers.py @@ -9,6 +9,7 @@ __date__ = "$2009-09-25 15:49:50$" __doc__ = "Module documentation." from piston.handler import BaseHandler, AnonymousBaseHandler +from django.http import HttpResponse from datetime import date @@ -17,6 +18,8 @@ from django.db import IntegrityError import librarian import librarian.html +import difflib +from librarian import dcparser, parser from wlrepo import * from api.models import PullRequest @@ -197,6 +200,26 @@ class BasicDocumentHandler(AnonymousBaseHandler): return result + +class DiffHandler(BaseHandler): + allowed_methods = ('GET',) + + @hglibrary + def read(self, request, source_revision, target_revision, lib): + '''Return diff between source_revision and target_revision)''' + source_document = lib.document_for_rev(source_revision) + target_document = lib.document_for_rev(target_revision) + print source_document, + print target_document + diff = difflib.unified_diff( + source_document.data('xml').splitlines(True), + target_document.data('xml').splitlines(True), + 'source', + 'target') + + return ''.join(list(diff)) + + # # Document Meta Data # @@ -305,7 +328,7 @@ class DocumentHTMLHandler(BaseHandler): return error return librarian.html.transform(document.data('xml'), is_file=False, \ - parse_dublincore=False, stylesheet=stylesheet,\ + parse_dublincore=False, stylesheet='full',\ options={ "with-paths": 'boolean(1)', }) @@ -313,6 +336,9 @@ class DocumentHTMLHandler(BaseHandler): except (EntryNotFound, RevisionNotFound), e: return response.EntityNotFound().django_response({ 'reason': 'not-found', 'message': e.message}) + except librarian.ValidationError, e: + return response.InternalError().django_response({ + 'reason': 'xml-non-valid', 'message': e.message }) except librarian.ParseError, e: return response.InternalError().django_response({ 'reason': 'xml-parse-error', 'message': e.message }) @@ -362,7 +388,7 @@ class DocumentGalleryHandler(BaseHandler): gallery['pages'].append( quote(url.encode('utf-8')) ) -# gallery['pages'].sort() + gallery['pages'].sort() galleries.append(gallery) return galleries @@ -486,7 +512,7 @@ class MergeHandler(BaseHandler): "message": "You must first update your branch to the latest version." }) - if base_doc.parentof(doc) or base_doc.has_parent_from(doc): + if not base_doc.would_share(): return response.SuccessAllOk().django_response({ "result": "no-op" })