-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WCM-456: Write toggle must not break checkin #889
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ich stimme Dir zu, im Connector-Code Typkonvertierungs-Geschichten zu machen, ohne dass irgendein Toggle aktiv ist, klingt erstmal eher verwirrend, und wollen wir vmtl lieber vermeiden.
Wenn ich das richtig verstehe, funktioniert der Ansatz hier deshalb, weil 3912aba bei aktivem Toggle write
die Properties "notfalls" sowieso deserialisiert. Und dann frage ich mich (auch wenn man zb noch 3309064 mit anschaut), ob wir nicht sogar noch etwas weiter gehen sollten, bzw. umgekehrt, ob wir grade zu viel auf einmal wollen.
Also ja, perspektivisch wollen wir, dass die DAVPropertyConverter
so weit möglich rausfliegen, weil wir uns auf sql(alchemy) stützen können&wollen. Aber wäre es für die Übergangszeit (also während wir noch hin und her togglen) nicht evtl doch einfacher, als API stabil zu halten, IWebDAVProperties
enthält nur Strings als Werte? Also ja, das wäre etwas ineffizient, weil dann die DAVProperties alles immer erst serialisieren, und der Connector es dann wieder deserialisiert, und umgekehrt. Damit könnten wir aber vmtl. leben, soo teuer ist das denke ich nicht. Aber wenn wir jetzt eh schon halb da sind, würde es nicht das Verständnis erheblich erleichtern, es durchzuziehen?
47fe731
to
5eb61c3
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Die Richtung stimmt zwar, der Ansatz ist aber leider noch nicht vollständig umgesetzt.
@@ -899,13 +899,16 @@ def test_converts_scalar_types_on_read(self): | |||
example_date = datetime(2010, 1, 1, 0, 0, tzinfo=pytz.UTC) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Die gesamten ContractProperties
Test müssen hiermit entfallen. Deren einziger Punkt war, dass Typkonvertierung stattfindet -- was wir jetzt ja genau nicht mehr wollen. (Einzig test_delete_property_from_column
ist noch relevant, der muss dann nach test_postgresql.PropertiesColumnTest
umziehen.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wenn dieser PR dann fertig ist, muss man die storage-api entsprechend anpassen, siehe auch WCM-446
1f10978
to
434d8d6
Compare
entschuldigung? was ist denn nun kaputt? |
jetzt ist der |
0db0bd1
to
fbbae7c
Compare
Even though I don't think it should do that, we have to be prepared that zope.pytestlayer uses several instances of the same layer in sequence (in this case: stopping and then starting a psql docker container several times)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Die API Änderung des DAVPropertyConverters ist das Problem, dass sich durch das Zurückdrehen des
write_metadata_columns
Toggles gezeigt hat.Der Toggle hat dafür gesorgt, dass nicht nur die Daten in die neuen Spalten geschrieben werden, sondern auch, dass in den Properties der Resource keine Strings, sondern Python Objekte drin stehen. Beispielsweise
PropertyKey(name='year', namespace='http://namespaces.zeit.de/CMS/document'): 2008
stattPropertyKey(name='year', namespace='http://namespaces.zeit.de/CMS/document'): '2008'
. OderPropertyKey(name='date_created', namespace='http://namespaces.zeit.de/CMS/document'): DateTime(2024, 10, 16, 15, 5, 32, 67016, tzinfo=Timezone('Europe/Berlin'))
stattPropertyKey(name='date_created', namespace='http://namespaces.zeit.de/CMS/document'): '2024-10-16T15:56:36.967542+02:00'
.Damit kann aber weder die
unsorted
Spalte, noch derIDAVPropertyConverter
umgehen.siehe
Deshalb darf sich die API des
IDAVPropertyConverter
s erst ändern, wenn sich sowohl read, als auch write einig über den Datentyp sind, mit dem sie hantieren.Jetzt ist der Write-Toggle wirklich nur darauf beschränkt im Connector in die neuen Spalten zu schreiben. Das schien mir sinnvoller als ein Pflaster in
from_webdav
in Richtung:Checklist
DocumentationTranslationsgif