refactor templates to zip

This commit is contained in:
Jean-Marie Place 2021-09-27 07:31:59 +02:00
parent 230c7d488e
commit ccd1a0daba

View File

@ -170,6 +170,15 @@ def add_local_file_to_zip(zipfile, ziproot, pathname, path_in_zip):
# zipfile.writestr(rooted_path_in_zip, data) # zipfile.writestr(rooted_path_in_zip, data)
def add_refs_to_register(register, directory):
"""Ajoute les fichiers trouvés dans directory au registre (dictionaire) sous la forme
filename => pathname
"""
length = len(directory)
for pathname in list_directory_filenames(directory):
filename = pathname[length+1:]
register[filename] = pathname
def add_pe_stuff_to_zip(zipfile, ziproot): def add_pe_stuff_to_zip(zipfile, ziproot):
"""Add auxiliary files to (already opened) zip """Add auxiliary files to (already opened) zip
Put all local files found under config/doc_poursuites_etudes/local Put all local files found under config/doc_poursuites_etudes/local
@ -178,30 +187,16 @@ def add_pe_stuff_to_zip(zipfile, ziproot):
Also copy logos Also copy logos
""" """
register = {}
# first add standard (distrib references)
distrib_dir = os.path.join(REP_DEFAULT_AVIS, "distrib") distrib_dir = os.path.join(REP_DEFAULT_AVIS, "distrib")
distrib_pathnames = list_directory_filenames( add_refs_to_register(register=register, directory=distrib_dir)
distrib_dir # then add local references (some oh them may overwrite distrib refs)
) # eg /opt/scodoc/tools/doc_poursuites_etudes/distrib/modeles/toto.tex
l = len(distrib_dir)
distrib_filenames = {x[l + 1 :] for x in distrib_pathnames} # eg modeles/toto.tex
local_dir = os.path.join(REP_LOCAL_AVIS, "local") local_dir = os.path.join(REP_LOCAL_AVIS, "local")
local_pathnames = list_directory_filenames(local_dir) add_refs_to_register(register=register, directory=local_dir)
l = len(local_dir) # at this point register contains all refs (filename, pathname) to be saved
local_filenames = {x[l + 1 :] for x in local_pathnames} for filename, pathname in register.items():
add_local_file_to_zip(zipfile, ziproot, pathname, "avis/" + filename)
for filename in distrib_filenames | local_filenames:
if filename in local_filenames:
add_local_file_to_zip(
zipfile, ziproot, os.path.join(local_dir, filename), "avis/" + filename
)
else:
add_local_file_to_zip(
zipfile,
ziproot,
os.path.join(distrib_dir, filename),
"avis/" + filename,
)
# Logos: (add to logos/ directory in zip) # Logos: (add to logos/ directory in zip)
logos_names = ["logo_header.jpg", "logo_footer.jpg"] logos_names = ["logo_header.jpg", "logo_footer.jpg"]