Post by DAVID STAVASIUSJe cherche à affecter un groupe à plusieurs utilisateurs et ce via un script python mais je n'y arrive pas...
Zope Version
(Zope 2.8.1-final, python 2.4.3, linux2)
CPS Version
(CPS-3.3.2)
Ci-joint un module directories.py (que je copie également en bas
de ce courriel, mais le fichier attaché sera plus rapide à exploiter)
d'exemple à mettre dans un répertoire Extensions de votre choix
(par exemple celui à la racine de votre instance Zope, ou celui
d'un produit que vous aurez développé).
Pour l'exécuter il faut :
1. Créer une External Method à la racine de votre instance Zope
avec les paramètres suivants :
Id : setSomeGroupToSomeUsers
Module Name : directories
Function Name : setSomeGroupToSomeUsers
2. Exécuter cette External Method en allant sur le lien
de l'onglet « Test »
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
"""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)
Cordialement,
--
Marc-Aurèle DARCHE
AFUL http://www.aful.org/
Association Francophone des Utilisateurs de Logiciels Libres
French speaking Libre Software Users' Association