feat: Pockets sind erkennbar und zuordenbar
Ein Revolut-Pocket bringt weder eigene IBAN noch eigenen Namen mit. Certain hielt bisher nur uid, IBAN, Name und Waehrung fest – mehrere Konten derselben Bank sahen damit gleich aus, und in der Zeile stand die rohe Kennung. Jetzt werden Produktbezeichnung und die Kennung fuer Konten ohne IBAN mitgefuehrt, der angezeigte Name faellt der Reihe nach auf Name, Details, Produkt, Kennung, IBAN zurueck statt auf die uid, und der uebermittelte Datensatz laesst sich aufklappen – nachsehen statt raten, wenn zwei Konten gleich aussehen. Beim Neuverbinden werden die Merkmale aufgefrischt, ohne die Zuordnung anzutasten. Fehlt ein Konto in der Waehrung des Bankkontos, steht das jetzt dabei; vorher war die Auswahl einfach leer. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -12,6 +12,7 @@ hinzu und werden dann alle über ``owner_id`` je Benutzer getrennt.
|
||||
from __future__ import annotations
|
||||
|
||||
import enum
|
||||
import json
|
||||
# date/time unter Alias, weil es Spalten namens "date"/"time" gibt, die die
|
||||
# gleichnamigen Typen sonst in den (späten) Annotationen beschatten.
|
||||
from datetime import date as date_t, datetime, time as time_t, timezone
|
||||
@@ -904,6 +905,14 @@ class BankAccountLink(Base):
|
||||
remote_uid: Mapped[str] = mapped_column(String(64), nullable=False)
|
||||
iban: Mapped[str | None] = mapped_column(String(64), nullable=True)
|
||||
remote_name: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
||||
# Produktbezeichnung der Bank. Bei Revolut unterscheidet sie das Konto von
|
||||
# seinen Pockets – die haben weder eigene IBAN noch eigenen Namen.
|
||||
product: Mapped[str | None] = mapped_column(String(120), nullable=True)
|
||||
# Kennung fuer Konten ohne IBAN (PSD2 fuehrt sie unter ``other``).
|
||||
other_id: Mapped[str | None] = mapped_column(String(128), nullable=True)
|
||||
# Der uebermittelte Datensatz, wie er kam. Damit laesst sich nachsehen,
|
||||
# statt zu raten, wenn zwei Konten gleich aussehen.
|
||||
raw_json: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
currency: Mapped[str] = mapped_column(String(3), nullable=False, default="EUR")
|
||||
account_id: Mapped[int | None] = mapped_column(
|
||||
ForeignKey("accounts.id", ondelete="SET NULL"), nullable=True
|
||||
@@ -913,3 +922,18 @@ class BankAccountLink(Base):
|
||||
__table_args__ = (
|
||||
UniqueConstraint("owner_id", "remote_uid", name="uq_bank_link_remote"),
|
||||
)
|
||||
|
||||
@property
|
||||
def bank_felder(self) -> dict:
|
||||
"""Der uebermittelte Datensatz als Feld-Liste.
|
||||
|
||||
Wird in den Einstellungen aufklappbar gezeigt. Wenn zwei Konten gleich
|
||||
aussehen, steht der Unterschied hier – nachsehen schlaegt raten.
|
||||
"""
|
||||
if not self.raw_json:
|
||||
return {}
|
||||
try:
|
||||
daten = json.loads(self.raw_json)
|
||||
except ValueError:
|
||||
return {}
|
||||
return daten if isinstance(daten, dict) else {}
|
||||
|
||||
Reference in New Issue
Block a user