commit
c7b89efa40
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
59
app.py
59
app.py
|
|
@ -1,12 +1,21 @@
|
||||||
import lxml.etree
|
import lxml.etree
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
|
import json
|
||||||
|
import datetime as dt
|
||||||
from aktion_status import AktionsStatus
|
from aktion_status import AktionsStatus
|
||||||
|
|
||||||
|
|
||||||
class App:
|
class App:
|
||||||
|
|
||||||
def __init__(self):
|
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):
|
def read_xml(self, path, hide_empty=True):
|
||||||
with open(path, encoding="utf-8") as xml_file:
|
with open(path, encoding="utf-8") as xml_file:
|
||||||
|
|
@ -16,22 +25,56 @@ class App:
|
||||||
for data in root.getchildren():
|
for data in root.getchildren():
|
||||||
|
|
||||||
for elem in data.getchildren():
|
for elem in data.getchildren():
|
||||||
self.read_element(elem, hide_empty=hide_empty)
|
self._read_element(elem, hide_empty=hide_empty)
|
||||||
|
|
||||||
def read_element(self, element, sign="", hide_empty=True):
|
def _read_element(self, element, sign="", hide_empty=True):
|
||||||
element_text = element.text
|
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
|
pass
|
||||||
elif element.tag.find("AKTION") > -1:
|
elif element.tag.find("AKTION") > -1:
|
||||||
num = int(element_text)
|
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:
|
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:
|
if len(element.getchildren()) > 0:
|
||||||
for el in element.getchildren():
|
for el in element.getchildren():
|
||||||
self.read_element(el, sign+"\t")
|
self._read_element(el, sign + self._prefix)
|
||||||
|
|
||||||
def clean_xmlns(self, tag_text):
|
def _clean_xmlns(self, tag_text):
|
||||||
if tag_text and tag_text.startswith("{"):
|
if tag_text and tag_text.startswith("{"):
|
||||||
return tag_text.split("}")[1]
|
return tag_text.split("}")[1]
|
||||||
return tag_text
|
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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue