Hallo,
ich bin noch ein echter Anfänger.
kann man aus templates, portlets, etc. in einer Zeile über python
abfragen, ob der user Mitglied in Gruppe X ist? Ich meine so, wie
man sonst abfragt, ob der user Reviewer ist?
tal:condition="python:checkPermission('Review portal content', here)"
Geht sowas auch so einfach für die Abfrage der Mitglliedschaft in Gruppe X?
Ich habs versucht, aber bisher ohne Erfolg?
Oder muss man sich für sowas ein kurzes python script schreiben,
dass dann TRUE als state zurückliefert, wenn der user in Gruppe X ist.
Eigentlich doch ein sehr alltägliches Problem / eine sehr gängige
Anforderung, denke ich. Trotzdem hab ichs bisher nicht geschafft.
Vielen Dank allen, die mir helfen,
Ciao,
imbabura
Abfrage der Gruppenmitgliedschaft in einer Zeile?
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!
Vielleicht kannst du hier etwas nützliches für dich raus ziehen:
- http://www.python-forum.de/topic-8064.html
- http://www.python-forum.de/topic-3786.html
mfg
Gerold

Vielleicht kannst du hier etwas nützliches für dich raus ziehen:
- http://www.python-forum.de/topic-8064.html
- http://www.python-forum.de/topic-3786.html
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ich hab mir Dein Script angeguckt, was prüft, welche Mitglieder
noch in einer Gruppe sind und ein eigenes geschrieben, was nur
sagen soll, ob der aktuelle User Mitglied in Gruppe1 ist.
Das Script UserInGruppe1 sieht dann so aus:
Die Abfrage der Gruppenmitgliedschaft will ich in einem Portlet machen,
die Abfrage lautet dort also:
<tal:condition condition="python:UserInGruppe1">
es wird aber immer 0 geliefert, das Portlet verschwindet also ganz
Fehlermeldungen gibt es keine.
Auch in einer Zeile hab ich es versucht im Portlet:
<tal:condition condition="python:'Gruppe1' in context.portal_groups.getGroupsByUserId(context.portal_membership.getAuthenticatedMember())">
Ergebnis ist dasselbe: keine Fehlermeldung, aber Portlet verschwindet,
weil für python die Bedingung nicht erfüllt ist, die eigentlich erfüllt ist.
Zur Info: Die Seite läuft mit Plone 2.5.2 und den Anfang Deines Scripts mit
den ganzen ##bind context=context etc... hab ich vorsichtshalber beibehalten.
Wenn Du oder jemand anders einen Tipp hat, warums nicht
klappt, bzw. warum immer 0 zurückgegeben wird und was man
ändern müsste, wäre ich sehr dankbar.
Danke & Ciao,
Imbabura
noch in einer Gruppe sind und ein eigenes geschrieben, was nur
sagen soll, ob der aktuelle User Mitglied in Gruppe1 ist.
Das Script UserInGruppe1 sieht dann so aus:
Code: Alles auswählen
# überprüft, ob der Benutzer in der Gruppe1 ist
auth_member = context.portal_membership.getAuthenticatedMember()
auth_member_groups = context.portal_groups.getGroupsByUserId(auth_member)
if 'Gruppe1' in auth_member_groups:
return 1
else:
return 0
Die Abfrage der Gruppenmitgliedschaft will ich in einem Portlet machen,
die Abfrage lautet dort also:
<tal:condition condition="python:UserInGruppe1">
es wird aber immer 0 geliefert, das Portlet verschwindet also ganz

Fehlermeldungen gibt es keine.
Auch in einer Zeile hab ich es versucht im Portlet:
<tal:condition condition="python:'Gruppe1' in context.portal_groups.getGroupsByUserId(context.portal_membership.getAuthenticatedMember())">
Ergebnis ist dasselbe: keine Fehlermeldung, aber Portlet verschwindet,
weil für python die Bedingung nicht erfüllt ist, die eigentlich erfüllt ist.
Zur Info: Die Seite läuft mit Plone 2.5.2 und den Anfang Deines Scripts mit
den ganzen ##bind context=context etc... hab ich vorsichtshalber beibehalten.
Wenn Du oder jemand anders einen Tipp hat, warums nicht
klappt, bzw. warum immer 0 zurückgegeben wird und was man
ändern müsste, wäre ich sehr dankbar.
Danke & Ciao,
Imbabura
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Imbabura!imbabura hat geschrieben:<tal:condition condition="python:UserInGruppe1">
Ich habe jetzt keine Zeit um das nachzuprüfen:
Code: Alles auswählen
<tal:block tal:condition="context/UserInGruppe1">
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ich hab das Problem gelöst und das Script funktioniert und wird im portlet
ganz einfach aufgerufen über condition="python:context.group1member()"
Da es irgendwie nicht so schnell geklappt hat, den Namen der Gruppe in der Liste der Gruppen des Users zu finden, hab ichs umgekehrt gemacht und suche in der Liste der Gruppenmitglieder nach dem Namen des Users.
In meinem Fall Jacke wie Hose, da die entsprechende Gruppe nicht sehr viele Mitglieder hat und nie haben wird.
Das Script group1member sieht dann so aus:
Funktioniert endlich alles so wie's soll! 
ganz einfach aufgerufen über condition="python:context.group1member()"
Da es irgendwie nicht so schnell geklappt hat, den Namen der Gruppe in der Liste der Gruppen des Users zu finden, hab ichs umgekehrt gemacht und suche in der Liste der Gruppenmitglieder nach dem Namen des Users.
In meinem Fall Jacke wie Hose, da die entsprechende Gruppe nicht sehr viele Mitglieder hat und nie haben wird.
Das Script group1member sieht dann so aus:
Code: Alles auswählen
# überprüft, ob User zur group1 gehört
from Products.CMFCore.utils import getToolByName
group_id='group1'
member = context.portal_membership.getAuthenticatedMember()
tool = getToolByName(context, 'portal_groups')
group = tool.getGroupById(group_id)
group1MemberList = group.getGroupMemberIds()
if str(member) in group1MemberList:
return 1
else:
return 0
