From: Ɓukasz Rekucki Date: Wed, 21 Oct 2009 21:27:54 +0000 (+0200) Subject: Merge branch 'master' of stigma:platforma X-Git-Url: https://git.mdrn.pl/redakcja.git/commitdiff_plain/49ca4e98b38d73cef1eec116d7c9a4c00006f728?ds=inline;hp=-c Merge branch 'master' of stigma:platforma --- 49ca4e98b38d73cef1eec116d7c9a4c00006f728 diff --combined apps/api/handlers/library_handlers.py index d510aa4a,c84cab8f..a3285821 --- a/apps/api/handlers/library_handlers.py +++ b/apps/api/handlers/library_handlers.py @@@ -9,6 -9,7 +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 +18,8 @@@ from django.db import IntegrityErro import librarian import librarian.html + import difflib + from librarian import dcparser, parser from wlrepo import * from api.models import PullRequest @@@ -197,6 -200,26 +200,26 @@@ class BasicDocumentHandler(AnonymousBas 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 +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,9 -336,6 +336,9 @@@ 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 })