feat: Absender-Zuordnungen bearbeiten und loeschen
Der Loesch-Endpunkt war da, aber ohne Knopf in der Oberflaeche, und
Bearbeiten fehlte ganz – eine falsch eingetippte Zuordnung liess sich also
nicht mehr korrigieren.
Jede Zuordnung ist jetzt eine eigene Zeile mit Erkennungstext und Konto;
der Speichern-Knopf erscheint erst bei einer Aenderung. Dazu ein PUT auf
/mail/senders/{id} im Backend.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -121,6 +121,23 @@ def create_sender(
|
||||
return absender
|
||||
|
||||
|
||||
@router.put("/senders/{sender_id}", response_model=MailSenderOut)
|
||||
def update_sender(
|
||||
sender_id: int,
|
||||
payload: MailSenderIn,
|
||||
db: Session = Depends(get_db),
|
||||
user: User = Depends(get_current_user),
|
||||
):
|
||||
absender = get_owned(db, MailSender, sender_id, user)
|
||||
if payload.account_id is not None:
|
||||
get_owned(db, Account, payload.account_id, user)
|
||||
for schluessel, wert in payload.model_dump().items():
|
||||
setattr(absender, schluessel, wert)
|
||||
db.commit()
|
||||
db.refresh(absender)
|
||||
return absender
|
||||
|
||||
|
||||
@router.delete("/senders/{sender_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||
def delete_sender(sender_id: int, db: Session = Depends(get_db), user: User = Depends(get_current_user)):
|
||||
db.delete(get_owned(db, MailSender, sender_id, user))
|
||||
|
||||
@@ -321,3 +321,21 @@ def test_von_hand_weitergeleitete_mail_wird_am_betreff_erkannt(admin, monkeypatc
|
||||
treffer = [e for e in admin.get("/api/inbox").json() if e["payee"] == "Sunrise GmbH / Yallo"]
|
||||
assert treffer, "Die Werte müssen auch aus der weitergeleiteten Mail lesbar sein"
|
||||
assert treffer[0]["amount_cents"] == -1490
|
||||
|
||||
|
||||
def test_zuordnung_laesst_sich_aendern_und_loeschen(admin):
|
||||
konto = _konto(admin)
|
||||
zweites = _konto(admin, name="Zweitkonto")
|
||||
quelle = _postfach(admin)
|
||||
a = admin.post(f"/api/mail/sources/{quelle['id']}/senders",
|
||||
json={"from_contains": "alt", "account_id": konto["id"]}).json()
|
||||
|
||||
r = admin.put(f"/api/mail/senders/{a['id']}",
|
||||
json={"from_contains": "neu", "account_id": zweites["id"]})
|
||||
assert r.status_code == 200, r.text
|
||||
assert r.json()["from_contains"] == "neu"
|
||||
assert r.json()["account_id"] == zweites["id"]
|
||||
|
||||
assert admin.delete(f"/api/mail/senders/{a['id']}").status_code == 204
|
||||
uebrig = admin.get(f"/api/mail/sources/{quelle['id']}/senders").json()
|
||||
assert not [x for x in uebrig if x["id"] == a["id"]]
|
||||
|
||||
Reference in New Issue
Block a user