Re: Script python pour affecter un grou pe à un utilisateur
"M.-A. DARCHE" <[email protected]> Thu, 17 Sep 2009 14:47:54 +0200
| Newsgroups | gmane.comp.web.zope.cps.general.french |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--------------060102010808000901090208
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
DAVID STAVASIUS a =E9crit :
> =20
> Je cherche =E0 affecter un groupe =E0 plusieurs utilisateurs et ce via =
un script python mais je n'y arrive pas...
>=20
> Zope Version=20
> (Zope 2.8.1-final, python 2.4.3, linux2)=20
>=20
> CPS Version=20
> (CPS-3.3.2)
>=20
Ci-joint un module directories.py (que je copie =E9galement en bas
de ce courriel, mais le fichier attach=E9 sera plus rapide =E0 exploiter)
d'exemple =E0 mettre dans un r=E9pertoire Extensions de votre choix
(par exemple celui =E0 la racine de votre instance Zope, ou celui
d'un produit que vous aurez d=E9velopp=E9).
Pour l'ex=E9cuter il faut :
1. Cr=E9er une External Method =E0 la racine de votre instance Zope
avec les param=E8tres suivants :
Id : setSomeGroupToSomeUsers
Module Name : directories
Function Name : setSomeGroupToSomeUsers
2. Ex=E9cuter cette External Method en allant sur le lien
de l'onglet =AB Test =BB
=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D=
-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D
"""Module for external methods.
"""
import logging
from AccessControl import Unauthorized
from Products.CMFCore.CMFCorePermissions import View, ManagePortal
from Products.CMFCore.utils import getToolByName
from Products.CMFCore.utils import _checkPermission
LOG_KEY =3D 'directories'
def setSomeGroupToSomeUsers(self):
"""Set a group to several users.
"""
log_key =3D LOG_KEY + '.setSomeGroupToSomeUsers'
logger =3D logging.getLogger(log_key)
logger.debug("...")
utool =3D getToolByName(self, 'portal_url')
portal =3D utool.getPortalObject()
if not _checkPermission(ManagePortal, portal):
raise Unauthorized("You need the ManagePortal permission.")
dtool =3D getToolByName(self, 'portal_directories')
members_directory =3D dtool.members
# The method returns a list of tuples containing the member id
# and a dictionary of available fields:
# [('member1', {'email': 'foo', 'age': 75}), ('member2', {'age': 5})]
#entries =3D members_directory.searchEntries(return_fields=3Dreturn_f=
ields,
entries_ids =3D members_directory.listEntryIds()
for entry_id in entries_ids:
entry =3D members_directory.getEntry(entry_id)
logger.debug("entry =3D %s" % str(entry))
# Uncomment this to also modify the roles
#entry['roles'] =3D ['Member']
# Modifying the entry
groups =3D list(entry['groups'])
logger.debug("previous groups =3D %s" % str(groups))
groups.append('another_group')
logger.debug("new groups =3D %s" % str(groups))
entry['groups'] =3D groups
# Saving the modified entry in the directory
members_directory.editEntry(entry)
Cordialement,
--=20
Marc-Aur=E8le DARCHE
AFUL http://www.aful.org/
Association Francophone des Utilisateurs de Logiciels Libres
French speaking Libre Software Users' Association
--------------060102010808000901090208
Content-Type: text/x-python;
name="directories.py"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="directories.py"
# $Id: util.py 280 2008-12-10 17:04:16Z madarche $
"""Module for external methods.
"""
import logging
from AccessControl import Unauthorized
from Products.CMFCore.CMFCorePermissions import View, ManagePortal
from Products.CMFCore.utils import getToolByName
from Products.CMFCore.utils import _checkPermission
LOG_KEY = 'directories'
def setSomeGroupToSomeUsers(self):
"""Set a group to several users.
"""
log_key = LOG_KEY + '.setSomeGroupToSomeUsers'
logger = logging.getLogger(log_key)
logger.debug("...")
utool = getToolByName(self, 'portal_url')
portal = utool.getPortalObject()
if not _checkPermission(ManagePortal, portal):
raise Unauthorized("You need the ManagePortal permission.")
dtool = getToolByName(self, 'portal_directories')
members_directory = dtool.members
# The method returns a list of tuples containing the member id
# and a dictionary of available fields:
# [('member1', {'email': 'foo', 'age': 75}), ('member2', {'age': 5})]
#entries = members_directory.searchEntries(return_fields=return_fields,
entries_ids = members_directory.listEntryIds()
for entry_id in entries_ids:
entry = members_directory.getEntry(entry_id)
logger.debug("entry = %s" % str(entry))
# Uncomment this to also modify the roles
#entry['roles'] = ['Member']
# Modifying the entry
groups = list(entry['groups'])
logger.debug("previous groups = %s" % str(groups))
groups.append('another_group')
logger.debug("new groups = %s" % str(groups))
entry['groups'] = groups
# Saving the modified entry in the directory
members_directory.editEntry(entry)
--------------060102010808000901090208
Content-Type: text/plain; charset="iso-8859-1"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-user=
s-fr>
--------------060102010808000901090208--