From: Henryk Plötz Date: Sat, 18 Aug 2018 00:11:07 +0000 (+0200) Subject: Implement/doc more fields X-Git-Tag: v2.0.0~1^2~103 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0838fce5382988631d4f1168759c70ecde347df0;p=thirdparty%2Fpython-fints.git Implement/doc more fields --- diff --git a/fints/formals.py b/fints/formals.py index 19d2d28..99acc4f 100644 --- a/fints/formals.py +++ b/fints/formals.py @@ -104,7 +104,7 @@ class KeyName(DataElementGroup): user_id = DataElementField(type='id') key_type = CodeField(KeyType, length=1, _d="Schlüsselart") key_number = DataElementField(type='num', max_length=3) - key_version = DataElementField(type='num', max_length=3) + key_version = DataElementField(type='num', max_length=3) class Certificate(DataElementGroup): certificate_type = DataElementField(type='code') @@ -285,26 +285,47 @@ class ParameterPinTan(DataElementGroup): customer_id_field_text = DataElementField(type='an', max_length=30, required=False) transaction_tans_required = DataElementGroupField(type=TransactionTanRequired, max_count=999, required=False) +class Language2(RepresentableEnum): + """Dialogsprache + + Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Formals""" + STANDARD = '0' #: Standard + DE = '1' #: Deutsch, 'de', Subset Deutsch, Codeset 1 (Latin 1) + EN = '2' #: Englisch, 'en', Subset Englisch, Codeset 1 (Latin 1) + FR = '3' #: Französisch, 'fr', Subset Französisch, Codeset 1 (Latin 1) + class SupportedLanguages2(DataElementGroup): - languages = DataElementField(type='code', max_length=3, min_count=1, max_count=9) + languages = CodeField(enum=Language2, max_length=3, min_count=1, max_count=9) class SupportedHBCIVersions2(DataElementGroup): versions = DataElementField(type='code', max_length=3, min_count=1, max_count=9) class AccountInternational(DataElementGroup): - is_sepa = DataElementField(type='jn') - iban = DataElementField(type='an', max_length=34) - bic = DataElementField(type='an', max_length=11) - account_number = DataElementField(type='id') - subaccount_number = DataElementField(type='id') - bank_identifier = DataElementGroupField(type=BankIdentifier) + """Kontoverbindung ZV international, version 1 + + Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """ + is_sepa = DataElementField(type='jn', _d="Kontoverwendung SEPA") + iban = DataElementField(type='an', max_length=34, _d="IBAN") + bic = DataElementField(type='an', max_length=11, _d="BIC") + account_number = DataElementField(type='id', _d="Konto-/Depotnummer") + subaccount_number = DataElementField(type='id', _d="Unterkontomerkmal") + bank_identifier = DataElementGroupField(type=BankIdentifier, _d="Kreditinstitutskennung") class SecurityRole(RepresentableEnum): + """Rolle des Sicherheitslieferanten, kodiert, version 2 + + Kodierte Information über das Verhältnis desjenigen, der bezüglich der zu si-chernden Nachricht die Sicherheit gewährleistet. + Die Wahl ist von der bankfachlichen Auslegung der Signatur, respektive vom vertraglichen Zustand zwischen Kunde und Kreditinstitut abhängig. + + Source: FinTS Financial Transaction Services, Sicherheitsverfahren HBCI""" ISS = '1' #: Erfasser, Erstsignatur CON = '3' #: Unterstützer, Zweitsignatur WIT = '4' #: Zeuge/Übermittler, nicht Erfasser class CompressionFunction(RepresentableEnum): + """Komprimierungsfunktion, version 2 + + Source: FinTS Financial Transaction Services, Sicherheitsverfahren HBCI""" NULL = '0' #: Keine Kompression LZW = '1' #: Lempel, Ziv, Welch COM = '2' #: Optimized LZW @@ -316,10 +337,20 @@ class CompressionFunction(RepresentableEnum): ZZZ = '999' #: Gegenseitig vereinbart class SecurityApplicationArea(RepresentableEnum): + """Bereich der Sicherheitsapplikation, kodiert, version 2 + + Informationen darüber, welche Daten vom kryptographischen Prozess verarbeitet werden. + + Source: FinTS Financial Transaction Services, Sicherheitsverfahren HBCI""" SHM = '1' #: Signaturkopf und HBCI-Nutzdaten SHT = '2' #: Von Signaturkopf bis Signaturabschluss class SecurityClass(RepresentableEnum): + """Sicherheitsklasse, version 1 + + Die Sicherheitsklasse gibt für jede Signatur den erforderlichen Sicherheitsdienst an. + + Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Formals""" NONE = 0 #: Kein Sicherheitsdienst erforderlich AUTH = 1 #: Sicherheitsdienst 'Authentikation' AUTH_ADV = 2 #: Sicherheitsdienst 'Authentikation' mit fortgeschrittener elektronischer Signatur, optionaler Zertifikatsprüfung @@ -327,5 +358,17 @@ class SecurityClass(RepresentableEnum): NON_REPUD_QUAL = 4 #: Sicherheitsdienst 'Non-Repudiation' mit fortgeschrittener bzw. qualifizierter elektronischer Signatur, zwingende Zertifikatsprüfung class UPDUsage(RepresentableEnum): + """UPD-Verwendung, version 2 + + Kennzeichen dafür, wie diejenigen Geschäftsvorfälle zu interpretieren sind, die bei der Beschreibung der Kontoinformationen nicht unter den erlaubten Geschäftsvorfällen aufgeführt sind. + + Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Formals""" UPD_CONCLUSIVE = '0' #: Die nicht aufgeführten Geschäftsvorfälle sind gesperrt UPD_INCONCLUSIVE = '1' #: Bei nicht aufgeführten Geschäftsvorfällen ist keine Aussage möglich, ob diese erlaubt oder gesperrt sind + +class SystemIDStatus(RepresentableEnum): + """Kundensystem-Status, version 2 + + Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Formals""" + ID_UNNECESSARY = '0' #: Kundensystem-ID wird nicht benötigt + ID_NECESSARY = '1' #: Kundensystem-ID wird benötigt diff --git a/fints/segments/auth.py b/fints/segments/auth.py index 157a0a4..f01bb6a 100644 --- a/fints/segments/auth.py +++ b/fints/segments/auth.py @@ -1,7 +1,8 @@ from fints.utils import fints_escape -from . import FinTS3SegmentOLD - +from . import FinTS3SegmentOLD, FinTS3Segment +from fints.formals import BankIdentifier, SystemIDStatus, Language2 +from fints.fields import DataElementGroupField, DataElementField, CodeField class HKIDN(FinTS3SegmentOLD): """ @@ -20,6 +21,15 @@ class HKIDN(FinTS3SegmentOLD): ] super().__init__(segmentno, data) +class HKIDN2(FinTS3Segment): + """Identifikation, version 2 + + Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Formals""" + bank_identifier = DataElementGroupField(type=BankIdentifier, _d="Kreditinstitutskennung") + customer_id = DataElementField(type='id', _d="Kunden-ID") + system_id = DataElementField(type='id', _d="Kundensystem-ID") + system_id_status = CodeField(enum=SystemIDStatus, length=1, _d="Kundensystem-Status") + class HKVVB(FinTS3SegmentOLD): """ @@ -42,6 +52,15 @@ class HKVVB(FinTS3SegmentOLD): ] super().__init__(segmentno, data) +class HKVVB3(FinTS3Segment): + """Verarbeitungsvorbereitung, version 3 + + Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Formals""" + bpd_version = DataElementField(type='num', max_length=3, _d="BPD-Version") + upd_version = DataElementField(type='num', max_length=3, _d="UPD-Version") + language = CodeField(enum=Language2, max_length=3, _d="Dialogsprache") + product_name = DataElementField(type='an', max_length=25, _d="Produktbezeichnung") + product_version = DataElementField(type='an', max_length=5, _d="Produktversion") class HKSYN(FinTS3SegmentOLD): """ diff --git a/fints/types.py b/fints/types.py index b6b84e8..997bcef 100644 --- a/fints/types.py +++ b/fints/types.py @@ -82,7 +82,7 @@ class ValueList: docstring = "" if not hasattr( getattr(val, 'print_nested', None), '__call__'): stream.write( - (prefix + (level+1)*indent) + "{!r}{},\n".format(val, docstring) + (prefix + (level+1)*indent) + "{!r},{}\n".format(val, docstring) ) else: val.print_nested(stream=stream, level=level+2, indent=indent, prefix=prefix, trailer=",", print_doc=print_doc, first_line_suffix=docstring)