diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app.py b/app.py index f3a682f..055e341 100644 --- a/app.py +++ b/app.py @@ -1,12 +1,21 @@ import lxml.etree from lxml import etree +import json +import datetime as dt from aktion_status import AktionsStatus class App: def __init__(self): - pass + self._hide_elements = [] + self._path = None + self._endline = "\n" + self._prefix = "\t" + self._delimiter = "\t" + self._convert_date = False + + self._read_config() def read_xml(self, path, hide_empty=True): with open(path, encoding="utf-8") as xml_file: @@ -20,18 +29,52 @@ class App: def _read_element(self, element, sign="", hide_empty=True): element_text = element.text - if hide_empty and not element_text or isinstance(element, lxml.etree._Comment) or isinstance(element, lxml.etree._ProcessingInstruction): + + if (hide_empty and not element_text or + isinstance(element, lxml.etree._Comment) or + isinstance(element, lxml.etree._ProcessingInstruction) or + element.tag in self._hide_elements): pass elif element.tag.find("AKTION") > -1: num = int(element_text) - print(sign, self._clean_xmlns(element.tag), AktionsStatus.get_status(num)) + print(sign, self._clean_xmlns(element.tag), self._delimiter, AktionsStatus.get_status(num), end=self._endline) + elif self._convert_date and element.tag.find("NKZEIT") > -1: + time = dt.datetime.strptime(element_text, "%H%M%S") + uhrzeit = time.strftime("%H:%M:%S") + print(sign, self._clean_xmlns(element.tag), self._delimiter, uhrzeit, + end=self._endline) + elif self._convert_date and element.tag.find("NKDATUM") > -1: + date = dt.datetime.strptime(element_text, "%Y%m%d") + datum = date.strftime("%d.%m.%Y") + print(sign, self._clean_xmlns(element.tag), self._delimiter, datum, + end=self._endline) else: - print(sign, self._clean_xmlns(element.tag), element.text if element.text else "") + print(sign, self._clean_xmlns(element.tag), self._delimiter, element.text if element.text else "", end=self._endline) if len(element.getchildren()) > 0: for el in element.getchildren(): - self._read_element(el, sign + "\t") + self._read_element(el, sign + self._prefix) def _clean_xmlns(self, tag_text): if tag_text and tag_text.startswith("{"): return tag_text.split("}")[1] return tag_text + + def _read_config(self): + with open('config.json', 'r') as json_file: + json_raw = json.load(json_file) + self._path = json_raw.get('path') + for element in json_raw.get('hide-elements'): + self._hide_elements.append(element) + endline = json_raw.get('endline') + if endline: + self._endline = endline + prefix = json_raw.get('prefix') + if prefix: + self._prefix = prefix + delimiter = json_raw.get('delimiter') + if delimiter: + self._delimiter = delimiter + convert = json_raw.get('convert-date') + if convert: + self._convert_date = convert + diff --git a/config.json b/config.json index e69de29..c3bcf4f 100644 --- a/config.json +++ b/config.json @@ -0,0 +1,10 @@ +{ + "path": null, + "hide-elements": [ + "PO", "TO", "AK", "NKNR", "NVE", "GGVS", "POFD", "ABR", "LM", "INFO", "RSTK", "FD", "ADR-VU" + ], + "delimiter": ": ", + "endline": "\n", + "prefix": "\t", + "convert-date": true +} \ No newline at end of file