Hi Gerold,
leider hilft mir das nicht. Es ist so: Ich habe ein Portal für unseren Flugverein germacht. Vorstandsmitglieder sollen über unsere Mitgliederliste die Möglichkeit haben, Mitgliederdaten zu bearbeiten. Ich möchte sie allerdings nicht zum Formular pref_user_details schicken, da sie dazu gar nicht die Berechtigung von mir bekommen. Sie haben "nur" die Rolle des Benutzers. Daher habe ich das Formular personalize_form so angepasst, dass es im Hauptdefine ein
Code: Alles auswählen
<div tal:define="benutzer python: context.request.get('username', context.REQUEST.AUTHENTICATED_USER.id)">
ein ermitteln ,der ggf. übergebenen Variable username gibt.
Wenn sie also auf "Meine Einstellungen -> Benutzereinstellungen" im Portal gehen, gelangen sie direkt zu ihren eigenen Einstellungen. Über unsere Mitgliederliste gelangen sie über die URL ...personalize_form?username=mitglied auf die Einstellungsseite zu einem beliebigen Mitglied. Das funktioniert wie gesagt auch super. Nur habe ich jetzt folgendes Problem:
Der selbst geschriebene Validator "validate_namens_angaben" setzt z.B., wenn kein Nachname angegeben worden ist einen Fehlerstatus
Auszug:
Code: Alles auswählen
def invalid(field):
if field == 'nachname':
state.setError('nachname', 'Du musst einen Nachnamen angeben!')
elif field == 'vorname':
state.setError(field, 'Du musst einen Vornamen angeben!')
return 1
fehler=0
if not nachname:
fehler = invalid('nachname')
if not vorname:
fehler = invalid('vorname')
# wenn ein Fehler aufgetreten ist, Meldung bringen
if fehler:
state.setStatus('failure')
Nun habe ich dem Formular eine Action gegeben, die bei einem Failure zum Formular traversiert, und dann im Beispiel das Namefeld orange hinterlegt. Blöderweise kann ich der Action als Argument nur folgendes eintragen:
Damit landet das Vorstandsmitglied aber dummerweise auf dem Formular mit den eigenen Kontaktdaten und nicht denen, des vorher selektierten Vereinsmitglieds!
Ein Action-Argument nach dem Motto
geht leider nicht.
Daher dachte ich, die Action bei einem Fehler ruft einfach ein Script, welches die userid bekommt und dann einen Traverse zum Formular mit Übergabe des Mitglied-Benutzernamen macht. So würden dann korrekt die Daten desjenigen angezeigt, von dem die Daten geändert werden sollen und das Fehlerfeld wäre orange hinterlegt.
Hoffe die Beschreibung ist nicht zu konfus geraten
Grüße
JR