Vito Falco ha scritto:
Grazie ma...
sto costruendo solo una vista che deve "imitare" quello che vedono gli anonimi quindi non è la strada giusta quella di modificare i permessi del ruolo poichè avrebbe una ripercussione più ampia. Necessito giusto che questa vista elenchi gli elementi presenti nella cartella in stato non scaduti.

{'query': {'effective': <data di oggi>}, 'range': 'min:max'}

questo dovrebbe essere il tuo content filter.

forse funziona senza range, solo interrogando effective.


Vito

2008/10/21 Yuri <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>

    Vito Falco ha scritto:

        Hola,

        ho individuato la porzione di CatalogTool che dovrebbe
        illuminarmi sulal questione ma ... non è così, non riesco a
        capire come passargli i dati per ottenre solo gli oggetti non
        scaduti.

     if not _checkPermission( AccessInactivePortalContent, self ):

    prova a togliere a quell'utente questo permesso, anche se penso
    dipenda dal ruolo owner.

    Cmq, basta che imposti il filtro come fanno qui sotto.


           def searchResults(self, REQUEST=None, **kw):
                   """
                       Calls ZCatalog.searchResults with extra
        arguments that
                       limit the results to what the user is allowed
        to see.
                   """
                   user = _getAuthenticatedUser(self)
                   kw[ 'allowedRolesAndUsers' ] =
           self._listAllowedRolesAndUsers( user )

                   if not _checkPermission(
        AccessInactivePortalContent, self ):
                       now = DateTime()

                       self._convertQuery(kw)

                       # Intersect query restrictions with those
        implicit to
           the tool
                       for k in 'effective', 'expires':
                           if kw.has_key(k):
                               range = kw[k]['range'] or ''
                               query = kw[k]['query']
                               if not isinstance(query, (tuple, list)):
                                   query = (query,)
                           else:
                               range = ''
                               query = None
                           if range.find('min') > -1:
                               lo = min(query)
                           else:
                               lo = None
                           if range.find('max') > -1:
                               hi = max(query)
                           else:
                               hi = None
                           if k == 'effective':
                               if hi is None or hi > now:
                                   hi = now
                               if lo is not None and hi < lo:
                                   return ()
                           else: # 'expires':
                               if lo is None or lo < now:
                                   lo = now
                               if hi is not None and hi < lo:
                                   return ()
                           # Rebuild a query
                           if lo is None:
                               query = hi
                               range = 'max'
                           elif hi is None:
                               query = lo
                               range = 'min'
                           else:
                               query = (lo, hi)
                               range = 'min:max'
                           kw[k] = {'query': query, 'range': range}

                   return ZCatalog.searchResults(self, REQUEST, **kw)

               __call__ = searchResults


        Come fare?

        Vito

        2008/10/20 Yuri <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
        <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>>


           Vito Falco ha scritto:

               Hola,
               ho creato una nuova view per un mio oggetto di tipo
        cartella.
               Questa view è quasi una copia del folder_contents.

               Non riesco a capire come NON far vedere i contenuti
        "scaduti"
               anche all'amministratore/proprietario di tale cartella.

               Ho cercato in lungo e in largo ma non riesco a venirne
        fuori
               perchè vorrei usare questa chiamata presente nel folder
        contents:

                  folderContents python:here.portal_type=='Topic' and
                  here.queryCatalog(contentFilter, batch=True) or
                  here.getFolderContents(contentFilter, batch=True,
                  b_size=limit_display or 100);


           credo sia l'indice effectiveRange del catalogo. Il suo
        utilizzo lo
           trovi in searchResults in CMFPlone.

             def searchResults(self, REQUEST=None, **kw):
                 """Calls ZCatalog.searchResults with extra arguments that
                 limit the results to what the user is allowed to see.

                 This version uses the 'effectiveRange' DateRangeIndex.

                 It also accepts a keyword argument show_inactive to
        disable
                 effectiveRange checking entirely even for those
        without portal
                 wide AccessInactivePortalContent permission.

           ===



               in contentFilter potrei passargli qualcosa tipo:

                  contentFilter = {'Type': 'oggettomio',
        'review_state' : '
               published'}


               ma il "problema" è che quando un oggetto è "scaduto" non
               cambia lo stato di tale oggetto




           _______________________________________________
           Plone-IT mailing list
           Plone-IT@lists.plone.org <mailto:Plone-IT@lists.plone.org>
        <mailto:Plone-IT@lists.plone.org
        <mailto:Plone-IT@lists.plone.org>>

           http://lists.plone.org/mailman/listinfo/plone-it
           http://www.nabble.com/Plone---Italy-f21728.html




-- "Design is the method of putting form and content together.
        Design, just as art, has multiple definitions; there is no
        single definition. Design can be art. Design can be
        aesthetics. Design is so simple, that's why it is so
        complicated." by Paul Rand
        ------------------------------------------------------------------------



        _______________________________________________
        Plone-IT mailing list
        Plone-IT@lists.plone.org <mailto:Plone-IT@lists.plone.org>
        http://lists.plone.org/mailman/listinfo/plone-it
        http://www.nabble.com/Plone---Italy-f21728.html



    _______________________________________________
    Plone-IT mailing list
    Plone-IT@lists.plone.org <mailto:Plone-IT@lists.plone.org>
    http://lists.plone.org/mailman/listinfo/plone-it
    http://www.nabble.com/Plone---Italy-f21728.html




--
"Design is the method of putting form and content together. Design, just as art, has multiple definitions; there is no single definition. Design can be art. Design can be aesthetics. Design is so simple, that's why it is so complicated." by Paul Rand
------------------------------------------------------------------------

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


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

Rispondere a