From: Henryk Plötz Date: Tue, 14 Aug 2018 15:42:03 +0000 (+0200) Subject: Add date/time fields X-Git-Tag: v2.0.0~1^2~107 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3fe90f10e76448e4e6f040eae28c8e2ec413d25a;p=thirdparty%2Fpython-fints.git Add date/time fields --- diff --git a/fints/fields.py b/fints/fields.py index dc1c514..dac8442 100644 --- a/fints/fields.py +++ b/fints/fields.py @@ -1,3 +1,4 @@ +import datetime import re import warnings from contextlib import suppress @@ -234,6 +235,7 @@ class CodeField(AlphanumericField): _DOC_TYPE = str ## FIXME: Not further implemented, might want to use Enums + # FIXME Need tests def __init__(self, enum=None, *args, **kwargs): if enum: @@ -264,13 +266,33 @@ class CurrencyField(FixedLengthMixin, AlphanumericField): _FIXED_LENGTH = [3] class DateField(FixedLengthMixin, NumericField): - type = 'dat' + type = 'dat' # FIXME Need test + _DOC_TYPE = datetime.date _FIXED_LENGTH = [8] + def _parse_value(self, value): + val = super()._parse_value(value) + val = str(val) + return datetime.date(int(val[0:4]), int(val[4:6]), int(val[6:8])) + + def _render_value(self, value): + val = "{:04d}{:02d}{:02d}".format(value.year, value.month, value.day) + val = int(val) + return super()._render_value(val) + class TimeField(FixedLengthMixin, DigitsField): - type = 'tim' + type = 'tim' # FIXME Need test + _DOC_TYPE = datetime.time _FIXED_LENGTH = [6] + def _parse_value(self, value): + val = super()._parse_value(value) + return datetime.time(int(val[0:2]), int(val[2:4]), int(val[4:6])) + + def _render_value(self, value): + val = "{:02d}{:02d}{:02d}".format(value.hour, value.minute, value.second) + return super()._render_value(val) + class PasswordField(AlphanumericField): type = '' _DOC_TYPE = Password