neues skript sql_dump_diff.py zum Vergleich von 2 sql-dumps.
- leere, frisch initialisierte Datenbanken der Versionen verglichen - datasetprogramme erkennen jetzt auch suche nach standardtabellen wie uom
This commit is contained in:
+31
-4
@@ -42,10 +42,27 @@ erkennt:
|
||||
|
||||
→ wird zu einem YAML-Record mit `key`, `model`, `fields`. Referenzen auf
|
||||
zuvor im selben File angelegte Records werden zu `{"$ref": "..."}`,
|
||||
`Decimal(...)`/`date(...)` zu `{"$decimal": ...}`/`{"$date": ...}`. Alles
|
||||
nicht automatisch Auflösbare (Wizards, `.click(...)`, Helper-Funktionsaufrufe)
|
||||
wird als `{"$manual": "<Ausdruck>"}` markiert oder ganz übersprungen -
|
||||
bewusst sichtbar unvollständig statt still falsch.
|
||||
`Decimal(...)`/`date(...)` zu `{"$decimal": ...}`/`{"$date": ...}`.
|
||||
|
||||
Ein weiteres, sehr häufiges Muster wird ebenfalls erkannt: Zugriff auf
|
||||
bereits vorhandene Stammdaten (Länder, Währungen, Einheiten,
|
||||
Standard-Lagerorte, ... - i. d. R. per XML-Fixture beim Modul-Aktivieren
|
||||
angelegt, nicht Teil des eigentlichen Testdatensatzes):
|
||||
|
||||
```
|
||||
>>> ProductUom = Model.get('product.uom')
|
||||
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
|
||||
```
|
||||
|
||||
→ wird zu `{"$search": {"model": "product.uom", "domain": [["name", "=", "Unit"]]}}`
|
||||
- aufgelöst wird das erst live beim Anlegen durch `create_dataset.py`
|
||||
(Schritt 3), nicht schon hier, da diese Records ja nicht selbst Teil der
|
||||
YAML sind. Nur literale Domains werden erkannt (keine Variablen darin);
|
||||
sonst bleibt es wie bisher `$manual`.
|
||||
|
||||
Alles sonst nicht automatisch Auflösbare (Wizards, `.click(...)`,
|
||||
Helper-Funktionsaufrufe) wird als `{"$manual": "<Ausdruck>"}` markiert oder
|
||||
ganz übersprungen - bewusst sichtbar unvollständig statt still falsch.
|
||||
|
||||
Record-Keys werden mit dem Dateinamen präfixiert, damit beim
|
||||
Zusammenführen mehrerer Module keine Kollisionen entstehen.
|
||||
@@ -83,6 +100,16 @@ bleibt trotzdem ein Fehler - das ist ja gerade das gesuchte Signal für eine
|
||||
echte Schema-Änderung. Weitere Umbenennungen bei Bedarf in `FIELD_RENAMES`
|
||||
ergänzen, sobald ein Lauf sie aufdeckt.
|
||||
|
||||
**`$search`-Auflösung:** Werte der Form `{"$search": {"model": ...,
|
||||
"domain": ...}}` (von `rst_to_dataset.py` erzeugt, siehe Schritt 1) werden
|
||||
live per `Model.get(model).find(domain)` gegen den Zielserver aufgelöst -
|
||||
für Stammdaten, die nicht selbst angelegt werden, sondern schon per
|
||||
XML-Fixture da sind. Ergebnis wird pro Lauf gecacht (dieselbe Suche, z. B.
|
||||
nach der Einheit "Unit", kommt in vielen Records vor). Kein Treffer ->
|
||||
Fehler mit Klartext statt eines neu angelegten Records - das ist selbst
|
||||
ein Signal, dass sich die Stammdaten zwischen den Versionen geändert
|
||||
haben.
|
||||
|
||||
### 4. `compare_snapshots.py` – zwei Versionen gegenüberstellen
|
||||
|
||||
Vergleicht zwei Snapshots (gleiche YAML, zwei Versionen/Datenbanken) und
|
||||
|
||||
Reference in New Issue
Block a user