__doc__ = "Module documentation."
from piston.handler import BaseHandler, AnonymousBaseHandler
+from django.http import HttpResponse
import re
from datetime import date
import librarian
import librarian.html
+import difflib
from librarian import dcparser, parser
from wlrepo import *
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
#
# 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
'scriptlets',
'pullrequest_collection',
'pullrequest_rsrc',
+ 'diff_resource',
]
\ No newline at end of file
# 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/(?P<source_revision>latest|[0-9a-fA-F]+)/(?P<target_revision>latest|[0-9a-fA-F]+)/$',
+ diff_resource, {'emitter_format': 'raw'}, name="diff_resource"),
+
# url(r'^documents/(?P<docid>[^/]+)/parts$',
# document_resource, {'emitter_format': 'json'},