From 13032164ccfb479b432c0a2e8085c09983349fea Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 5 Aug 2018 21:16:54 +0200 Subject: o Starting on some code for building reports from the project. --- src/ee/report/__init__.py | 0 src/ee/report/doit.py | 61 +++++++++++++++++++++++++++++++++ src/ee/report/templates/index.rst.j2 | 4 +++ src/ee/report/templates/messages.rst.j2 | 8 +++++ 4 files changed, 73 insertions(+) create mode 100644 src/ee/report/__init__.py create mode 100644 src/ee/report/doit.py create mode 100644 src/ee/report/templates/index.rst.j2 create mode 100644 src/ee/report/templates/messages.rst.j2 (limited to 'src/ee/report') diff --git a/src/ee/report/__init__.py b/src/ee/report/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/ee/report/doit.py b/src/ee/report/doit.py new file mode 100644 index 0000000..5d28ed4 --- /dev/null +++ b/src/ee/report/doit.py @@ -0,0 +1,61 @@ +import logging +from pathlib import Path + +from jinja2 import Environment, PackageLoader, select_autoescape + +from ee.doit import DoItConfig, Report + +logger = logging.getLogger(__name__) + +doit_config = DoItConfig() + + +def _create_env(): + return Environment( + loader=PackageLoader("ee.report.doit", "templates"), + autoescape=select_autoescape(["html", "xml"]) + ) + + +def task_report_messages(): + doit_config.report_collection.add_report(Report(task_report_messages)) + + def action(): + logger.debug("Generating messages report") + + data_sets = doit_config.dsm.all_data_sets + + logger.debug("Loading {} data sets".format(len(data_sets))) + + ds = doit_config.dsm.load_data_sets(data_sets) + + messages = [o for o in ds.items() if o.object_type.name == "message"] + logger.debug("Found {} messages".format(len(messages))) + + report_dir = Path(doit_config.extra_config["report_dir"]) + report_dir.mkdir(exist_ok=True) + + with open(report_dir / "messages.rst", "w") as f: + env = _create_env() + template = env.get_template("messages.rst.j2") + f.write(template.render(messages=messages)) + + return { + "actions": [action] + } + + +def task_make_reports(): + def action(): + report_dir = Path(doit_config.extra_config["report_dir"]) + report_dir.mkdir(exist_ok=True) + + with open(report_dir / "index.rst", "w") as f: + env = _create_env() + template = env.get_template("index.rst.j2") + f.write(template.render()) + + return { + "actions": [action], + "task_dep": [r.task.__name__[5:] for r in doit_config.report_collection.reports] + } diff --git a/src/ee/report/templates/index.rst.j2 b/src/ee/report/templates/index.rst.j2 new file mode 100644 index 0000000..5eaf939 --- /dev/null +++ b/src/ee/report/templates/index.rst.j2 @@ -0,0 +1,4 @@ +Reports +======= + +* :doc:`messages` diff --git a/src/ee/report/templates/messages.rst.j2 b/src/ee/report/templates/messages.rst.j2 new file mode 100644 index 0000000..ca08c04 --- /dev/null +++ b/src/ee/report/templates/messages.rst.j2 @@ -0,0 +1,8 @@ +Messages +======== + +There are {{ messages|count }} messages. + +{% for m in messages %} + Message: {{ m.level }} +{% endfor %} -- cgit v1.2.3