]> git.ipfire.org Git - thirdparty/python-fints.git/commitdiff
Implement/doc more fields
authorHenryk Plötz <henryk@ploetzli.ch>
Sat, 18 Aug 2018 00:11:07 +0000 (02:11 +0200)
committerRaphael Michel <mail@raphaelmichel.de>
Mon, 3 Dec 2018 18:34:29 +0000 (19:34 +0100)
fints/formals.py
fints/segments/auth.py
fints/types.py

index 19d2d28982503f5be4f8d08711761c5a7874a2f2..99acc4fadee9fe3144930b29c6a72ee75a323e52 100644 (file)
@@ -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
index 157a0a452d65fc7f60a50b4be3fca2499a6d71d3..f01bb6a85186d621d70bb24b2d5d2a731035ae98 100644 (file)
@@ -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):
     """
index b6b84e8b3a702611147fc36d6bb1a17bdf66918f..997bcef5fd7ed9e9869a3c9bcb1dce0c68c22572 100644 (file)
@@ -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)