Category: Plone

  • pdb.set_trace()

    Per il debug degli script Python usiamo da tempo il sistema

    import pdb;pdb.set_trace()

    ma se abbiamo bisogno di debuggare uno script python dalla ZMI di Plone, questo sistema non funziona.

    Ecco che ci viene aiuto un prodottino minimale per zope. Non e’ una novita’ ma l’ho incontrato solo di recente

    basta scaricare dal repository e posizionarlo nella nostra cartella src:

    svn co svn://svn.zope.org/repos/main/Products.enablesettrace/trunk enablesettrace

    abilitarlo dal buildout.cfg, rilanciare ./bin/buildout

    ed ecco che il comando

    pdb.set_trace()

    permette di stoppare l’esecuzione dello script nel punto in cui vogliamo.

    Questo prodotto servira’ solo in fase di sviluppo ovviamente.

    Per ulteriori informazioni du pdb vedi: http://docs.python.org/library/pdb.html

  • Installazione di Plone 4.1 su Debian 6.0.2

    Ecco i passi da fare per installare Plone 4 su una distribuzione Debian 6.0.2 oppure Ubuntu 10.04LTS.

    L’installazione prevede anche l’installazione di python in una directory utente e senza necessita’ di diritti di root

    Gli unici comandi da eseguire come utente root sono i seguenti

    aptitude update
    
    aptitude upgrade
    
    aptitude install zlib1g-dev libjpeg-dev build-essential libssl-dev
    
    # la seguente linea e' opzionale
    aptitude install ssh sudo screen subversion
    
    # l'installazione dei 2 pacchetti seguenti puo' tornar utile per l'installazione di alcuni prodotti Plone:
    aptitude install libxml2-dev libxslt-dev
    
    adduser plone
    
    su - plone

    Ecco dunque tutti i passaggi da fare con l’utente appena creato plone

    mkdir plone4; cd plone4

    Scarico Python, Setuptools e Pip

    wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
    wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe74e
    wget http://pypi.python.org/packages/source/p/pip/pip-1.0.2.tar.gz#md5=47ec6ff3f6d962696fe08d4c8264ad49
    ATTENZIONE: Plone 4.1 non supporta completamente Python 2.7.x. Per quel che ho provato io funziona tutto, ma ufficialmente non e’ supportato Python 2.7.x
    La scelta piu’ cautelare Per Plone 4.1 e’ Python 2.6: http://www.python.org/ftp/python/2.6.7/Python-2.6.7.tgz

    Scompatto tutti i pacchetti

    for i in `ls -1 *gz `; do tar xvzf $i; done

    Creo il percorso dove andrò ad installare Python

    mkdir -p python/2.7.1
    cd Python-2.7.1

    Configuro i sorgenti di Python per essere installati nel percorso definito sopra

    ./configure --prefix="/home/plone/plone4/python/2.7.1"
    make
    make install

    Verifico che python sia installato con il supporto ssl:

    $ ../python/2.7.1/bin/python
    Python 2.7.1 (r...........)
    [GCC 4.4.5] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import socket
    >>> socket.ssl
    <function ssl at 0xb768ac34>
    >>>

    Se ottengo un risultato simile a quello sopra posso proseguire tranquillo, esco dalla console python con CTRL+d

    Installo Setuptools e Pip

    cd ../setuptools-0.6c11/
    ../python/2.7.1/bin/python2.7 setup.py install
    cd ../pip-1.0.2/
    ../python/2.7.1/bin/python2.7 setup.py install
    cd ..

    Utilizzo Pip per installare ZopeSkel

    ./python/2.7.1/bin/pip install zopeskel==2.21.2
    ./python/2.7.1/bin/paster create --list-templates

    Creo il buildout di Plone

    ./python/2.7.1/bin/paster create -t plone4_buildout
    Selected and implied templates:
    ZopeSkel#plone4_buildout  A buildout for Plone 4 developer installation
    Enter project name: instance
    Variables:
     egg:      instance
     package:  instance
     project:  instance
    **************************************************************************
    **   *** NOTE: You probably don't want to use this template!
    **  Since Plone 3.1, the preferred way to get a buildout-based setup
    **  for Plone is to use the standard installer for your operating
    **  system (the Windows installer, the Mac installer, or the Unified
    **  Installer for Linux/Unix/BSD). These give you a best-practice,
    **  widely-used setup with an isolated Python and a well-documented
    **  buildout. This template is here for older versions of Plone and
    **  for experts who explicitly want a raw, non-installer-based
    **  installation.
    **  (This message is particularly aimed at people following out-of-
    **  date books/documentation that suggest this is the right way to get
    **  a Plone-based buildout. This is no longer the case.)
    **************************************************************************
    Expert Mode? (What question mode would you like? (easy/expert/all)?) ['easy']:
    Plone Version (Plone version # to install) ['4.0.5']: 4.1
    Creating template plone4_buildout
    Creating directory ./instance
     Copying README.txt to ./instance/README.txt
     Copying bootstrap.py to ./instance/bootstrap.py
     Copying buildout.cfg_tmpl to ./instance/buildout.cfg
     Recursing into src
     Creating ./instance/src/
     Copying README.txt to ./instance/src/README.txt
     Recursing into var
     Creating ./instance/var/
     Copying README.txt to ./instance/var/README.txt
    **************************************************************************
    **   Generation finished.
    **  You probably want to run python bootstrap.py and then edit
    **  buildout.cfg before running bin/buildout -v".
    **  See README.txt for details.
    **************************************************************************
    cd instance
    ../python/2.7.1/bin/python bootstrap.py
    ./bin/buildout

    Avvio l’istanza in modalità foreground

    ./bin/instance fg

    Per avviarla in background utilizzerò poi

    ./bin/instance start
  • Installazione xvd in Plone 4

    XVD e’ un “nuovo” metodo di personalizzare i template di Plone, per maggiori info vedi http://plone.org/products/collective.xdv/documentation/reference-manual/theming.

    Per l’nstallazione su Plone 4 su server debian 6.0.2 ho eseguito i seguenti passaggi:

    Installo i pacchetti debian: build-essential e libxslt1-dev, in precedenza avevo gia installato python 2.7.1 da sorgenti (vedi il post http://www.carinato.net/linux/installazione-di-plone-4-su-debian-6-0-2)

    sudo aptitude install build-essential libxslt1-dev

    Modifico il file buildout.cfg in questo modo:

    Nella sezione [buildout] cerco la variabile extends ed aggiungo

    http://good-py.appspot.com/release/collective.xdv/1.0?plone=4.0.4

    ottengo in questo modo (la seconda e terza riga devo essere identate):

    extends =
      versions.cfg
      http://good-py.appspot.com/release/collective.xdv/1.0?plone=4.0.4

    Inoltre come per i comuni prodotti aggiuntivi aggiungo il prodotto nella variabile eggs

    eggs =
        Plone
        ...
        ...
        collective.xdv

    A questo punto rilancio il buildout

    ./bin/buildout

    Creo nella cartella principlae di Plone (dove si trova il file buildout.cfg) una cartella themes e ci metto dentro il tema statico di riferimento ed il file xml con le regole. Un test minimale puo’ essere fatto come spiegato qui

    Avvio l’istanza Plone per testare il risultato

    ./bin/instance fg

    e attivo xdv dall’apposito pannello di controllo, vedi sempre qui

    Buon “theming” !!

  • Installazione di Plone 4.0.4

    In questi giorni ho provato l’installazione di Plone 4.0.4 ed ho avuto qualche problema.
    Dopo aver generato il buildout tramite il comando

    paster create -t plone4_buildout plone404 plone_version=4.0.4 expert_mode=easy

    sono entarto nella cartella, lanciato bootstrap.py

    cd plone404
    python ./bootstrap.py

    e avviato il buildout

    .bin/buildout

    A questo punto ottengo un erore del tipo:

    Getting distribution for 'mechanize==0.1.11'
    ...
    ValueError: invalid literal for int() with base 10: '241357, 241357'

    Per risolvere ho modificato il file buildout.cfg in questo modo:
    ho aggiunto nella sezione [buildout]

    allow-hosts =
      *.plone.org
      *.python.org
    find-links = http://dist.plone.org/thirdparty/elementtree-1.2.7-20070827-preview.zip

    Speriamo in un aggiornamento a breve che risolva questo problema.
    Buon lavoro !

  • Nuovo ZopeSkel

    E’ stata appena rilasciata la nuova versione di ZopeSkel

    La nuova versione rende ora possibile creare un buildout apposito per Plone 4

    I sorgenti si trovano su pypi e plone.org

    per aggiornare o installare ZopeSkel:

    sudo easy_install -U ZopeSkel

    e per creare un buildout di Plone 4

    paster create -t plone4_buildout
  • Creazione di un tema personalizzato per Plone 4

    Nell’articolo precedente abbiamo visto come installare Plone in un server Ubuntu 10.04, ora vediamo come creare un tema personalizzato per Plone 4.

    Dalla cartella principale dove abbiamo installato Plone 4, entrimo nella cartella src:

    cd plone402/src

    Utilizziamo paster per generare il template:

    paster create -t plone3_theme

    Alle richieste rispondiamo in questo modo:

    Enter project name: plonetheme.testplone4
    Variables:
     egg:      plonetheme.testplone4
     package:  plonethemetestplone4
     project:  plonetheme.testplone4
    Expert Mode? (What question mode would you like? (easy/expert/all)?) ['easy']:
    Skin Name (Name of the theme (human facing, added to portal_skins)) ['']: Tema Test Plone4
    Empty Styles? (Override default public stylesheets with empty ones?) [False]:
    Include Documentation? (Include in-line documentation in generated code?) [True]:
    Version (Version number for project) ['1.0']:
    Description (One-line description of the project) ['An installable theme for Plone 3']:
    

    Note:

    • Il nome così formato corrisponde al namespace tipico dei prodotti Plone
    • Lo Skin Name e’ il nome che poi sarà visibile
    • Empty styles: impostando su yes verranno generati automaticamente dei fogli di stile vuoti che avranno la precedenza su quelli standard di Plone. Risulta piu’ semplice però lasciar attivi i CSS originali e andar a sovrascrivere solo le parti da modificare

    Il tema è stato ora generato ma dovremo farlo riconoscere a Plone4

    cd ..

    editiamo il file buildout.cfg e lo modifichiamo in questo modo:

    Originale Modificato
    develop =
    develop =
     src/plonetheme.testplone4
    eggs =
     Zope2
     Plone
     ${buildout:eggs}
    eggs =
     Zope2
     Plone
     ${buildout:eggs}
     plonetheme.testplone4
    zcml =
    zcml =
     plonetheme.testplone4

    Salviamo le modifiche e rilanciamo lo script buildout

    ./bin/buildout -v

    Il parametro -v aumenta la verbosità

    Riavviamo il server:

    ./bin/instance fg

    (per stoppare il server utilizzeremo la combinazione di tasti ctrl+c)

    Col browser puntiamo al pannello di configurazione di Plone4: http://192.168.1.203:8080/Plone/plone_control_panel

    e selezioniamo il link Prodotti Aggiuntivi

    in alternativa possiamo puntare direttamente all’indirizzo: http://192.168.1.203:8080/Plone/prefs_install_products_form

    Selezioniamo il tema che abbiamo creato e attiviamolo con l’apposito tasto

    Ora vedremo il sito Plone spogliato di tutti i fogli di stile:

    Brutta sorpresa direte, visto che prima abbiamo scelto di non sovrascrivere i css originari.

    Con Plene 3 avrei avuto il risultato voluto ma con Plone 4 c’è ancora un passaggio da fare.

    Il tema che abbiamo trovato inizialmente su Plone 4 si chiama Sunburst Theme ma in Plone 3 il tema di default si chiamava Plone Default. Il vecchio tema è ancora disponibile ma ora in Plone 4 si chiama Plone Classic Theme.

    Il tema che abbiamo creato dunque va adattato a Plone 4.

    Basta modificare il file che troviamo in src/plonetheme.testplone4/plonetheme/testplone4/profiles/default/skins.xml in questo modo:

    Originale
    <skin-path name="Tema Test Plone4" based-on="Plone Default">
    Modificato
    <skin-path name="Tema Test Plone4" based-on="Sunburst Theme">

    Una volta salvata la modifica dovremo riavviare il server Zope per vederne l’effetto.

    Ora vediamo come personalizzare il tema che abbiamo creato.

    Gli strumenti che ci servono sono:

    • Firefox ed il plugin Firebug
    • Un buon editor (Komodo per esempio), magari che supporti l’editazione di file remoti
    • Eventualmente un Grid System (deco.gs per esempio) per aiutarci nello sviluppo

    Il primo lavoro che dovremo fare e’ copiare brutalmente i fogli di stile utilizzati dal tema SunBurst nel nostro tema, per poterli poi modificare a piacere.

    Per fare questo in modo semplice creiamo in ubuntu 2 variabili di sistema temporanee partendo dalla directory principale di Plone4 (nel nostro caso ~/plone402):

    cd ~/plone402
    orig=`cat bin/instance | grep "plonetheme.sunburst" | cut -d \' -f2`/plonetheme/sunburst/skins/sunburst_styles
    dest=src/plonetheme.testplone4/plonetheme/testplone4/skins/plonetheme_testplone4_styles/

    Verifichiamo i valori memorizzati con:

    echo $orig
    echo $dest

    e copiamo i file da modificare:

    cp $orig/ploneCustom.css.dtml $dest
    cp $orig/public.css $dest

    Ora col nostro editor di testo possiamo modificare a piacere questi files.

    Possiamo pensare di modificare public.css quando volgiamo modificare dei tag esistenti e inserire eventuali tag nuovi nel file ploneCustom.css.dtml ma questa scelta è arbitraria. L’importante è sapere che ploneCustom.css.dtml ha la precedenza su public.css.

    (work in progress….)

  • Installazione Plone 4.0.2 su Ubuntu server 10.04LTS

    Ecco come installare l’ultima versione di Plone (4.0.2) in un sistema Ubuntu minimale (installato in una virtual machine tramite l’immagine mini.iso ver 10.04 a 32bit).

    Inizia l’installazione di Ubuntu

    Scelgo la lingua:

    Do un nome al server:

    Partiziono come consigliato:

    Nel nostro caso bastano le partizioni essenziali:

    Imposto gli aggiornamenti automatici relativi alla sicurezza:

    Scelgo di installare solo i componenti essenziali e il servizio ssh

    Termino la procedura con l’installazione di Grub

    Una volta che il server ha terminato l’installazione e si sarà riavviato, scopriamo l’indirizzo ip assegnato dinamicamente dal server DHCP:

    ifconfig eth0
    

    Ora dal nostro PC possiamo accedere al server virtuale tramite ssh:

    ssh fc@192.168.1.203
    

    (anche Putty va bene se abbiamo solo Windows a disposizione)

    Ora possiamo installare i pacchetti che serviranno a Plone4.
    Nota bene: tutti i comandi vanno eseguiti come utente normale, non quindi da root, quando serviranno i privilegi di root verrà specificato di eseguirli tramite sudo

    sudo aptitude install build-essential python-dev python-pip python-pastescript python-setuptools python-imaging subversion
    

    Installiamo ora i componenti che ci servono per installare rapidamente i progetti Zope

    sudo pip install zopeskel

    Possiamo ora utilizzare paster per installare Plone. Diamo un’occhiata per vedere quali template sono disponibili:

    paster create --list-templates
    
    Available templates:
     archetype:          A Plone project that uses Archetypes content types
     basic_namespace:    A basic Python project with a namespace package
     basic_package:      A basic setuptools-enabled package
     basic_zope:         A Zope project
     kss_plugin:         A project for a KSS plugin
     nested_namespace:   A basic Python project with a nested namespace (2 dots in name)
     paste_deploy:       A web application deployed through paste.deploy
     plone:              A project for Plone products
     plone2.5_buildout:  A buildout for Plone 2.5 projects
     plone2.5_theme:     A theme for Plone 2.5
     plone2_theme:       A theme for Plone 2.1
     plone3_buildout:    A buildout for Plone 3 installation
     plone3_portlet:     A Plone 3 portlet
     plone3_theme:       A theme for Plone 3
     plone_app:          A project for Plone products with a nested namespace (2 dots in name)
     plone_hosting:      Plone hosting: buildout with ZEO and Plone versions below 3.2
     plone_pas:          A project for a Plone PAS plugin
     recipe:             A recipe project for zc.buildout
     silva_buildout:     A buildout for Silva projects
    

    Utilizziamo il template plone3_buildout visto che non c’e’ ancora un template specifico per Plone4

    paster create -t plone3_buildout
    

    Alle domande che ci vengono poste rispondiamo nel modo seguente

    Enter project name: plone402
    Expert Mode? (What question mode would you like? (easy/expert/all)?) ['easy']: easy
    Plone Version (Plone version # to install) ['3.3.5']: 4.0.2
    Zope2 Install Path (Path to Zope2 installation; leave blank to fetch one!) ['']:
    Plone Products Directory (Path to Plone products; leave blank to fetch [Plone 3.0/3.1 only]) ['']:
    Initial Zope Username (Username for Zope root admin user) ['admin']: admin
    Initial User Password (Password for Zope root admin user) ['']: admin
    HTTP Port (Port that Zope will use for serving HTTP) ['8080']:
    Debug Mode (Should debug mode be "on" or "off"?) ['off']: on
    Verbose Security? (Should verbose security be "on" or "off"?) ['off']: off

    Per il passaggio successivo ci servirà anche il pacchetto distribute

    sudo easy_install distribute==0.6.14
    

    Entriamo nella cartella creata in precedenza:

    cd plone402/
    

    Lanciamo lo script bootstrap.py

    python bootstrap.py
    

    Alla fine otterremo la risposta: Generated script ‘/home/fc/plone402/bin/buildout’.

    Ora scarichiamo tutti i pacchetti e le dipendenze indicate nel file buildout.cfg col comando:

    ./bin/buildout
    

    Questo è il passaggio più lungo ma anche l’ultimo 😉

    Ora avviamo il server Zope

    ./bin/instance console

    Nota: è ancora possibile avviare il server tramite il comando ./bin/instance fg ma dalla versione 4 si consiglia di utilizzare ./bin/instance console

    Se vogliamo avviare il server in modalità background scriveremo: ./bin/instance start

    e col nostro Browser verifichiamo il funzionamento di Plone puntando all’indirizzo: http://192.168.1.203:8080 (sostituite all’occorrenza il numero IP con quello del vostro server):

    Questo post è stato riadattato dall’originale di Noe Misael Nieto Arroyo

    Nel prossimo articolo vedremo come creare un nostro tema per Plone 4

  • Installazione Python e Plone 4 da sorgenti

    Ecco un video di 5 minuti che mostra come installare in un sistema Unix-like Python e Plone 4 da file sorgenti:

    [youtube]DtYwZOedlcI[/youtube]

    I requisiti di sistema sono:

    • Strumenti per la compilazione (il pacchetto build-essential per Linux Debian o Ubuntu per esempio)
    • Subversion per il download da repository svn

    La procedura da linea di comando:

    Creo una cartella dove metto tutto il necessario (in questo modo non modifico minimamente le impostazione del sistema e posso fare tutto senza i permessi di root)

    cd ~
    mkdir plone
    cd plone

    Scarico Python e una libreria necessaria a Plone per la gestione delle immagini

    wget http://www.python.org/ftp/python/2.7/Python-2.7.tgz
    wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz

    Scompatto Python e PIL

    tar xvzf Python-2.7.tgz
    tar xvzf Imaging-1.1.7.tar.gz

    Creo una cartella dove installare Python

    mkdir -p ~/plone/python/2.7

    Configuro Python per l’installazione nella cartella predisposta (specificare il percorso assoluto)

    cd ~/plone/Python-2.7
    ./configure --prefix=/Users/fc/plone/python/2.7/

    Compilo e installo Python

    make
    make install

    Installo PIL

    cd ~/plone/Imaging-1.1.7
    ~/plone/python/2.7/bin/python2.7 setup.py install
    cd ~/plone/

    Scarico il buildout di Plone 4 dal repository svn

    svn co http://svn.plone.org/svn/plone/buildouts/plone-coredev/branches/4.0/ plone4

    Installo Plone 4

    cd plone4
    ~/plone/python/2.7/bin/python2.7 ./bootstrap.py

    Modifico eventualmente il file buildout.cfg

    vi ./buildout.cfg

    Scarico tutti i pacchetti necessari

    ./bin/buildout

    Avvio il server Zope per generare l’instanza Plone

    ./bin/instance.fg

    Dal mio Browser visito la pagina: http://localhost:8080