Package: pytemplateproc
# pytemplate - Программа заполнения данных в документы из различных источниковПрограмма позволяет создавать документы в текстовом формате (включая latex, xetex, и др.) или ODF форматах используя шаблоны и наборы данных.Программа представляет из себя утилиту, не имеющая интерактивного интерфейса с пользователем. Предназначена для использования в составе скриптов.Программа использует язык шаблонов Jinja2, расширенный новыми командами, для загрузки данных из различных источников.Поддерживаемые источники данных:* CSV таблица (Может быть отредактирована в Exel при соблюдении определенных правил)* XML документ* Текстовый файл* SQLite база данных* Функция MD5 от файла* Функция получения данных о файле# Дополнительные функции для загрузки данных## load_xmlПозволяет загружать древовидные данные из XML файлаПринимает аргумент - имя файлаВозращает - root elementПример использования:```{%- set root = load_xml("database1.xml") %}{%- for item in root.findall("hardware/i") %}{{ item.find("name").text }} & {{ item.find("sign").text }} / {{ item.find("version").text }} & {{ item.find("fullname").text }} \\\hline{%- endfor %}```## load_csvПозволяет загружать табличные данные из CSV файлаПринимает аргумент - имя файлаВозращает - итераторПример использования:```{%- set docs = load_csv("database2.csv")  %}{%- for item in docs %}{{ item.id }} & {{ item.name }} & {{ item.ref }} & {{ item.sign }} & {{ item.inv }} \\\hline{%- endfor %}```## load_sqliteПозволяет загружать данные из SQLite базы данныхПринимает аргумент - имя файлаВозращает - курсорПример использования:```{%- set db = load_sqlite("database3.sqlite") %}{%- set alboum = db.execute("select * from Album") %}{%- for item in alboum %}{{ item[0] }} & {{ le(item[1]) }} \\\hline{%- endfor %}```## load_textПозволяет загружать текстовые данные из файлаПринимает аргумент - имя файлаВозращает - строкуПример использования:```{%- set content = load_text("database4.txt") %}{{ content }}```## file_md5Позволяет подсчитать контрольную сумму файлаПринимает аргумент - имя файлаВозращает - строкуПример использования:```{%- set md5 = file_md5(sourcefile) %}{{md5}}```## file_statПозволяет получить информацию о файле (размер)Принимает аргумент - имя файлаВозращает - объект, содержащий следующие поля:* st_mode - protection bits,* st_ino - inode number,* st_dev - device,* st_nlink - number of hard links,* st_uid - user id of owner,* st_gid - group id of owner,* st_size - size of file, in bytes,* st_atime - time of most recent access,* st_mtime - time of most recent content modification,* st_ctime - platform dependent; time of most recent metadata change on Unix, or the time of creation on Windows)* st_blocks - number of 512-byte blocks allocated for file* st_blksize - filesystem blocksize for efficient file system I/O* st_rdev - type of device if an inode device* st_flags - user defined flags for file* st_gen - file generation number* st_birthtime - time of file creation* st_ftype (file type)* st_attrs (attributes)* st_obtype (object type).Пример использования:```{%- set stat = file_stat(sourcefile) %}{{ stat.st_size }}```## logПозволяет выводить сообщения в консоль при разборе шаблонаПринимает аргумент - строкаПример использования:```{%- do log("Add alboum %s (authorid=%d)" % (item[1], item[2])) %}```## getargsПозволяет получить аргументы запуска из командной строкиВозвращает значение - сущность, описанная на python в параметре "arg"# Запуск программыUsage: pytemplate.py [options]Опции:* --versionОтобразить версию* -h, --helpОтобразить информацию о ключах запуска* -t TEMPLATE, --template=TEMPLATEУказать путь до файла шаблона* -o OUTPUT, --output=OUTPUTУказать путь до выходного файла* -f FORMAT, --format=FORMATФормат файла шаблона, может принимать значения (odt и text)* -a ARG, --arg=ARGДополнительная сущность для шаблона# Примеры сгенерированных документов:* Latex document: [IN](/examples/out_doc1.tex) + [IN 1](/examples/out_doc1_part1.template.tex) + [IN 2](/examples/out_doc1_part2.template.tex) + [IN 3](/examples/out_doc1_part3.template.tex) + [IN 4](/examples/out_doc1_part4.template.tex) + [IN 5](/examples/out_doc1_part5.template.tex) -> [OUT](/examples/output/out_doc1.pdf)* ODT document: [IN](/examples/out_doc2.odt) -> [OUT](/examples/output/out_doc2_ready.odt)