DAVID STAVASIUS a écrit :
>  
> Je 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
# $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)

_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>

Répondre à