From: zuber Date: Tue, 20 Oct 2009 16:08:21 +0000 (+0200) Subject: Merge branch 'master' of stigma.nowoczesnapolska.org.pl:platforma X-Git-Url: https://git.mdrn.pl/redakcja.git/commitdiff_plain/96bc5f73483f3e907eebd60df638a9de0a9124f3?hp=18f305ee56846554901406ce4982aed590dac855 Merge branch 'master' of stigma.nowoczesnapolska.org.pl:platforma Conflicts: apps/api/handlers/library_handlers.py --- diff --git a/apps/api/handlers/library_handlers.py b/apps/api/handlers/library_handlers.py index aef1e9c1..c84cab8f 100644 --- 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 # diff --git a/apps/api/resources.py b/apps/api/resources.py index 1d55aa9e..fbdb89b8 100644 --- a/apps/api/resources.py +++ b/apps/api/resources.py @@ -23,6 +23,7 @@ document_html_resource = Resource(dh.DocumentHTMLHandler, **authdata) # document_dc_resource = Resource(dh.DocumentDublinCoreHandler, **authdata) document_gallery = Resource(dh.DocumentGalleryHandler, **authdata) document_merge = Resource(dh.MergeHandler, **authdata) +diff_resource = Resource(dh.DiffHandler, **authdata) import api.handlers.manage_handlers as mh @@ -50,4 +51,5 @@ __all__ = [ 'scriptlets', 'pullrequest_collection', 'pullrequest_rsrc', + 'diff_resource', ] \ No newline at end of file diff --git a/apps/api/urls.py b/apps/api/urls.py index db6ff1ef..0ed64591 100644 --- a/apps/api/urls.py +++ b/apps/api/urls.py @@ -74,7 +74,11 @@ urlpatterns = patterns('', # MERGE url(urlpath(r'documents', DOC, 'revision', format=False), - document_merge, {'emitter_format': 'json'}, name="docmerge_view") + document_merge, {'emitter_format': 'json'}, name="docmerge_view"), + + url(r'diffs/(?Platest|[0-9a-fA-F]+)/(?Platest|[0-9a-fA-F]+)/$', + diff_resource, {'emitter_format': 'raw'}, name="diff_resource"), + # url(r'^documents/(?P[^/]+)/parts$', # document_resource, {'emitter_format': 'json'},