From a29e5025aeb5443fb9d0eca45d1cb46e97d23097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Wed, 7 May 2014 15:16:10 +0200 Subject: [PATCH] server: use parchemin mode for documents with type == PARCH (#3932) --- server/preview_server.py | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/server/preview_server.py b/server/preview_server.py index 1461a5f..bca03ec 100755 --- a/server/preview_server.py +++ b/server/preview_server.py @@ -27,6 +27,34 @@ import time import syslog import socket import tempfile +import zipfile + +try: + import xml.etree.ElementTree as ET +except ImportError: + import elementtree.ElementTree as ET + +def get_legi_metadata(legi_filename): + try: + z = zipfile.ZipFile(legi_filename) + except zipfile.BadZipfile: + content = file(legi_filename).read() + else: + content_zfile = None + for zfile in z.namelist(): + if zfile == 'contents.xml': + content_zfile = zfile + break + if content_zfile is None: + return None + content = z.read(content_zfile) + + content_tree = ET.ElementTree(ET.fromstring(content)) + metadata = {} + for property in content_tree.findall('metadata/property'): + metadata[property.attrib.get('name')] = property.text + return metadata + class PreviewHandler(SCGIHandler): debug = False @@ -114,7 +142,12 @@ class PreviewHandler(SCGIHandler): output.write(legi_file) return - if os.system('python ../legi2pdf/script/db2pdf.py --debug --latex --input=%s' % legi_filename): + args = ['--debug', '--latex', '--input=%s' % legi_filename] + metadata = get_legi_metadata(legi_filename) + if metadata and metadata.get('typedocid') == 'PARCH': + args.append('--parchemin') + cmd = ['python', '../legi2pdf/script/db2pdf.py'] + args + if os.system(' '.join(cmd)): if self.daemon: syslog.syslog(syslog.LOG_ERR, 'error in legi2pdf') else: