cercatori (o smart folder)

12 messages Options
Embed this post
Permalink
jack1973

cercatori (o smart folder)

Reply Threaded More More options
Print post
Permalink

ciao a tutti, premetto che non ho dimestichezza con le cose in oggetto
(e quindi rischio di fare una domanda banale)

supponendo di avere nella root del sito due cartelle:
CANI
GATTI

vorrei creare un cercatore che mi desse come risultati l'UNIONE di
queste due regole:
1) le pagine presenti nella cartella CANI
2) i file presenti nella cartella GATTI

non ho capito se devo usare i cercatori subordinati, o altro modo.

io ho tentato (con esito negativo) di creare due cercatori separati e
poi un terzo che effettuasse l'unione dei due precedenti. Purtroppo non
è possibile impostare come "posizione" un cercatore (come se fosse una
cartella)

qualche suggerimento?

Giacomo




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

Re: cercatori (o smart folder)

Reply Threaded More More options
Print post
Permalink
Ciao Giacomo,

semplice, devi creare un unico cercatore ed impostare quattro criteri  
di ricerca, due criteri path in or (uno per la cartella gatti e uno  
per la cartella cani) e due criteri sul tipo in or (pagine e file)

Il giorno 15/ott/09, alle ore 15:27, Giacomo Zanobini ha scritto:

>
> ciao a tutti, premetto che non ho dimestichezza con le cose in  
> oggetto (e quindi rischio di fare una domanda banale)
>
> supponendo di avere nella root del sito due cartelle:
> CANI
> GATTI
>
> vorrei creare un cercatore che mi desse come risultati l'UNIONE di  
> queste due regole:
> 1) le pagine presenti nella cartella CANI
> 2) i file presenti nella cartella GATTI
>
> non ho capito se devo usare i cercatori subordinati, o altro modo.
>
> io ho tentato (con esito negativo) di creare due cercatori separati  
> e poi un terzo che effettuasse l'unione dei due precedenti.  
> Purtroppo non è possibile impostare come "posizione" un cercatore  
> (come se fosse una cartella)
>
> qualche suggerimento?
>
> Giacomo
>
>
>
> _______________________________________________
> Plone-IT mailing list
> [hidden email]
> http://lists.plone.org/mailman/listinfo/plone-it
> http://www.nabble.com/Plone---Italy-f21728.html

Vincenzo Barone-Web Architect-Project Manager [[hidden email]
]
Abstract Open Solutions [ http://www.abstract.it ]
Mobile +39 392 9808086/Tel. 02320624747 - 0810608213/Fax 0810608213












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

Re: cercatori (o smart folder)

Reply Threaded More More options
Print post
Permalink
Vincenzo Barone ha scritto:
> Ciao Giacomo,
>
> semplice, devi creare un unico cercatore ed impostare quattro criteri
> di ricerca, due criteri path in or (uno per la cartella gatti e uno
> per la cartella cani) e due criteri sul tipo in or (pagine e file)
ma in questo modo non mi ritrovo anche i file presenti nella cartella
CANI e le pagine presenti nella cartella GATTI ?



>
> Il giorno 15/ott/09, alle ore 15:27, Giacomo Zanobini ha scritto:
>
>>
>> ciao a tutti, premetto che non ho dimestichezza con le cose in
>> oggetto (e quindi rischio di fare una domanda banale)
>>
>> supponendo di avere nella root del sito due cartelle:
>> CANI
>> GATTI
>>
>> vorrei creare un cercatore che mi desse come risultati l'UNIONE di
>> queste due regole:
>> 1) le pagine presenti nella cartella CANI
>> 2) i file presenti nella cartella GATTI
>>
>> non ho capito se devo usare i cercatori subordinati, o altro modo.
>>
>> io ho tentato (con esito negativo) di creare due cercatori separati e
>> poi un terzo che effettuasse l'unione dei due precedenti. Purtroppo
>> non è possibile impostare come "posizione" un cercatore (come se
>> fosse una cartella)
>>
>> qualche suggerimento?
>>
>> Giacomo
>>
>>
>>
>> _______________________________________________
>> Plone-IT mailing list
>> [hidden email]
>> http://lists.plone.org/mailman/listinfo/plone-it
>> http://www.nabble.com/Plone---Italy-f21728.html
>
> Vincenzo Barone-Web Architect-Project Manager
> [[hidden email]]
> Abstract Open Solutions [ http://www.abstract.it ]
> Mobile +39 392 9808086/Tel. 02320624747 - 0810608213/Fax 0810608213
>
>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> Plone-IT mailing list
> [hidden email]
> http://lists.plone.org/mailman/listinfo/plone-it
> http://www.nabble.com/Plone---Italy-f21728.html


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

Re: cercatori (o smart folder)

Reply Threaded More More options
Print post
Permalink
In reply to this post by jack1973
Ciao,
prova ad archiviarle sotto un nome..
vai su modifica cartella o oggetto , vicino deafault c'è Categorizzazione..
cartella cane archivi come cane etc etc.
poi crei una collezione che richiami tutto ciò che è archiviato come key
"cane"..
ciao

>
> ciao a tutti, premetto che non ho dimestichezza con le cose in oggetto
> (e quindi rischio di fare una domanda banale)
>
> supponendo di avere nella root del sito due cartelle:
> CANI
> GATTI
>
> vorrei creare un cercatore che mi desse come risultati l'UNIONE di
> queste due regole:
> 1) le pagine presenti nella cartella CANI
> 2) i file presenti nella cartella GATTI
>
> non ho capito se devo usare i cercatori subordinati, o altro modo.
>
> io ho tentato (con esito negativo) di creare due cercatori separati e
> poi un terzo che effettuasse l'unione dei due precedenti. Purtroppo non
> è possibile impostare come "posizione" un cercatore (come se fosse una
> cartella)
>
> qualche suggerimento?
>
> Giacomo
>
>
>
> _______________________________________________
> Plone-IT mailing list
> [hidden email]
> http://lists.plone.org/mailman/listinfo/plone-it
> http://www.nabble.com/Plone---Italy-f21728.html



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

Re: cercatori (o smart folder)

Reply Threaded More More options
Print post
Permalink
In reply to this post by jack1973
Ciao Giacomo,

> ciao a tutti, premetto che non ho dimestichezza con le cose in oggetto
> (e quindi rischio di fare una domanda banale)
>
> supponendo di avere nella root del sito due cartelle:
> CANI
> GATTI
>
> vorrei creare un cercatore che mi desse come risultati l'UNIONE di
> queste due regole:
> 1) le pagine presenti nella cartella CANI
> 2) i file presenti nella cartella GATTI
>
> non ho capito se devo usare i cercatori subordinati, o altro modo.
>
> io ho tentato (con esito negativo) di creare due cercatori separati e
> poi un terzo che effettuasse l'unione dei due precedenti. Purtroppo non
> è possibile impostare come "posizione" un cercatore (come se fosse una
> cartella)
>
> qualche suggerimento?
Puoi aggiungere un topicindex che ti dice se il tuo oggetto corrisponde a quella condizione e poi usarlo
come criterio nella collezione/cercatore.

Fabry



--
Fabrizio Reale

Redomino S.r.l.
Largo Valgioie 14,
10146 Torino Italy
Tel: +39 0117499875
http://redomino.com


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

Re: cercatori (o smart folder)

Reply Threaded More More options
Print post
Permalink
In reply to this post by ryuga
[hidden email] ha scritto:
> Ciao,
> prova ad archiviarle sotto un nome..
> vai su modifica cartella o oggetto , vicino deafault c'è Categorizzazione..
> cartella cane archivi come cane etc etc.
> poi crei una collezione che richiami tutto ciò che è archiviato come key
> "cane"..
> ciao
>  
un elegante workaround, ma chi inserisce i contenuti non vuole mettersi
a taggarli (almeno non in questo caso in cui gli sembra una informazione
ripetuta)
ci vuole una cosa più automatica


