Bild uebernehmen: sichtbare Rueckmeldung und Nachholen bei fehlender Kopie
Zwei Ursachen dafuer, dass der Knopf folgenlos wirkte. Sichtbar: Uebernehmen schreibt nur ins Formular, das Artikelbild wechselt erst beim Speichern - es gab aber nichts, woran man das erkannt haette. Die Spalte "Bisher" zeigt jetzt sofort das uebernommene Bild mit Kennzeichnung, der Knopf heisst danach "Uebernommen", und eine Meldung erklaert den naechsten Schritt. Tatsaechlich folgenlos war der haeufigste Fall: Stimmte die Bildadresse laengst und nur der Abruf war damals fehlgeschlagen, aenderte sich beim Speichern nichts - und die Bedingung fragte genau nach einer Aenderung. Sie richtet sich jetzt danach, woher die vorhandene Kopie stammt. Fehlt sie, wird geholt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -251,19 +251,21 @@ def update_product(
|
||||
data.pop("date_precision", None) # Spalte ist NOT NULL
|
||||
else:
|
||||
data["date_precision"] = data["date_precision"].value
|
||||
alte_bildadresse = product.image_url
|
||||
for field, value in data.items():
|
||||
setattr(product, field, value)
|
||||
# Gruppe oder Barcode koennen sich geaendert haben - Code nachziehen.
|
||||
sync_group_code(db, product)
|
||||
if "image_url" in data and data["image_url"] != alte_bildadresse:
|
||||
# Neue Adresse heisst neues Bild – die alte Kopie waere sonst dauerhaft
|
||||
# falsch, weil ``ensure`` nur nachlaedt, wenn gar keine Kopie da ist.
|
||||
if "image_url" in data:
|
||||
# Massgeblich ist, woher die vorhandene Kopie stammt - nicht, ob sich
|
||||
# die Adresse am Artikel geaendert hat. Sonst passierte genau dann
|
||||
# nichts, wenn die Adresse schon stimmte, der Abruf damals aber
|
||||
# fehlschlug: Der Artikel bliebe dauerhaft ohne Bild.
|
||||
alt = db.get(ProductImage, product.id)
|
||||
if alt is not None:
|
||||
if alt is not None and alt.source_url != product.image_url:
|
||||
db.delete(alt)
|
||||
db.flush()
|
||||
if product.image_url:
|
||||
alt = None
|
||||
if alt is None and product.image_url:
|
||||
images.store(db, product, product.image_url)
|
||||
db.commit()
|
||||
db.refresh(product)
|
||||
|
||||
Reference in New Issue
Block a user