Archive

Archive for November, 2010

linux – impostare la frequenza del controllo del disco al boot

November 30, 2010 Comments off

Grazie a questa semplicissima riga di comando potrete impostare la frequenza del controllo automatico del vostro hard disk. Aprite una shell e digitate quanto segue:

sudo tune2fs -c X /dev/hda1

dove “X” corrisponde al numero di restart dopo il quale viene effettuato il controllo.

Io faccio un un uso intenso del mio portatile e lo riavvio pochissime volte quindi ho impostato un numero molto basso in modo da compensare tutto i mancati controlli dei…mancati riavvii 🙂

Tratto dal forum di ubuntu .

Advertisements
Categories: linux

plone – come creare una browser view e vivere felici senza “restricted python”

November 18, 2010 3 comments

Occorrente:
– un file di configurazione zcml
– un file contenente una classe python

In un normale pacchetto plone abbiamo già un configure.zcml che può fare al caso nostro. Apriamolo e aggiungiamo la registrazione della vista:

<configure
 xmlns="http://namespaces.zope.org/zope"
 xmlns:browser="http://namespaces.zope.org/browser"
 i18n_domain="my.package">
[...]

<browser:page
    name="myview"
    for="Products.CMFPlone.interfaces.IPloneSiteRoot"
    class=".browser.MyView"
    permission="cmf.ManagePortal"
 />

[...]
</configure>

NOTE

– è indispensabile che l’header della configurazione includa il namespace “browser”

– la vista sarà disponibile solo nella root del sito visto che l’abbiamo registrata per IPloneSiteRoot (per renderla accessibile ovunque è sufficiente utilizzare ‘for=”*”‘)

– per accedervi si dovrà avere il permesso “Manage portal”

Ora passiamo alla definizione della classe. Creaimo un file browser.py e aggiungiamo quanto segue:

from Products.Five import BrowserView

class MyView(BrowserView):
    """ my browser view
    """
    def __call__(self):
        return 'pippo'

Una volta restartata l’istanza potremo richiamare la nostra vista tramite http://myplone.com/@@myview che in questo caso restituirà “pippo”.

Se invece volessimo usarla per presentare dei contenuti dovremmo assegnargli un template:

<configure
 xmlns="http://namespaces.zope.org/zope"
 xmlns:browser="http://namespaces.zope.org/browser"
 i18n_domain="my.package">
[...]

<browser:page
    name="myview"
    for="Products.CMFPlone.interfaces.IPloneSiteRoot"
    class=".browser.MyView"
    template="myviewtemplate.pt"
    permission="cmf.ManagePortal"
 />

[...]
</configure>

e modificare la classe in maniera che al __call__ non venga restituito “pippo”:

from Products.Five import BrowserView

class MyView(BrowserView):
    """ my browser view
    """
    def getPippo(self):
        return 'pippo'

Nel template dovremo avere qualcosa del genere:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
 xmlns:tal="http://xml.zope.org/namespaces/tal"
 xmlns:metal="http://xml.zope.org/namespaces/metal"
 xmlns:i18n="http://xml.zope.org/namespaces/i18n"
 lang="en"
 metal:use-macro="context/main_template/macros/master"
 i18n:domain="my.package">
<body>

<tal:fill metal:fill-slot="main">
 <div id="myview-wrapper">
     <h3>
        questo è il valore di pippo: <span tal:content="view/getPippo" />
     </h3>
 </div>
</tal:fill>

Tutti gli attributi della vista sono accessibili tramite “view/nomeAttr”.
Ricordiamo che pythonicamante parlando un metodo/funzione è un attributo 😉

TIP: Tutto ciò è molto più veloce da creare usando paster: “bin/paster addcontent view”

Per maggiori delucidazione consultate http://collective-docs.plone.org/views/index.html

Se non trovate quello che cercate… cercate su google!!! 😛

Categories: plone, python