grazie, comunque



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

Re: cercatori (o smart folder)

Reply Threaded More More options
Print post
Permalink
In reply to this post by jack1973
On Thursday 15 October 2009, Giacomo Zanobini wrote:

> ciao a tutti, premetto che non ho dimestichezza con le cose in oggetto
> (e quindi rischio di fare una domanda banale)
>
> supponendo di avere nella root del sito due cartelle:
> CANI
> GATTI
>
> vorrei creare un cercatore che mi desse come risultati l'UNIONE di
> queste due regole:
> 1) le pagine presenti nella cartella CANI
> 2) i file presenti nella cartella GATTI
>
> non ho capito se devo usare i cercatori subordinati, o altro modo.
>
> io ho tentato (con esito negativo) di creare due cercatori separati e
> poi un terzo che effettuasse l'unione dei due precedenti. Purtroppo non
> è possibile impostare come "posizione" un cercatore (come se fosse una
> cartella)
>
> qualche suggerimento?
>
> Giacomo
Non puoi usare direttamente un cercatore perchè non supporta questo tipo di
query. Ci sono diverse alternative, quella più pulita si fa tramite un
indice, ecco una bozza di codice:

from Products.CMFPlone.CatalogTool import registerIndexableAttribute

def cani_e_gatti(obj, portal, **kw):
    if ('CANI' in obj.absolute_url() and obj.Type()=='Page') or
       ('GATTI' in obj.absolute_url() and obj.Type()=='File') :
       return True
    else:
       return False

registerIndexableAttribute('cani_e_gatti', cani_e_gatti)

a questo punto aggiungi l'indice al portal_catalog e configuri tramite 'site
setup' i topic in modo che possano usarlo.
--
Riccardo Lemmi                           Email:   [hidden email]
Reflab S.r.l. - Plone Design, Development and Consulting
Phone: +39 349 4620820                         http://www.reflab.it


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

signature.asc (196 bytes) Download Attachment
Davide Moro-2

Re: cercatori (o smart folder)

Reply Threaded More More options
Print post
Permalink
Il giorno gio, 15/10/2009 alle 15.58 +0200, Riccardo Lemmi ha scritto:

> from Products.CMFPlone.CatalogTool import registerIndexableAttribute
>
> def cani_e_gatti(obj, portal, **kw):
>     if ('CANI' in obj.absolute_url() and obj.Type()=='Page') or
>        ('GATTI' in obj.absolute_url() and obj.Type()=='File') :
>        return True
>     else:
>        return False
>
> registerIndexableAttribute('cani_e_gatti', cani_e_gatti)
Esatto.

Visto che siamo sull'argomento registrazione indici di catalogo vorrei
segnalare l'utilizzo di collective.indexing: davvero molto carino e
flessibile :)

http://plone.org/products/collective.indexing

E'incluso di default a partire di plone 3.3, versione a partire dalla
quale registerIndexableAttribute viene indicata come deprecata; da plone
4 in poi invece dovrebbe proprio sparire.

Ciao,

davide


--
Davide Moro

Redomino S.r.l.
Largo Valgioie 14,
10146 Torino Italy
Tel: +39 0117499875
http://redomino.com



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

Re: cercatori (o smart folder)

Reply Threaded More More options
Print post
Permalink
Il giorno gio, 15/10/2009 alle 16.43 +0200, Davide Moro ha scritto:

> Il giorno gio, 15/10/2009 alle 15.58 +0200, Riccardo Lemmi ha scritto:
> > from Products.CMFPlone.CatalogTool import registerIndexableAttribute
> >
> > def cani_e_gatti(obj, portal, **kw):
> >     if ('CANI' in obj.absolute_url() and obj.Type()=='Page') or
> >        ('GATTI' in obj.absolute_url() and obj.Type()=='File') :
> >        return True
> >     else:
> >        return False
> >
> > registerIndexableAttribute('cani_e_gatti', cani_e_gatti)
>
> Esatto.
>
> Visto che siamo sull'argomento registrazione indici di catalogo vorrei
> segnalare l'utilizzo di collective.indexing: davvero molto carino e
> flessibile :)
>
> http://plone.org/products/collective.indexing
Sorry, sbagliato link e nome!
Ora correggo :)

