ich experimentiere gerade mit GenericViews. Ich möchte gerne ein "Warnung" beim Modifizieren eines Datenbank-Objektes ausgeben, wenn zwischenzeitlich das Datenbank-Objekt durch einen anderen User geändert worden ist. Es geht also um einen konkurrierenden Zugriff. Zur Verdeutlichung ein Beispiel aus einem Wiki. Nutzer "A" möchte eine Wikiseite "Seite XYZ" korrigieren, ruft sie auf und führt seine Änderungen durch. Ein anderer Nutzer "B" hat ebenfalls einen Fehler auf der Wikiseite "Seite XYZ" gefunden und korrigiert parallel zum Nutzer "A" die Seite, speichert aber vor Nutzer "A" seine Änderungen. Wenn jetzt Nutzer "A" speichert, dann werden die Änderungen von Nutzer "B" überschrieben, da Nutzer "A" auf einem alten Stand der Wikiseite gearbeitet hat. Dem Nutzer "A" soll jetzt eine Meldung ausgegeben werden, dass sein Stand der Seite veraltet ist. (Das nur zum Hintergrund, hat wahrscheinlich mit meinem eigentlichen Problem nicht unbedingt was zu tun.)
Machen kann man dass, indem man einen Timestamp "letzte_aenderung" an die Datenbank-Objekte hinzufügt und diesen Zeitstempel, z.B. über ein "Hidden-Field" auf der Bearbeitungsseite mitgibt. Dieses "Zeitstempel-Hidden-Field" wird dann vorm eigentlichen Speichern nochmal durch einen aktuelleren Datenbankzugriff auf das zu modifizierenden Objekt mit dem dort aktuell gespeicherten Zeitstempel verglichen. Sind die beiden Zeitstempel gleich, ist alles gut - sind die beiden Zeitstempel unterschiedlich, wurde das Objekt in der Zwischenzeit von jemanden anderen geändert und eine Warnung müsste ausgegeben werden. Das habe ich also vor...
Ich komme jetzt nicht weiter, in der HTML-Seite wird das Hidden-Field beispielhaft folgendermaßen dargestellt:
Code: Alles auswählen
<input id="id_bearbeitungszeitpunkt" type="hidden" value="24. Mai 2012 00:08:00" name="bearbeitungszeitpunkt">
Code: Alles auswählen
Fehler: <ul class="errorlist"><li>bearbeitungszeitpunkt<ul class="errorlist"><li>Bitte ein gültiges Datum und Uhrzeit eingeben.</li></ul></li></ul>

Viele Grüße und frohe Pfingsten
Piet