[Plone-IT] Esecuzione di un Python script da una pagina del sito

lucagent luka.gentili a gmail.com
Mer 16 Nov 2011 12:51:22 UTC


Salve a tutti,
su un sito svilupato in Plone 4 ho la necessità di effettuare il reindex dei
contenuti di un folder specifico su richiesta dell'utente (con un
pulsante/link/action... è indifferente)

Io ho provato a replicare il comportamente della sendto ... un Controller
PAge Template che richiama un Controller Python Script ... ma lo script in
sé funziona solo che non viene eseguito quando faccio la submit della
form...
di seguito il codice:

Controller Python Script "reindex" (funzionante - verificato dal tab test):

    from Products.CMFCore.utils import getToolByName
    from Products.CMFPlone import PloneMessageFactory as _

    catalog = getToolByName(context, 'portal_catalog')
    markers= catalog.searchResults(portal_type='GMarker')

    try:
        context.plone_utils.addPortalMessage(_(u'in \'try\''))
   
        for mrk in markers:
            obj=mrk.getObject()
            context.plone_utils.addPortalMessage(_(u'for: ' + str(obj))) 
            obj.reindexObject()
            state.set(status='success')
        else:
            context.plone_utils.addPortalMessage(_(u'Markers have been
reindexed.'))
    except:
        exception = context.plone_utils.exceptionString()
        message = _(u'Unable to reindex marekrs: ${exception}',
                         mapping={u'exception' : exception})
        context.plone_utils.addPortalMessage(message, 'error')
        state.set(status='failure')

    return state

(come già detto ho praticamente riadattato lo script sendto)

Controller Page template "marker_reindex" (contenuto del <body> - anche
questo adattato a partire dalla sendto_form):
   
  <metal:main fill-slot="main"
         tal:define="errors options/state/getErrors;">

      
Reindex G-Maps Markers


      <div id="content-core">
          <form name="reindexer"
                class="enableAutoFocus"
                action="marker_reindex"
                method="post"
                enctype="multipart/form-data"
                tal:attributes="action
string:${context/@@plone_context_state/object_url}/${template/getId}">
  
            <fieldset>

              <div class="formControls">
                <input class="context"
                       type="submit"
                       name="form.button.reindex"
                       value=" Reindex "
                       />
              </div>

              <input type="hidden" name="form.submitted" value="1" />

            </fieldset>

          </form>
      </div>

    </metal:main>


Le Actions della form sono:
    failiure  --> traverse_to --> string:home
    success --> traverse_to --> string:reindex

per lo Script invece:
    failure   --> redirect_to_action --> strign:view
    success --> redirect_to_action --> strign:view

non ho impostato un validator ... (mi viene in mente solo ora che forse è
per questo che non viene eseguito lo script a seguito della submit?!?!) 

in ogni caso a me servirebbe di richiamare il Controller Script da un'altra
pagina che non è un controller page template...è possibile?!?! dove
sbaglio?!?! 

grazie in anticipo

Luca

--
View this message in context: http://plone-regional-forums.221720.n2.nabble.com/Esecuzione-di-un-Python-script-da-una-pagina-del-sito-tp7000253p7000253.html
Sent from the Plone - Italy mailing list archive at Nabble.com.


Maggiori informazioni sulla lista Plone-IT