Giacomo Zanobini ha scritto:
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:

Grazie :)



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

if brains:

aggiungi <> None, altrimenti possono capitare chiamate a chissacchì :D

    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() ),

brain.portal_type


    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())

setCreator()


    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