Custom Archetype history aware.

8 messages Options
Embed this post
Permalink
SauZheR at gOOgle

Custom Archetype history aware.

Reply Threaded More More options
Print post
Permalink
Salve a tutti.
Non riesco a rendere un mio archetype HistoryAware.

Pensavo che la cosa dovesse essere semplice, sfruttando l'eredita'
multipla nella mia classe
class mio_oggetto(ATDocumentBase, HistoryAwareMixin):

ma cio' non basta.

Non mi compare il tab [storia] (ne' il box a scomparsa)

cosa sbaglio/dimentico?

grazie,
alessandro.


--
  bye
SauZheR
************************************
l'iterazione è umana...
la ricorsione, Divina!
************************************
reply to: sauzher AT gmail DOT com

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

Re: Custom Archetype history aware.

Reply Threaded More More options
Print post
Permalink
2009/9/16 SauZheR <[hidden email]>:
> Pensavo che la cosa dovesse essere semplice, sfruttando l'eredita'
> multipla nella mia classe
> class mio_oggetto(ATDocumentBase, HistoryAwareMixin):
>
> ma cio' non basta.
>
> Non mi compare il tab [storia] (ne' il box a scomparsa)
>

Devi fornire qualche file .xml di generic setup... non ricordo a memoria quale.
Guarda come fanno i tipi base in nel profile/defaul di CMFPlone

--
-- luca

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

Re: Custom Archetype history aware.

Reply Threaded More More options
Print post
Permalink
ciao, grazie del suggerimento, ma non e' cio' che intendo.

Nel profilo si fa riferimento ad un tab history che punta al template
actc_history, ed e' disabilitato perche' sostituito dal template
versions_history_form che fornisce strumenti piu' completi, oltre a
tenere traccia di commenti alle modifiche e ai cambiamenti di stato di
workflow.
Se provo a forzare l'url http://.../... mio oggetto/versions_history_form
ottengo un errore di portale: 'list' object has no attribute
'getLength' riferito a:
URL: file:/home/sauzher/.buildout/eggs/Products.CMFEditions-1.2.4-py2.4.egg/Products/CMFEditions/skins/CMFEditions/versions_history_form.pt
Line 7, Column 2
Expression: <PythonExpr history.getLength(countPurged=False)>


Questo tab history compare dinamicamente a seconda che il contesto sia
historyaware, ma non ho capito come dire al framework che il mio
contenuto lo e'...
ereditare la classe HistoryAware e implementare l'interfaccia
IHistoryAware non pare sufficiente.

Brancolo ancora.

Il 16 settembre 2009 14.42, Luca <[hidden email]> ha scritto:

> 2009/9/16 SauZheR <[hidden email]>:
>> Pensavo che la cosa dovesse essere semplice, sfruttando l'eredita'
>> multipla nella mia classe
>> class mio_oggetto(ATDocumentBase, HistoryAwareMixin):
>>
>> ma cio' non basta.
>>
>> Non mi compare il tab [storia] (ne' il box a scomparsa)
>>
>
> Devi fornire qualche file .xml di generic setup... non ricordo a memoria quale.
> Guarda come fanno i tipi base in nel profile/defaul di CMFPlone
>
> --
> -- luca
>
> _______________________________________________
> Plone-IT mailing list
> [hidden email]
> http://lists.plone.org/mailman/listinfo/plone-it
> http://www.nabble.com/Plone---Italy-f21728.html
>



--
  bye
SauZheR
************************************
l'iterazione è umana...
la ricorsione, Divina!
************************************
reply to: sauzher AT gmail DOT com

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

Re: Custom Archetype history aware.

Reply Threaded More More options
Print post
Permalink
2009/9/16 SauZheR <[hidden email]>:
> ciao, grazie del suggerimento, ma non e' cio' che intendo.
>
> Nel profilo si fa riferimento ad un tab history che punta al template
> actc_history, ed e' disabilitato perche' sostituito dal template
> versions_history_form che fornisce strumenti piu' completi, oltre a
> tenere traccia di commenti alle modifiche e ai cambiamenti di stato di
> workflow.

Uhmmm, hai ragione. Avevo dimenticato come di recente avessero
unificato la storia in quella vista...
Purtroppo non so cosa dirti, non ho ancora avuto questa necessità

--
-- luca

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

Re: Custom Archetype history aware.

Reply Threaded More More options
Print post
Permalink
In reply to this post by SauZheR at gOOgle
volendo analizzare il codice...
CMFEdition testa la condizione sulla variabile:
VERSIONABLE_CONTENT_TYPES

La cosa simpatica, ai miei occhi, e' che tale costante viene
istanziata a [ ] (lista vuota) all'inizio del file, dopodiche' non
compare MAI a sinistra di un'assegnazione, sia nel file che greppando
tra tutti gli eggs che ho nel buildout.

very confused.

Il 16 settembre 2009 15.02, SauZheR <[hidden email]> ha scritto:

> ciao, grazie del suggerimento, ma non e' cio' che intendo.
>
> Nel profilo si fa riferimento ad un tab history che punta al template
> actc_history, ed e' disabilitato perche' sostituito dal template
> versions_history_form che fornisce strumenti piu' completi, oltre a
> tenere traccia di commenti alle modifiche e ai cambiamenti di stato di
> workflow.
> Se provo a forzare l'url http://.../... mio oggetto/versions_history_form
> ottengo un errore di portale:   'list' object has no attribute
> 'getLength' riferito a:
> URL: file:/home/sauzher/.buildout/eggs/Products.CMFEditions-1.2.4-py2.4.egg/Products/CMFEditions/skins/CMFEditions/versions_history_form.pt
> Line 7, Column 2
> Expression: <PythonExpr history.getLength(countPurged=False)>
>
>
> Questo tab history compare dinamicamente a seconda che il contesto sia
> historyaware, ma non ho capito come dire al framework che il mio
> contenuto lo e'...
> ereditare la classe HistoryAware e implementare l'interfaccia
> IHistoryAware non pare sufficiente.
>
> Brancolo ancora.
>
> Il 16 settembre 2009 14.42, Luca <[hidden email]> ha scritto:
>> 2009/9/16 SauZheR <[hidden email]>:
>>> Pensavo che la cosa dovesse essere semplice, sfruttando l'eredita'
>>> multipla nella mia classe
>>> class mio_oggetto(ATDocumentBase, HistoryAwareMixin):
>>>
>>> ma cio' non basta.
>>>
>>> Non mi compare il tab [storia] (ne' il box a scomparsa)
>>>
>>
>> Devi fornire qualche file .xml di generic setup... non ricordo a memoria quale.
>> Guarda come fanno i tipi base in nel profile/defaul di CMFPlone
>>
>> --
>> -- luca
>>
>> _______________________________________________
>> Plone-IT mailing list
>> [hidden email]
>> http://lists.plone.org/mailman/listinfo/plone-it
>> http://www.nabble.com/Plone---Italy-f21728.html
>>
>
>
>
> --
>  bye
> SauZheR
> ************************************
> l'iterazione è umana...
> la ricorsione, Divina!
> ************************************
> reply to: sauzher AT gmail DOT com
>



--
  bye
SauZheR
************************************
l'iterazione è umana...
la ricorsione, Divina!
************************************
reply to: sauzher AT gmail DOT com

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

Re: Custom Archetype history aware.

Reply Threaded More More options
Print post
Permalink
mi ha risposto Aspeli sulla lista product developer.

La cosa e' tremendamente semplice... (e ti pareva).
Non c'entra la storia historyaware. Basta andare nel pannello di
controllo dei tipi in plone, selezionare il proprio tipo dalla
tendina, e flaggare la checkbox relativa al versionamento.

Il resto va da se.

alessandro.

Il 16 settembre 2009 15.17, SauZheR <[hidden email]> ha scritto:

> volendo analizzare il codice...
> CMFEdition testa la condizione sulla variabile:
> VERSIONABLE_CONTENT_TYPES
>
> La cosa simpatica, ai miei occhi, e' che tale costante viene
> istanziata a [ ] (lista vuota) all'inizio del file, dopodiche' non
> compare MAI a sinistra di un'assegnazione, sia nel file che greppando
> tra tutti gli eggs che ho nel buildout.
>
> very confused.
>
> Il 16 settembre 2009 15.02, SauZheR <[hidden email]> ha scritto:
>> ciao, grazie del suggerimento, ma non e' cio' che intendo.
>>
>> Nel profilo si fa riferimento ad un tab history che punta al template
>> actc_history, ed e' disabilitato perche' sostituito dal template
>> versions_history_form che fornisce strumenti piu' completi, oltre a
>> tenere traccia di commenti alle modifiche e ai cambiamenti di stato di
>> workflow.
>> Se provo a forzare l'url http://.../... mio oggetto/versions_history_form
>> ottengo un errore di portale:   'list' object has no attribute
>> 'getLength' riferito a:
>> URL: file:/home/sauzher/.buildout/eggs/Products.CMFEditions-1.2.4-py2.4.egg/Products/CMFEditions/skins/CMFEditions/versions_history_form.pt
>> Line 7, Column 2
>> Expression: <PythonExpr history.getLength(countPurged=False)>
>>
>>
>> Questo tab history compare dinamicamente a seconda che il contesto sia
>> historyaware, ma non ho capito come dire al framework che il mio
>> contenuto lo e'...
>> ereditare la classe HistoryAware e implementare l'interfaccia
>> IHistoryAware non pare sufficiente.
>>
>> Brancolo ancora.
>>
>> Il 16 settembre 2009 14.42, Luca <[hidden email]> ha scritto:
>>> 2009/9/16 SauZheR <[hidden email]>:
>>>> Pensavo che la cosa dovesse essere semplice, sfruttando l'eredita'
>>>> multipla nella mia classe
>>>> class mio_oggetto(ATDocumentBase, HistoryAwareMixin):
>>>>
>>>> ma cio' non basta.
>>>>
>>>> Non mi compare il tab [storia] (ne' il box a scomparsa)
>>>>
>>>
>>> Devi fornire qualche file .xml di generic setup... non ricordo a memoria quale.
>>> Guarda come fanno i tipi base in nel profile/defaul di CMFPlone
>>>
>>> --
>>> -- luca
>>>
>>> _______________________________________________
>>> Plone-IT mailing list
>>> [hidden email]
>>> http://lists.plone.org/mailman/listinfo/plone-it
>>> http://www.nabble.com/Plone---Italy-f21728.html
>>>
>>
>>
>>
>> --
>>  bye
>> SauZheR
>> ************************************
>> l'iterazione è umana...
>> la ricorsione, Divina!
>> ************************************
>> reply to: sauzher AT gmail DOT com
>>
>
>
>
> --
>  bye
> SauZheR
> ************************************
> l'iterazione è umana...
> la ricorsione, Divina!
> ************************************
> reply to: sauzher AT gmail DOT com
>



--
  bye
SauZheR
************************************
l'iterazione è umana...
la ricorsione, Divina!
************************************
reply to: sauzher AT gmail DOT com

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

Re: Custom Archetype history aware.

Reply Threaded More More options
Print post
Permalink
2009/9/17 SauZheR <[hidden email]>:
> mi ha risposto Aspeli sulla lista product developer.
>
> La cosa e' tremendamente semplice... (e ti pareva).
> Non c'entra la storia historyaware. Basta andare nel pannello di
> controllo dei tipi in plone, selezionare il proprio tipo dalla
> tendina, e flaggare la checkbox relativa al versionamento.
>
> Il resto va da se.
>

:-)

Ma per farlo automaticamente all'installazione del prodotto?!

--
-- luca

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

Re: Custom Archetype history aware.

Reply Threaded More More options
Print post
Permalink
allora.
io ho fatto riferimento alla classe
plone.app.controlpanel.types.TypesControlPanel.

Estrapolando un metodo di servizio e sostituendo una costante ho
ricopiato il codice, sicuramente sovrabbondante, da inglobare in un
import_step del profilo del tuo prodotto.

#####
#setuphandler.py
#####
from Products.CMFCore.utils import getToolByName
from plone.app.controlpanel.types import VERSION_POLICIES

MY_TYPE = 'tipo mio' # il portal_type del tuo tipo

def setupVarious(context):
    site = context.getSite()

    portal_types = getToolByName(site, 'portal_types')
    portal_repository = getToolByName(site,
                                        'portal_repository')
    portal_properties = getToolByName(site,
                                        'portal_properties')
    site_properties = getattr(portal_properties, 'site_properties')

    type_id = MY_TYPE

    fti = getattr(portal_types, type_id)

    # Set FTI properties

    version_policy = 'automatic'
    current_version_policy= ''

    if type_id not in portal_repository.getVersionableContentTypes():
        current_version_policy = "off"
        policy = set(portal_repository.getPolicyMap().get(type_id, ()))
        for info in VERSION_POLICIES:
            if set(info["policy"]) == policy:
                current_version_policy = info["id"]
        current_version_policy = None


    if version_policy!=current_version_policy:
        newpolicy=[p for p in VERSION_POLICIES if p["id"]==version_policy][0]

        versionable_types = list(portal_repository.getVersionableContentTypes())
        if not newpolicy["policy"]:
            if type_id in versionable_types:
                versionable_types.remove(type_id)
        else:
            if type_id not in versionable_types:
                versionable_types.append(type_id)

        for policy in portal_repository.listPolicies():
            policy_id = policy.getId()
            if policy_id in newpolicy["policy"]:
                portal_repository.addPolicyForContentType(type_id, policy_id)
            else:
                portal_repository.removePolicyFromContentType(type_id,
policy_id)

        portal_repository.setVersionableContentTypes(versionable_types)
#####
#####

ripeto,
magari si puo' raffinare un tantino, ma di funzionare funziona :)

bye




Il 17 settembre 2009 14.11, Luca <[hidden email]> ha scritto:

> 2009/9/17 SauZheR <[hidden email]>:
>> mi ha risposto Aspeli sulla lista product developer.
>>
>> La cosa e' tremendamente semplice... (e ti pareva).
>> Non c'entra la storia historyaware. Basta andare nel pannello di
>> controllo dei tipi in plone, selezionare il proprio tipo dalla
>> tendina, e flaggare la checkbox relativa al versionamento.
>>
>> Il resto va da se.
>>
>
> :-)
>
> Ma per farlo automaticamente all'installazione del prodotto?!
>
> --
> -- luca
>


--
  bye
SauZheR
************************************
l'iterazione è umana...
la ricorsione, Divina!
************************************
reply to: sauzher AT gmail DOT com

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