X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/0917e94c7b5403408a167ac17f8c6474f9563fe8..21e60dff855cacb585e159850e2de899d4622e5d:/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 942ea0e8..31981b4c --- a/apps/api/handlers/library_handlers.py +++ b/apps/api/handlers/library_handlers.py @@ -31,6 +31,10 @@ import api.response as response from api.utils import validate_form, hglibrary, natural_order from api.models import PartCache, PullRequest +from pygments import highlight +from pygments.lexers import DiffLexer +from pygments.formatters import HtmlFormatter + # import settings @@ -205,19 +209,23 @@ 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 + def read(self, request, docid, lib): + '''Return diff between source_revision and target_revision)''' + revision = request.GET.get('revision') + if not revision: + return '' + source_document = lib.document(docid) + target_document = lib.document_for_revision(revision) + print source_document, target_document + diff = difflib.unified_diff( source_document.data('xml').splitlines(True), target_document.data('xml').splitlines(True), 'source', 'target') - return ''.join(list(diff)) + s = ''.join(list(diff)) + return highlight(s, DiffLexer(), HtmlFormatter(cssclass="pastie")) # @@ -261,7 +269,7 @@ class DocumentHandler(BaseHandler): elif is_prq(user): prq = prq_for_user(user) # commiter's document - prq_doc = lib.document_for_rev(prq.source_revision) + prq_doc = lib.document_for_revision(prq.source_revision) doc = prq_doc.take(user) else: return response.EntityNotFound().django_response({ @@ -310,7 +318,7 @@ class DocumentHTMLHandler(BaseHandler): try: revision = form.cleaned_data['revision'] user = form.cleaned_data['user'] or request.user.username - document = lib.document_for_rev(revision) + document = lib.document_for_revision(revision) if document.id != docid: return response.BadRequest().django_response({ @@ -412,7 +420,7 @@ class DocumentGalleryHandler(BaseHandler): # if revision == 'latest': # doc = lib.document(docid) # else: -# doc = lib.document_for_rev(revision) +# doc = lib.document_for_revision(revision) # # # if document.id != docid: @@ -437,7 +445,7 @@ class DocumentGalleryHandler(BaseHandler): # msg = u"$AUTO$ Dublin core update." # # current = lib.document(docid, request.user.username) -# orig = lib.document_for_rev(revision) +# orig = lib.document_for_revision(revision) # # if current != orig: # return response.EntityConflict().django_response({ @@ -482,7 +490,7 @@ class MergeHandler(BaseHandler): doc = lib.document(docid) # fetch the base document - user_doc = lib.document_for_rev(revision) + user_doc = lib.document_for_revision(revision) base_doc = user_doc.latest() if base_doc != user_doc: @@ -512,9 +520,11 @@ 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): + anwser, info = base_doc.would_share() + + if not anwser: return response.SuccessAllOk().django_response({ - "result": "no-op" + "result": "no-op", "message": info }) # check for unresolved conflicts