summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEkaitz Zarraga <ekaitz@elenq.tech>2020-09-17 11:48:26 +0200
committerEkaitz Zarraga <ekaitz@elenq.tech>2020-09-17 11:48:26 +0200
commitee90417e15bb33e18f995600b6e761ca87e3a63e (patch)
tree9400ab52c9f8e5cef8894c0b9e1f12adcc50ff42
parent6eca8875ea46e609c7fb33a373446dec4313f029 (diff)
Make templates searchable by path
-rw-r--r--README.md2
-rw-r--r--fracture/__main__.py45
2 files changed, 31 insertions, 16 deletions
diff --git a/README.md b/README.md
index 0c239eb..3569352 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ You can use this example file as start:
```ini
[invoice]
id_format = "%%d/%%d/%%d/%%04d" %% (series, date.year, int(date.month/3+1), id)
-template = template.latex
+templatedir = ~/projects/ElenQ/fracture-py/templates/
# Currency related, just the amount of decimal places and the currency to use.
currency = €
diff --git a/fracture/__main__.py b/fracture/__main__.py
index b385116..e7700f3 100644
--- a/fracture/__main__.py
+++ b/fracture/__main__.py
@@ -13,7 +13,10 @@ from configparser import ConfigParser
import os
from os import path
+
+# MOVE THIS TO Conf
CONFIG_FILE = ""
+TEMPLATE_DIR = ""
def load_config():
@@ -53,12 +56,13 @@ def load_config():
Conf.CURRENCY = conf["invoice"].get("currency", "€")
Conf.CURRENCY_DECIMAL = conf["invoice"].getint("currency_decimal", 2)
- # TEMPLATE ?
- # TODO
- # Or dump a json or something?
- templatefile = conf["invoice"]["template"]
- if not path.isabs(templatefile):
- templatefile = path.join(confile, templatefile)
+ # TEMPLATE directory
+ global TEMPLATE_DIR
+ TEMPLATE_DIR = conf["invoice"].get("templatedir", "")
+ TEMPLATE_DIR = path.expandvars(TEMPLATE_DIR)
+ TEMPLATE_DIR = path.expanduser(TEMPLATE_DIR)
+ if not path.isabs(TEMPLATE_DIR):
+ TEMPLATE_DIR = path.join(basedir, TEMPLATE_DIR)
# INVOICE LEVEL TAXES (like IRPF in Spain)
tax = ()
@@ -134,9 +138,17 @@ def summarize(xlsx=False, year=None, quarter=None):
wrtr.writerow(r)
@command
-def render(id, type=None, format=None):
+def render(id, template=None, type=None, list_templates=None):
+
+ if list_templates:
+ # List the template directory and exit
+ print("Current templatedir:", TEMPLATE_DIR)
+ print("Available files: ")
+ for i in os.listdir(TEMPLATE_DIR):
+ print("\t", i)
+ return
- # TODO AUTOMATE TEMPLATE SEARCH AND THAT, THIS IS THIS FOR DEV
+ # Find templates and make them work
if format is None:
raise ValueError("No format specified")
@@ -144,7 +156,7 @@ def render(id, type=None, format=None):
if invoice is None:
raise ValueError("No invoice found")
- with open("templates/template." + format, "r") as f:
+ with open(path.join(TEMPLATE_DIR, template) , "r") as f:
template_text = f.read()
template = Template(template_text)
print(template.render(invoice=invoice.to_dict()))
@@ -184,19 +196,22 @@ if __name__ == "__main__":
help="Obtain the summary of the year")
summary_parser.set_defaults(func=summarize)
- # Dump invoice
+ # Render invoice
summary_parser = subparsers.add_parser("render", aliases=["rend", "r"],
- help="Render chosen invoice in json format")
+ help="Render chosen invoice in the format defined by a template")
summary_parser.add_argument("id", nargs="?", type=str,
help="Invoice identification string")
summary_parser.add_argument("--type", type=str,
help="Invoice type", default="sent")
- summary_parser.add_argument("--format", type=str,
- help="Invoice type", default="tex")
-
+ summary_parser.add_argument("--template", "-t", type=str,
+ help="Template to use", default="template.tex")
+ summary_parser.add_argument("--list-templates", "-l",
+ action="store_true", default=False,
+ help="List available templates, ignores other options.")
summary_parser.set_defaults(func=render)
- # json
+
+ # jsonify
json_parser = subparsers.add_parser("json", aliases=["j"],
help="Dump chosen invoice in json format")
json_parser.add_argument("id", nargs="?", type=str,