--
Davide Moro

Redomino S.r.l.
Largo Valgioie 14,
10146 Torino Italy
Tel: +39 0117499875
http://redomino.com



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

Re: cercatori (o smart folder)

Reply Threaded More More options
Print post
Permalink
Il giorno gio, 15/10/2009 alle 16.47 +0200, Davide Moro ha scritto:

> Il giorno gio, 15/10/2009 alle 16.43 +0200, Davide Moro ha scritto:
> > Il giorno gio, 15/10/2009 alle 15.58 +0200, Riccardo Lemmi ha scritto:
> > > from Products.CMFPlone.CatalogTool import registerIndexableAttribute
> > >
> > > def cani_e_gatti(obj, portal, **kw):
> > >     if ('CANI' in obj.absolute_url() and obj.Type()=='Page') or
> > >        ('GATTI' in obj.absolute_url() and obj.Type()=='File') :
> > >        return True
> > >     else:
> > >        return False
> > >
> > > registerIndexableAttribute('cani_e_gatti', cani_e_gatti)
> >
> > Esatto.
> >
> > Visto che siamo sull'argomento registrazione indici di catalogo vorrei
> > segnalare l'utilizzo di collective.indexing: davvero molto carino e
> > flessibile :)
> >
> > http://plone.org/products/collective.indexing
>
> Sorry, sbagliato link e nome!
> Ora correggo :)
plone.indexer
http://pypi.python.org/pypi/plone.indexer/

... ho scambiato i nomi, eeheh:)

--
Davide Moro

Redomino S.r.l.
Largo Valgioie 14,
10146 Torino Italy
Tel: +39 0117499875
http://redomino.com



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

Re: cercatori (o smart folder)

Reply Threaded More More options
Print post
Permalink
In reply to this post by ryuga

>> ciao a tutti, premetto che non ho dimestichezza con le cose in oggetto
>> (e quindi rischio di fare una domanda banale)
>>
>> supponendo di avere nella root del sito due cartelle:
>> CANI
>> GATTI
>>
>> vorrei creare un cercatore che mi desse come risultati l'UNIONE di
>> queste due regole:
>> 1) le pagine presenti nella cartella CANI
>> 2) i file presenti nella cartella GATTI
>>    

Con i cercatori puoi usare solo criteri in AND, mi pare, quindi non puoi
fare questo tipo di ricerche.

