server: use parchemin mode for documents with type == PARCH (#3932)

This commit is contained in:
Frédéric Péters 2014-05-07 15:16:10 +02:00
parent 376df1781c
commit a29e5025ae
1 changed files with 34 additions and 1 deletions

View File

@ -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: