Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jnothman/datatemplate
Renders various data sources via Django templates
https://github.com/jnothman/datatemplate
Last synced: 7 days ago
JSON representation
Renders various data sources via Django templates
- Host: GitHub
- URL: https://github.com/jnothman/datatemplate
- Owner: jnothman
- License: other
- Created: 2012-03-13T03:15:48.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2012-12-28T03:14:00.000Z (almost 12 years ago)
- Last Synced: 2024-10-28T17:47:52.426Z (about 2 months ago)
- Language: Python
- Homepage:
- Size: 109 KB
- Stars: 2
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
datatemplate
============is a tool to render Django templates using a context (i.e. variables loaded from files):
* arbitrary JSON data
* comma or tab-delimited data as a sequence of tuples
* sqlite databases
* comma or tab-delimited data as in-memory sqlite tablesOther variables may be set on the command-line using ``--var`` and ``--json-var``.
For example, ``templates/html_table.tpl`` and ``templates/tex_table.tpl`` can be used to render sequences of tuples (where the first is a header) loaded from CSV, TSV (tab-delimited) or JSON, as tables in HTML and TeX respectively.
``datatemplate`` also introduces some template tags to perform SQL SELECT queries over sqlite databases (or CSVs read into sqlite in-memory tables):
* ``{% select field1, field2 from blah %}`` performs a query with exactly one row in its result, allowing ``{{field1}}`` and ``{{field2}}`` to be used until ``{% endselect %}``
* ``{% forselect field1, field2 from blah %}`` iterates through rows of the query, providing the forloop variable for additional control.
* Context variables in queries are resolved: ``{% select field1, field2 from {{table_var}} %}``As such, ``datatemplate`` allows the robust formatting of SQL results over CSV data!
Note: although datatemplate (currently) uses the Django templating engine, it is not intended to be used for Django projects.
Why?
----In writing research papers, one often has a large quantity of result data, of which only a small fragment needs to be shown in any particular paper. However, the underlying result data may change, and different reports/papers will often show different levels of detail.
Manual maintenance of tables in reports can be painful, especially if they are complicated LaTeX tables with multi-row and multi-column spans. ``datatemplate`` intends to be a generic tool for loading, extracting and formatting the necessary data.
While it may not be extremely efficient, it is relatively painless!
See the ``examples/`` directory for some of the sorts of things that can be easily accomplished with these spiced-up Django templates. (Note that because Django templates can make a mess of whitespace, the tool is best used to output a format which is not whitespace-sensitive.)
Installation
------------Simply execute:
::
python setup.py install
to provide command-line:
::
datatemplate --help
datatemplate --csv data=/path/to/data.csv < templates/html_table.tpl > out.htmland Python interfaces:
::
import datatemplate
template = open('templates/html_table.tpl')
context_makers = [datatemplate.csv('data', '/path/to/data.csv')]
print datatemplate.render(template, context_makers)