Ti conviene fare una query al catalogo direttamente (usando la sintassi
che trovi qui:
http://www.dieter.handshake.de/pyprojects/zope/AdvancedQuery.html) che è
supportata da Plone, copiare il folder_view passandogli gli elementi
risultanti.

Oppure segui la dritta qui:

http://groups.google.it/group/plone-users/browse_thread/thread/7435080ae6c5fb6d

cioè crei un indice specializzato che dica si o no (risultato di uno
script) a seconda del fatto che debba o meno essere incluso nei
risultati. Dopo di che, alla query che include cani e gatti, aggiungi un
criterio booleano su quell'indice.

Oppure metti la ricerca solo su quell'indice a questo punto.

>> non ho capito se devo usare i cercatori subordinati, o altro modo.
>>
>> io ho tentato (con esito negativo) di creare due cercatori separati e
>> poi un terzo che effettuasse l'unione dei due precedenti. Purtroppo non
>> è possibile impostare come "posizione" un cercatore (come se fosse una
>> cartella)
>>
>> qualche suggerimento?
>>
>> Giacomo
>>
>>
>>
>> _______________________________________________
>> Plone-IT mailing list
>> [hidden email]
>> http://lists.plone.org/mailman/listinfo/plone-it
>> http://www.nabble.com/Plone---Italy-f21728.html
>>    
>
>
>
> _______________________________________________
> Plone-IT mailing list
> [hidden email]
> http://lists.plone.org/mailman/listinfo/plone-it
> http://www.nabble.com/Plone---Italy-f21728.html
>  


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

Re: cercatori (o smart folder)

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
a conclusione del dibattito, volevo riassumere ciò che ho fatto, perchè penso che potrebbe tornare utile a qualcuno, in futuro.

come ha detto Yuri:

Con i cercatori puoi usare solo criteri in AND, mi pare, quindi non puoi fare questo tipo di ricerche.


Ti conviene fare una query al catalogo direttamente (usando la sintassi che trovi qui: http://www.dieter.handshake.de/pyprojects/zope/AdvancedQuery.html) che è supportata da Plone, copiare il folder_view passandogli gli elementi risultanti.

Oppure segui la dritta qui:

http://groups.google.it/group/plone-users/browse_thread/thread/7435080ae6c5fb6d

cioè crei un indice specializzato che dica si o no (risultato di uno script) a seconda del fatto che debba o meno essere incluso nei risultati. Dopo di che, alla query che include cani e gatti, aggiungi un criterio booleano su quell'indice.
mi pare che entrambe le soluzioni non siano facili per un utente di bassa lega che voglia modificare i criteri di ricerca.

la mia soluzione è con due due external method:
il primo unisce i risultati di due cercatori,
il secondo li ordina (per esempio potrei passare il criterio "Title", oppure data di pubblicazione)

in qualsiasi page template, posso quindi definire due liste (popolate con i risultati di due cercatori)
che successivamente fondo e riordino sulla base di un campo passato come parametro (purché comune a tutti gli elementi delle due liste)



ecco un esempio (ricordo il problema iniziale: avere una lista che contenesse l'unione dei risultati di due o piu' cercatori)
siano list1 e list2 due cercatori (uno per i cani e l'altro per i gatti)
ho messo il seguente codice in un page template che mi serve per visualizzare
        <tal:foldercontents define="
                            folderContents1 python:container.list1.queryCatalog();
                            folderContents2 python:container.list2.queryCatalog();
                            folderContents python:context.list_join(folderContents1, folderContents2);
                            folderContents python:context.sort_by_attr(folderContents,'Title');


DOMANDA:
mi rimane da capire un misterioso comportamento (di python e dei cercatori) che mi causava un errore (non sempre, dipendeva da come avevo definito i due cercatori)
date due liste folderContents1  e folderContents2 che contengono i risultati di due cercatori (simili come criteri, ma non uguali)

python:folderContents1 + folderContents1     NON dà errore
python:folderContents2 + folderContents2     NON dà errore
python:folderContents1 + folderContents2     DA' ERRORE a runtime e dice che non posso unire stringhe a liste (eppure sono due liste non vuote)
python:folderContents2 + folderContents1     DA' ERRORE a runtime diverso da quello della riga precedente (ovvero cambiando l'ordine degli addendi, cambia l'errore)

in sostanza non posso unire due liste usando l'operatore di somma
mi è toccato usare (nel codice python dell'ExternalMethod) l'operatore "+=" che è piu' "tollerante".

def list_join(list1, list2):
    intermed = []
    intermed += list1
    intermed += list2
    return intermed


e in questo modo non vengono segnalati errori e tutto sembra funzionare


Giacomo



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

#questa è la funzione che ordina sulla base di un attributo (il cui nome viene passato come parametro)
def sort_by_attr(seq, attr, reverse=False):
    intermed = [ (getattr(seq[i], attr), i, seq[i]) for i in xrange(len(seq)) ]
    intermed.sort(reverse=reverse)
    return [ tup[-1] for tup in intermed ]
   
#funzione che attacca assieme due liste
def list_join(list1, list2):
    intermed = []
    intermed += list1
    intermed += list2
    return intermed


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