Plone Conference 2009, Budapest. Resoconto Finale

10 Novembre 2009

La Settima Plone Conference mondiale (http://ploneconf2009.org) si è chiusa da ormai dieci giorni, ma ancora le fanno eco i numerosissimi ringraziamenti all’organizzazione, rivolti a Balasz Ree in testa.
Budapest è stata a tutti gli effetti la splendida cornice di un evento energizzante e carico di spunti per tutti coloro che si occupano di Plone.

Thanks to MrTopf: http://www.flickr.com/photos/mrtopf/4074083883

I Talk più Corroboranti

Le novità di Plone 4, ben presentate da Eric Steele, sono tali e tante da rendere la nuova release degna di notevole attesa.
Uno sgardo alla roadmap (http://dev.plone.org/plone/roadmap) rende bene l’idea:

in mezzo a decine di altri piccoli e grandi miglioramenti che rendono Plone 4 il 400% più veloce di Plone 3 e con il 20% di codice in meno!!

Le meraviglie di Dexterity, passate in rassegna da David Glick (http://www.slideshare.net/davisagli/building-content-types-with-dexterity-2382911), hanno chiaramente mostrato che un successore per Archetypes finalmente esiste e scalcia piuttosto convinto. L’approccio monolitico e a oggetti caratteristico di Archetypes viene sostituito in Dexterity da un sistema a componenti capace di ruotare intorno ad un modello di base e a una serie di “behavior” che lo caratterizzano e specializzano. Tutto questo non solo a parole.. David fa una sintesi finale di quali funzionalità sono già disponibili al 100% e quali sono in via di completamento.

Le promesse di una user experience molto evoluta grazie a TinyMCE (http://www.slideshare.net/robgietema/tinymce-for-plone-4) e a Deco (http://www.slideshare.net/robgietema/deco-ui-content-editing-in-plone-5), che Rob Gietema ha illustrato con tanto di demo funzionante in Plone 4, hanno lasciato intravedere nuove possibilità nel già vasto insieme dei casi d’uso per cui Plone si contraddistingue da anni. In particolare Deco sembra destinato a dettare una svolta copernicana nel modo di gestire contenuti a cui siamo abituati, ma bisognerà pazientare fino a Plone 5.

La facilità di skinnare Plone mediante XDV promossa da Denis Mishunov (http://www.slideshare.net/spliter/from-design-to-plone-site-xdvdriven-plone-theming) ha fatto tirare qualche sospiro di sollievo ai designer. Ne ho sentiti almeno un paio durante i giorni della Conference confessarmi che non vedevano l’ora di provare a usare il nuovo giocattolo!

Menzioni Speciali!

JQuery Tools è parte integrante di Plone 4: grazie a Steve McMahon (http://www.slideshare.net/plonesteve/overlays-accordions-tabs-oh-my) abbiamo una valida traccia di partenza per iniziare ad usare questa libreria javascript da subito, in plone 3.
A fine presentazione si fa riferimento anche all’ottimo Products.pipbox, che rende l’adozione di JQuery Tools in Plone un gioco da ragazzi.

Il premio per la presentazione più divertente di questa Conference va sicuramente ad Elizabeth Leddy, per altro su un argomento affatto “semplice“: come configurare un deploy Plone per avere il massimo delle performance garantito (http://www.slideshare.net/eleddy/unloading-plone). Sicuramente un ottimo punto di partenza per chi ancora non ha chiaro che non si va in produzione con la sola istanza Zope, anche se apparentemente basta a fare tutto quel che serve!! :D

Andreas Jung ha cercato di rispondere una volta per tutte ad una serie di domande ricorrenti sulle mailing list e sul canale IRC (http://www.slideshare.net/ajung/frequently-asked-questions-answered-frequently-but-now-for-the-last-time), con l’intenzione di evitare di rispondere ancora. Ottima traccia per i neofiti, ma non credo gli eviterà di tornare ad ascoltare tali domande ancora e ancora.. :)

Ultima segnalazione, il talk di Jordan Baker sulle tecniche e gli strumenti utili a realizzare test in ambito Plone (http://www.slideshare.net/hexsprite/plone-testing-tools-and-techniques). Decisamente una carrellata interessante e motivante per chi ancora non ha le idee chiare a riguardo.

Un Occhio alla Comunità

Steve McMahon e Matt Hamilton, due dei nuovi eletti nel Board della Fondazione Plone (http://plone.org/foundation/newsitems/plone-foundation-board-election-results-2009), hanno dedicato una sessione a raccontare “Come *Avviene* Plone” (http://www.slideshare.net/plonesteve/how-plone-happens).
Steve e Matt hanno cercato di far capire quanto nel nostro ambito le gerarchie decisionali sono capovolte rispetto al classico paradigma aziendale: l’utente finale è al principio e non alla fine del processo di realizzazione del software.
Nella presentazione viene mostrato uno schema generale in cui si descrive molto bene come si possa influenzare l’evoluzione di Plone in vari modi, più o meno formali, fino ad arrivare a concretizzare le proprie proposte in un PLIP (PLone Improvement Proposal) con tanto di implementazione annessa: Da non perdere!

Infine la Plone Foundation si è ritrovata in seduta plenaria annuale: sono stati presentati vari report, tra cui lo stato di bilancio della fondazione, che quest’anno è riuscita a incrementare di 85K dollari il suo capitale sociale grazie alle sponsorizzarioni (http://www.slideshare.net/plonesteve/plone-foundation-annual-meeting-budapest-2009).

L’Open Space

Il terzo giorno è stato allestito come Open Space: un esperimento, credo ben riuscito, anche se alcuni hanno storto il naso per la modalità scelta, sostenendo che fosse preferibile non dedicargli un intero giorno, ma adottare la formula usata alla PyCon. Di fatto è stato allestito un grosso tabellone su cui chiunque poteva proporre degli argomenti da discutere in una certa stanza ad una certa ora. Nel giro di due ore il tabellone ha visto un fiorire di decine e decine di argomenti, tanto da rendere imbarazzante la scelta di quali sessioni seguire.
Quello che voglio sottolineare, dal mio punto di vista, e’ che l’Open Space ha nettamente favorito il processo di discussione che sta ridando un po’ d’aria a http://plone.it e alla sua comunità, e vedremo nei prossimi mesi se i risultati verranno :) .

Thanks to cryu: http://www.flickr.com/photos/22953660@N06/4069407225

La Community

Budapest ha mostrato una community vitale, capace di esprimere nuovi leader, gioiosa nell’incontrarsi e estremamente attenta all’evoluzione del suo punto d’incontro: Plone.
Portare nello stesso luogo oltre 400 persone, da tutto il mondo, e fare in modo che buona parte di questo gruppo si senta integrata e soddisfatta alla fine dei tre giorni non è facile, ma ormai da molti anni questa piccola magia torna a ripetersi grazie alla dedizione degli organizzatori.

Moltissime delle discussioni che ho avuto sono state estremamente stimolanti, e hanno contribuito a creare nuove amicizie, per non parlare degli infiniti spunti che da subito entrano a far parte del bagaglio di esperienze utili nel nostro lavoro quotidiano.

Insomma, per chi normalmente si ferma alla sola valutazione del software, se ne avrà l’occasione, consiglio caldamente di organizzarsi per venire ad incontrare questa meravigliosa comunità open source.

Thanks to tbenita: http://www.flickr.com/photos/tbenita/4066228433/


Comunità Plone Italiana: Rinascimento prossimo venturo

4 Novembre 2009

Budapest è stata un’esperienza indimenticabile!

Peccato per chi non c’era. :(

Come sempre, tra le cose che rendono per me indimenticabile un tale evento c’è stata l’opportunità di incontrare moltissimi appassionati con cui condividere idee ed esperienze in modo divertente e non limitato all’ambito tecnico.

Durante il terzo giorno di Conference abbiamo sperimentato un nuovo modo di condividere i propri interessi, completamente aperto, in cui ciascuno poteva proporre i propri argomenti e discuterli con chiunque fosse interessato.

Io ho suggerito il mio: “facciamo il punto sulla comunità Plone italiana”.

Chiaramente, prima di arrivare a proporlo con convinzione, ho avuto occasione di parlare con molte persone. In primo luogo con i miei datori di lavoro, che hanno agevolato il mio
intento, per quanto non propriamente e direttamente utile alla nostra azienda: grazie. :)

Tra gli altri con cui ho discusso l’attuale situazione ci sono Giorgio, Vito, Alessandro, Simone, Silvio, Massimo, Massimiliano, Roberto, Nello, Max, Enzo, Andreas, etc. etc. e in tutti ho trovato voglia di approfondire la cosa.

Registro con piacere anche la positiva disponibilità di Francesco Ciriaci, che attualmente ospita il portale Plone Italia sui propri server, nell’agevolare le attività di rinnovamento già operate e che seguiranno, col massimo spirito collaborativo. :)

Veniamo al dunque. Negli ultimi mesi ho ricominciato a seguire con attenzione le (non) attività della comunità italiana su plone.it, registrando da spettatore che, a mesi di distanza dall’annuncio della Conference di Budapest, nessuno dei gestori dei contenuti di plone.it aveva avuto il buon senso di presentare la notizia alla platea italiana.

Per chi si chiedesse perchè non l’abbia fatto io, per anni ho tenuto la linea di non partecipare a zope.it (e quindi a plone.it), in quanto non ho mai condiviso la necessità di implementare una associazione Zope italiana per tutelare i diritti e doveri di non ho mai capito chi.

Come diceva il tale: “cui prodest?”

Di fatto alcune questioni mi hanno spinto a cercare le opinioni di altri, e Budapest mi sembrava il momento ideale:

  1. la Comunità Plone è una, esiste, ed è quella che si riconosce in plone.org e nella Fondazione Plone. Non c’è nessuna necessità di avere un’associazione di utenti Plone italiana che sia supplente di quella internazionale.
  2. In Italia (come in molti paesi non anglofoni) un discreto numero di persone trovano nella lingua inglese una barriera all’adozione di Plone e al seguire le attività della comunità internazionale. Da questo la necessità di vivacizzare una comunità di utenti nazionale che sia capace di trasmettere nel modo più efficace possibile quanto avviene a livello mondiale.
  3. Chi ora si trovava a incrociare su plone.it assetato di informazioni aveva la chiara senzazione di un canale silenzioso, con pochissime notizie interessanti e documenti fermi a svariati mesi prima (l’ultima modifica della pagina “eventi” risale a prima della Conference di Washington del 2008 O_o). Tutto ciò a fronte di notizie fresche e aggiornate reperibili sui portali di aziende e singoli con apparentemente nessun interesse a contribuire all’attuale plone.it. In che modo questo potrebbe essere considerato utile alla comunità di utenti italiana?
  4. Esiste qualcosa che possa essere definito una comunità di utenti Plone in Italia? avevo molta voglia (e ancora ce l’ho) di capire quale è la risposta a questa domanda.. a Budapest abbiamo iniziato a rispondere!
  5. Negli ultimi mesi è stato evidente come alcune comunità locali siano state capaci di esprimersi in modo molto efficace, senza sovrapporsi alle funzioni della comunità Plone internazionale: in Germania, dove ho avuto molte conferme della presenza di una comunità di utenti forte ed attiva; in Olanda, dove Jean Paul Ladage di Zest ispira e motiva un folto gruppo di aziende che hanno trovato il modo di sopperire alla evidente mancanza di una comunità di utenti; in Argentina e Brasile, dove le comunità di utenti sono forti e ispiratrici (il World Plone Day e il gruppo “evangelists” di Plone hanno forti radici in quelle aree). Possibile che l’area italiana, capace di esprimere 35 registrazioni alla Conference di Budapest, sia sguarnita di una comunità di utenti a tale livello??

Altri e ulteriori elementi stanno alla base del mio desiderio di fare il punto, ma quelli elencati dovrebbero essere sufficienti a far capire le motivazioni che mi hanno ispirato.

Le mie idee, in sintesi:

  • ammesso che esista una vera comunità italiana specchio delle dinamiche che caratterizzano quella internazionale, cerchiamo di farla emergere.
  • la comunità italiana non deve duplicare quella internazionale: da sempre, chiunque lo voglia può contribuire come può allo sviluppo di Plone, a tutti i livelli, senza passare da una comunità di utenti nazionale.
  • molti utenti italiani della prima ora cercano di farsi un’idea di cosa sia Plone identificando altri utenti Plone locali. La licenza aperta del software favorisce tale meccanismo, e non si capisce perchè plone.it non debba agevolare una tale possibilità permettendo a chiunque ne abbia voglia di farsi conoscere e di dire la propria senza barriere a priori, secondo le modalità che caratterizzano la comunità Plone internazionale.
  • Le aziende, nel sistema attuale, hanno tolto l’ossigeno alla comunità di utenti Plone italiani, piuttosto che fornirglielo. Facciamo in modo che i business aziendali si sviluppino su altri piani, e non su quello intrinsecamente comunitario, per quanto possibile.

Alcune indicazioni che adotterei:

  • cerchiamo di rendere sempre più visibile Plone in Italia, usando tutti i mezzi possibili a disposizione (twitter, blog, facebook, linkedin, il portale plone.it), in modo aperto e convinto
  • riduciamo le regole al minimo indispensabile, definendole solo a fronte di buon senso, e in base a situazioni di reale necessità
  • ciascuno contribuisca secondo le proprie possibilità: le aziende Plone, i consulenti indipendenti, i plonisti che lavorano in contesti dove Plone non viene messo al centro della propria attività, gli utenti finali appassionati di Plone, chiunque sia interessato a parlare di Plone in modo costruttivo con la finalità della sua diffusione ed adozione
  • tutti quelli che non entrano attivamente e fattivamente in questo processo, evitino di gettare discredito gratuito su chi preferisce fare, anche per loro
  • facciamo in base alle nostre possibilità reali, privilegiando i mezzi e i modi più economici ed efficaci: cerchiamo di costruire una comunità forte e rispettata, ma nel frattempo non disperdiamo le poche energie alla ricerca di obiettivi troppo ambiziosi.
  • lasciamo a un futuro incontro nazionale la definizione di obiettivi più ambiziosi di quelli raggiungibili nell’immediato, dopo aver valutato l’effettiva esistenza di persone di buona volontà interessate a lavorare in modo collaborativo a questo progetto.

Una nota finale indirizzata alle aziende plone italiane.

A Budapest Jean Paul Ladage, che da tre anni guida la comunità di aziende Plone in Olanda, ci ha dedicato una buona ora nel raccontare il caso olandese. Jean Paul ha sottolineato come in Olanda una comunità di utenti Plone non esistesse, e probabilmente non esiste ancora. Ciò che hanno cercato di fare, piuttosto, è di consorziarsi tra aziende per portare tutti insieme Plone sul mercato, presenziando alle fiere, organizzando Plone User Day, finanziando la produzione di brochure.

Alle nostre domande su come siano riusciti in un tale intento Jean Paul ha risposto “con la buona volontà di tutti“, finanziando tutti insieme la fase di marketing per far crescere la torta e concentrarsi sulla competizione verso chi non adotta Plone come strumento. Ha anche dichiarato che ogni azienda gestisce quindi in modo autonomo le richieste che riceve, senza dover rispondere agli altri: è il mercato che giudica la qualità e la bontà di ogni offerta.

Infine Jean Paul ha confermato la diversità del caso italiano, di cui abbiamo poi parlato insieme agli altri italiani presenti, confermando che in olanda sono aperti al contributo di tutti, ma per ora solo le aziende Plone sono attive in quello che in realtà sarebbe più corretto definire un consorzio.

Jean Paul è stato piuttosto d’accordo nel condividere l’idea che una comunità di utenti Plone è qualcosa di sostanzialmente diverso da un consorzio di aziende, e ci ha salutato chiedendo di tenerlo aggiornato sull’andamento della nostra realtà locale.

Detto ciò confermo il mio intento di cercare di riorganizzare una comunità di utenti nazionale, come pure la mia richiesta che siano altri indipendenti a tutelare le attività che caratterizzeranno il “Rinascimento” prossimo venturo della comunità Plone italiana.

Evviva Plone, Evviva i Plonisti! :D


Plone Conference a Budapest!!

29 Ottobre 2009

La Plone Conference è partita ieri nel migliore dei modi qui a Budapest!

Buona parte delle lamentele si concentrava sul fatto che nell’edificio che ci ospita facesse troppo caldo ;)

Il programma di quest’anno è molto valido, e piuttosto interessanti sono buona parte delle sessioni!

Date uno sguardo al programma: http://ploneconf2009.org/program/talks.

E date uno sguardo ai talk! sono tutti in streaming, e presto saranno disponibili le versioni finali dei video con le slide: http://mrtopf.de/blog/plone/plone-conference-live-streams

Purtroppo come nota negativa la server farm che ospita il sito http://ploneconf2009.org ha tirato un brutto scherzo agli organizzatori, per questo ci sono stati diversi ritardi nella registrazione, e la versione online puo’ essere raggiunta solo usando l’IP della macchina che ospita il sito.

Tra i talk piu’ interessanti:

  • Complex Forms with z3c.form (Rok ha dato una buona panoramica dei meccanismi fondamentali di z3c.form)
  • KARL – large-scale Knowledge Management (Sicuramente uno dei talk “non” plone più significativi, presto altre notizie su queste pagine ;) )
  • Very frequently asked questions answered for the last time (Andrea Jung spiega Plone ai nuovi arrivati, una volta per tutte, lui spera… :D molto interessante anche per chi non e’ di primo pelo in Plone)
  • Transmogrifier: Migrating to Plone with less pain. (una tecnologia non troppo nuova per operazioni di import/export in portali Plone e non solo..)
  • Deco UI: Content Editing in Plone 5 (sia il keynote di Limi che questa presentazione hanno fatto strabuzzare gli occhi a molti degli intervenuti, che non vedono l’ora di provare il nuovo meccanismo di definizione delle “pagine” Plone..)
  • Unloading Plone: Approaching Scalability in Integrated Plone Systems (Elizabeth è stata ispiratrice per quel che riguarda il deploy di sistemi Plone che siano acceduti da molti utenti, dimostrando che alla “lentezza” di Plone si può rimediare, sapendo dove agire. peccato non riuscire ad apprezzare fino in fondo la sua ironia e le sue capacità dialettiche: il suo inglese correva come un lampo! :D )

Il secondo giorno è appena comunciato, tempo di ascoltare!! :D

a presto!


Validazione Multicampo con z3c.form 2.1

18 Settembre 2009

La mia form “esemplificativa” è costituita da tre campi, questa interfaccia ne descrive lo schema:

from zope.interface import Interface
from zope import schema

class IUserIdentification(Interface):

  field1 = schema.TextLine(title = u"First Field")
  field2 = schema.TextLine(title = u"Second Field", required = False)
  field3 = schema.TextLine(title = u"Third Field", required = False)

La mia esigenza: il secondo e terzo campo (field2, field3) risultano obbligatori solo se il primo campo (field1) è valorizzato.

Tra i vari modi di risolverlo scelgo di gestirlo con un Invariant applicato allo schema descritto dalla mia interfaccia. Nell’invariant piazzo le logiche per captare l’errore e restituirlo:

  from zope.interface import invariant

  @invariant
  def validateMailUsercode(data):
    if data.field1 is None:
      return
    if data.field2 is None:
      raise MyInvalid('field2',_(u"Please fill in field2."))
    if data.field3 is None:
      raise MyInvalid('field3',_(u"Please fill in field3."))

Non resta che andare a definire la nostra class MyInvalid:

  from zope.interface import Invalid

  class MyInvalid(Invalid):

    def __init__(self, field_name, message):
      self.field_name = field_name
      self.message = message

    def doc(self):
      return self.message

Il tocco finale consiste nel fornire lo snippet per renderizzare l’errore a video, un adattatore che adatta il nostro errore:

  from z3c.form import error
  from zope.component import provideAdapter, adapts

  class MyInvalidView(error.ErrorViewSnippet):

    adapts(MyInvalid, None, None, None, None, None)

    def update(self):
      super(MyInvalidView, self).update()
      self.message = self.error.message
      self.form.widgets[self.error.field_name].error = self

  provideAdapter(MyInvalidView)

fatto.. :)



Notifiche mail in Plone? collective.contentrules.mail

9 Settembre 2009

Richiesta tipica di estensione per Plone: inviare notifiche mail a revisori, creatori dei contenuti, manager in caso di nuovo documento, cambio di stato del documento, modifica del documento.

Plone sa rispondere al 90% della richiesta con il suo Content Rules Engine [vedi http://plone.org/documentation/how-to/content-rules/ per sapere di che si tratta!].

Tuttavia tra le possibilità di base manca un modo sufficientemente flessibile di costruire le mail che vengono spedite.

collective.contentrules.mail [http://pypi.python.org/pypi/collective.contentrules.mail] è la risposta a tale esigenza! Offre infatti la possibilità di costruire le mail usando espressioni dipendenti dal contesto (chi scatena la transizione, chi è il proprietario del contenuto da notificare, etc.).

La cosa veramente notevole del prodotto è che rapidissimamente potrete costruire le vostre espressioni! Come dice il readme del prodotto: “E’ possibile fornire nuovi ‘replacer’ definendo un’interfaccia con un adapter associato e registrando una nuova utility IMailModel”.

In soldoni, ecco come.

Definite la vostra interfaccia con le espressioni da renderizzare in un modulo (il mio si chiama mail.py), avendo l’accortezza di ereditare da quella di base offerta da collective.contentrules.mail:

from zope import schema
from zope.interface import implements
from zope.component import adapts
from Products.CMFCore.interfaces import IDublinCore
from collective.contentrules.mail.model import MailModel
from collective.contentrules.mail.interfaces import IMailReplacer
from collective.contentrules.mail.adapter import MailReplacer

class ICustomMailReplacer(IMailReplacer):
    location = schema.TextLine(title="The Location for the content")

Definite poi l’adapter che registreremo per calcolare tale espressione, anche qui ereditando dall’adapter di base:

class CustomMailReplacer(MailReplacer):
    """Provides attributes which can be used in a mail model"""

    implements(ICustomMailReplacer)
    adapts(IDublinCore)

    @property
    def location(self):
        return self.context.location

Infine create la factory per la vostra utility, sempre derivando da quella di base:

CustomMailModel = MailModel(title=u"custom model for plone content",
                                               replacer_interface=ITBizMailReplacer)

Non resta che registrare il tutto in un bel zcml e il gioco è fatto!

<configure
    xmlns="http://namespaces.zope.org/zope"
    i18n_domain="custom.package">

    <utility
        component=".mail.CustomMailModel"
        name="custom.contentrules.mail.model.base"
    />

    <adapter
    provides="custom.package.mail.ICustomMailReplacer"
    factory=".mail.CustomMailReplacer" />

</configure>

a presto!

Tabelle HTML senza scrivere HTML: z3c.table

28 Agosto 2009

Magari qualcuno non è troppo convinto di aver bisogno di una libreria python per costruire e gestire tabelle HTML, ma quando è uscito il pacchetto plone.z3ctable mi sono ricordato della possibilità che offre z3c.table.

All’inizio pensavo fosse una cosa complessa e tutto sommato inutile (posso fare tutto quel che serve in una browser view, giusto? :) ), ma uno sguardo alla documentazione mi ha convinto a provarlo.

Cosa offre il pacchetto in sintesi:

  • tabella e colonne sono classi python
  • colonne sono adapter (possono comparire/scomparire/cambiare in base al context, alla request, all’interfaccia della tabella)
  • non c’è una skin di base, ma in modo banale si possono associare classi CSS a qualsiasi tag della tabella
  • i record sono calcolati in modo automatico a fronte di oggetti che presentano l’interfaccia IContainer (cartelle) ma anche su un contesto di puri dati (una lista di dizionari, ad esempio)
  • gestione del batch per la navigazione di tabelle con molte righe
  • separazione tra rendering della tabella e del batch

Usare z3c.table in estrema sintesi

Immaginiamo di dover costruire una tabella con dati immagazzinati in una lista di dizionari python. Per farlo usiamo una Browser View di Zope che presenti il render della nostra tabella z3c.table.

questo il codice del modulo python della Browser View:

from Products.Five import BrowserView
from z3c.table import table, column

# definisco l'unica colonna della tabella
class FirstColumn(column.Column):

  # weight determina la posizione rispetto ad altre eventuali colonne
  weight = 1
  header = u'Prima Colonna'

  def renderCell(self, item):
    # renderCell restituisce la stringa HTML da inserire
    # nella cella della colonna
    return item['k']

# SequenceTable consente di usare una lista come contesto
# da cui ottenere i record
class ResultsTable(table.SequenceTable):

  cssClasses = {'table': 'listing'}
  cssClassEven = u'even'
  cssClassOdd = u'odd'
  sortOn = None

  # NB: in plone avremmo bisogno di plone.z3ctable
  # e della riga seguente per far funzionare il batch:
  # batchProviderName = 'plonebatch'
  batchStart = 0
  batchSize = 5
  startBatchingAt = 5

  # se non si vuole usare l'adattamento per agganciare le colonne
  # il metodo seguente fa al caso nostro..
  def setUpColumns(self):
    c1 = FirstColumn(self.context, self.request, self)
    return [c1]

# la seguente Browser View è solo un esempio minimale
# con poca fantasia farete comparire le vostre tabelle dove utile
class ResultsView(BrowserView):

  def __init__(self, context, request):
    self.context = context
    self.request = request

  def get_results(self):
    ret = []
    for val in range(10):
      ret.append(dict(k=val))
    return ret

  def get_results_table(self):
    res = self.get_results()
    table = ResultsTable(res, self.request)
    table.update()
    return table.render() + table.renderBatch()

Il template basico da associare alla Browser View per “vedere” la tabella formarsi:

<html xmlns="http://www.w3.org/1999/xhtml">
<body>
 <tal:block tal:content="structure view/get_results_table">
   tabella!
 </tal:block>
</body>
</html>

E infine la tabella che si materializza richiamando la vista nel nostro Browser:

<table class="listing">
  <thead>
    <tr>
      <th>Prima Colonna</th>
    </tr>
  </thead>
  <tbody>
    <tr class="even">
      <td>0</td>
    </tr>
    <tr class="odd">
      <td>1</td>
    </tr>
    <tr class="even">
      <td>2</td>
    </tr>
    <tr class="odd">
      <td>3</td>
    </tr>
    <tr class="even">
      <td>4</td>
    </tr>
  </tbody>
</table><div class="listingBar">
<span class="next">
<a href="http://localhost:8090/plone/prova?&amp;table-batchSize:int=5&amp;table-batchStart:int=5">Successivi 5 elementi »</a>
</span>
[1]
<a href="http://localhost:8090/plone/prova?&amp;table-batchSize:int=5&amp;table-batchStart:int=5">2</a>
</div>

Non è poi così noioso lavorare con le tabelle, no? :)


Plone Conference 2009: chi viene?

5 Agosto 2009

La Plone Conference 2009 viene organizzata dal 28 al 30 Ottobre a Budapest, facile da raggiungere per noi italiani, e tutto sommato a buon mercato.. :)

Alla Conference ci sono sempre una marea di spunti interessanti per chi si occupa di Plone, quest’anno ancora di più! I piatti forti saranno le nuove release di Plone, l’imminente versione 4 e la rivoluzionaria versione 5, insieme alle loro tecnologie emergenti, Dexterity e Deco su tutte.

Inoltre una delle tre giornate sarà strutturata come Open Space: chiunque potrà proporre il suo tema e sviscerarlo con gli altri interessati.

Per non parlare dello sprint che come al solito seguirà la Conference, in cui tutti sono benvenuti a sporcarsi le mani secondo le proprie capacità, e anche i non-tecnici possono dare una mano a testare, documentare, proporre miglioramenti e formalizzarli.

Altra novità di quest’anno sono i partecipation grants: una sorta di borsa di studio per chi non può permettersi la quota di partecipazione.

Insomma, qualcosa da non mancare, soprattutto perchè è veramente divertente esserci! (fatevelo raccontare da qualcuno che c’e’ stato! ;) ).

Tra l’altro la Conference è un ottimo momento per conoscere quei nick con cui spesso ci si trova a prendere confidenza, se non altro perchè li leggiamo come autori del software che usiamo o delle risposte che ci vengono date da Google. :D

Questo vale anche per chi parla la nostra lingua… che ne dite di incontrarci a Budapest, conoscerci e parlare un po’ di Plone e di come potremmo farlo arrivare a chi ancora non ha avuto questa opportunità in modo più attivo? :D


Diventare emettitori: i canali di comunicazione del web nel 2009

6 Luglio 2009

Il web NON è la televisione, non bisogna essere ricchi imprenditori per permettersi di dire cose interessanti. Tuttavia le statistiche parlano chiaro: solo una minima percentuale degli utenti del web contribuiscono a loro volta ad incrementarne i contenuti!

Questo vale se si parla di blog, di wikipedia o anche di twitter, la chat globale selettiva del momento. Poco male, se quanto non pubblicato appartiene alla sfera del ludico e del personale, ma molto male se chi ha informazioni interessanti se le tiene per sé!

Tanto peggio per chi si occupa di tecnologie aperte: in ambito “chiuso” a volte si vive reinventando la ruota, ma nel caso di buon open source, meno si disperdono le energie e meglio è per tutti! Chiunque dispone di informazioni utili derivanti dal suo lavoro dovrebbe cercare di trasmetterle!

Riconoscere un’informazione interessante da emettere

Sicuramente è interessante il modo con cui abbiamo risolto un problema che avevamo, o i dettagli della tecnologia che stiamo usando; ma anche il post che abbiamo letto e ci è piaciuto o la traduzione che mettiamo a disposizione di tutti!

Più volte mi è capitato di chiedere informazioni a Google e, per quanto poco io contribuisca, di sorprendermi a scoprire che la risposta migliore l’aveva scritta qualche mio collega o io stesso, e nemmeno lo ricordavo!!

Quale strategia adottare per battere la pigrizia?

Usare lo strumento giusto può fare al caso nostro, ecco la mia ricetta:

canale Tempo lettura Tempo scrittura Interazione
Microblog (Twitter) 5/30 sec 10/60 sec risposta indiretta
Tumblelog (Tumblr) 30 sec /2 min 1/15 min multimedia
Blog (WordPress) 5/30 min 10/120 min commenti, pingback
Plone (Documentazione Plone) 30/++ min 60/++ min commenti, rating, modifica collaborativa

Leggi il seguito di questo post »


C’era una volta il knowledge management..

24 Giugno 2009

.. ovvero: come ho finalmente dato una collocazione al buzz chiamato Enterprise 2.0!!

Grazie alle slide prodotte da T-Systemssegnalate da Mason, finalmente ho compreso il mio tassello mancante: badavo all’aspetto comunicativo, ma non vedevo affatto quello del knowledge.

dalle slide:

il web 2.0 è (sfortunatamente) solo uno strumento; sostituirlo al vecchiodatabase della conoscenza non ne aumenterà il successo.

Leggi il seguito di questo post »


Landing page di Plone per italiani

24 Giugno 2009

Venerdì scorso Redomino ha avviato un interessante esperimento organizzando uno sprint “interno” di una giornata (lavorativa).

Si sono formati vari gruppi di lavoro, ma io “da casa” avevo difficoltà a unirmi a qualcuno, così ho preferito sviluppare un argomento *anomalo* per conto mio: Plone Competitor, questi sconosciuti.

Qualche spiegazione: spesso Plone viene confrontato con altri web CMS open source (ndr: in modo poco corretto..), tipicamente Drupal Joomla sono i più gettonati.. perchè? Probabilmente perchè chi oggi pensa di gestire un sito web a mano, pagina per pagina, come si faceva 10 anni fa, avrà una vita ben difficile, e chi cerca di costruire un sito dinamico finisce per incappare in PHP :)

NB1: un web CMS permette di costruire e tenere aggiornato un sito webcon molta facilità, anche a chi di web e internet non ne sa proprio nulla..
NB2: scopri Plone - IL web CMS Open Source – su http://plone.org.

Chiaramente in una giornata non è che si potesse fare molto, perciò alla fine ho scelto di analizzare la landing page italiana dei vari progetti vincitori dell’ultimo Packt Open Source CMS awards.

Leggi il seguito di questo post »