Il 23/03/2010 16.10, Yuri ha scritto:
Se a te interessa solo cambiare la scritta e non il reale possessore, puoi fare un .setCreator(value='pippo') sull'oggetto. Il proprietario "Zope" rimane sempre lo stesso. Quindi se sei sicuro che Creator corrisponde al proprietario zope, usalo, altrimenti usa la chiamata per determinare il possessore, la trovi sempre nel template ownership_form.
no no, volevo proprio cambiare il proprietario a livello di zope. Alla fine ho fatto lo script che mi serviva, e sembra funzionare. E' lento, perché faccio getObject() senza ritegno su tutti gli oggetti del datafs, comunque deve essere eseguito una sola volta.

Grazie per gli aiuti preziosi e sperando che possa prima o poi tornare utile anche ad altri (anche fosse solo a titolo di esempio fatto male), ecco qui il codice:

-------------------------------------------------------------------------------------------------------------------

# Questo script definisce un dizionario di utenti (dictusers) e successivamente per ogni elemento restituito da portal_catalog, aggiorna il proprietario (sulla base del dizionario). # Questo script può essere utilizzato nel caso che un membro del portale debba essere rimosso, e la proprietà di tutti i suoi oggetti passata ad un altro membro, oppure per esempio quando una persona deve cambiare userid e portarsi dietro i propri documenti.
# Autore Giacomo Zanobini - g[dot]zanobini[at]arpat[dot]toscana[dot]it
# This program is free software; you can redistribuite it and/or modify it under the terms of the GNU/General Pubblic License as published the Free software Foundation; either version 3 of the License, or (at your opinion) any later version

# NOTA - la parte che modifica effettivamente il proprietario dell'oggetto è commentata e va decommentata


from Products.PythonScripts.standard import html_quote
from Products.CMFPlone import PloneMessageFactory as _
request = container.REQUEST
RESPONSE =  request.RESPONSE

#definisco il dizionario delle sostituzioni da effettuare
dictusers = {"utente1":"nuovoid-utente1",
             "utente2":"nuovoid-utente2",
             "default":"admin",}

# Return a string identifying this script.
print "Questo è lo ", script.meta_type, '"%s"' % script.getId(),
print " eseguito dal percorso ", container.absolute_url()
print


#chiedo al portal_catalog l'elenco degli oggetti catalogati
brains = context.portal_catalog( path='/', sort_on='effective', sort_order='reverse')

if brains:
    print "tipo,autore,proprietario,url"
else:
    print "nessun oggetto è stato restituito dal catalogo"

for brain in brains:
    oggetto = brain.getObject()
    owner = context.plone_utils.getOwnerName(oggetto)
print "%s,%s,%s,%s" % (oggetto.portal_type , oggetto.Creator() , owner , oggetto.absolute_url() ),

    if (owner == None):
        newuserid = dictusers["default"]
print ",NON HA PROPRIETARIO e quindi viene assegnato a %s" % (newuserid), #***decommentare questa riga se si vuole riassegnare gli oggetti senza proprietario*** context.plone_utils.changeOwnershipOf(oggetto, newuserid, recursive=0)

    if dictusers.has_key(owner):
        olduserid = owner
        newuserid = dictusers[olduserid]
        print ",il nuovo proprietario è %s" % (newuserid),

        # aggiorno il proprietario
#***decommentare questa riga*** context.plone_utils.changeOwnershipOf(oggetto, newuserid, recursive=0)

# volendo si potrebbe aggiornare anche Creator (andrebbero aggiornati tutti gli elementi della lista con setCreators())

    print

print "script terminato senza errori"
return printed

_______________________________________________
Plone-IT mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/plone-it
http://www.nabble.com/Plone---Italy-f21728.html

Rispondere a