Herramientas Personales
Usted está aquí: Inicio Utilidades Cambiar una propiedad a todos los usuarios

Cambiar una propiedad a todos los usuarios

Método externo que permite cambiar un valor de una propiedad de a todos los usuarios resgistrados.

Esta es una situación típica, por ejemplo, tras instalar el editor FCK deseaba que todos los usuario ya registrados les apareciera automáticamente.

Establecerlo por defecto en Plone sólo afecta a los nuevos usuarios que se registren. Mediante este método externo es posible cambiar una propiedad a todos los usuarios.

Para utilizarlo hay que introducirlo en un producto existente en la carpeta Extensions , para eso podeis buscar documentación sobre métodos externos.

Código fuente de util.py

import logging
log = logging.getLogger('Utilidades')

def setUserProperty(self,p_name,p_newvalue):
  """ Establece una determinada propiedad para todos los usuarios de Plone """
  
  # Obtengo la lista de los usuarios
  mtool = self.portal_membership
  users = mtool.searchForMembers()

  for user in users:
   log.info("Procesando el usuario "+user.getId())
   member_data =self.portal_memberdata
   
   #Obtengo la propiedad antigua y compruebo si difiere para cambiarla
   old_p=user.getProperty(p_name)
   if old_p!=p_newvalue:
      # Diccionario con las nuevas propiedades que se van a establecer
      p_news={}
      p_type=member_data.getPropertyType(p_name)
      # A veces hay problemas con los tipos en los que se guardan la propiedades
      # por seguridad hago 2 comprobaciones, deberían hacerse mas, pero a mi
      # me ha bastado con esto.
      if p_type=='float':
        p_news[p_name]=float(p_newvalue)
      elif p_type=='boolean': 
        p_news[p_name]= p_newvalue=='True'
      else:
        p_news[p_name]=p_newvalue
      self.plone_utils.setMemberProperties(user, **p_news)

¿Como ejecutarlo? 

Es sencillo, una vez creado el método externo en el ZMI de zope se puede llamar mediante su URL con los parámetros directamente. En mi caso para cambiar el editor FCK hice la siguiente llamada:

http://localhost:9673/miplone/setUserProperty?p_name=wysiwyg_editor&p_newvalue=FCKeditor

Finalmente, en el LOG de plone se puede ver el listado de usuarios al que se le ha cambiado la propiedad

Acciones de Documento