La documentazione di plone.api è ben strutturata e permette anche ai neofiti di sviluppare da subito applicazioni in Plone.

Con plone.api si semplifica lo sviluppo delle applicazioni Plone.

La documentazione di plone.api è ben strutturata e permette anche ai neofiti di sviluppare da subito applicazioni in Plone.

“The plone.api is an elegant and simple API, built for humans wishing to develop with Plone.”

plone.api è un'API elegante e semplice, costruita per chi desidera sviluppare con Plone.

Plone.api è una nuova libreria che ha come scopo di concentrare l’insieme delle funzionalità Plone, altrimenti distribuite, in un unico pacchetto, in modo da migliorarne la fruibilità da parte degli sviluppatori.

l’API è divisa in 4 macro aree:
  • Portal - metodi che possono essere “richiamati” sul “Plone site”
  • Content - metodi per la gestione dei contenuti ( creazione, cancellazione, copia, … )
  • Users - metodi per la gestione degli utenti ( creazione/rimozione di un utente, gestione dei ruoli, gestione dei permessi, … )
  • Groups - metodi per la gestione dei gruppi ( creazione/rimozione di un gruppo, gestione dei ruoli, aggiunta/rimozione di un utente ad un gruppo… )

Plone.api aiuta chi è alle prime armi a scrivere in poco tempo del buon codice, infatti lo sviluppatore ha uno strumento potente e ben documentato per svolgere le operazioni di routine senza essere esperto della piattaforma.

Quali vantaggi.

L'uso di plone.api offre allo sviluppatore:

  • facilità di utilizzo
  • una buona documentazione
  • un accesso mnemonico alle funzionalità
Oltre a questo, plone.api migliora la riusabilità del codice tra le diverse versioni di Plone, e permette di scrivere codice più pulito e leggibile.

Installare plone.api.

Per installare questo prodotto è sufficiente aggiungerlo al proprio buildout tra le egg

…
eggs = 
   plone.api

o aggiungerlo come dipendenza al pacchetto attraverso il file setup.py della egg

…
install_requires=[
    'plone.api',
    …
]
…

Primi Passi: creare un contenuto e pubblicarlo.

Analizziamo i vantaggi di plone.api con un piccolo esempio, la creazione di un contenuto X all’interno del plone site e la sua pubblicazione.

Prima dell’avvento di plone.api lo sviluppatore si trovava di fronte ad una montagna, per svolgere una operazione di questo tipo doveva ricordarsi una decina di operazioni e l’importazione di alcune librerie, tra di esse in agguato la possibilità di introdurre degli errori.

from Products.CMFCore.utils import getToolByName

portal_url = getToolByName(self.context, ‘portal_url’)
portal = portal_url.getPortalObject()

portal.invokeFactory(
type_name=content_type,
id=content_id, title=content_title,
description=content_description
) obj = parent.get(content_id) portal_workflow = getToolByName(parent, 'portal_workflow') portal_workflow.doActionFor(
ob=obj, action=’publish’, wf_id=’simple_publication_workflow’
)

Utilizzando plone.api il tutto si riduce a:

from plone import api

portal = api.portal.get()

obj = api.content.create(
    type=content_type,
id=content_id,
title=content_title, description=content_description,
container=portal,
safe_id=True
) state = api.content.transition(obj, transition='publish')

Come è semplice notare plone.api è più intuitivo, scrivere codice risulta più veloce ed in più risolve anche particolari problemi che allo sviluppatore potrebbero sfuggire in fase di deploy, per esempio: cosa succede se esiste già un oggetto con id content_id?

Nel primo caso, all’esecuzione della funzione invokeFactory avremmo un errore, e per evitarlo dovremmo aggiungere altre righe di controllo.

Plone.api invece, attraverso il parametro ‘safe_id’, genera in automatico il nuovo id e ritorna anche l’oggetto appena creato. Facile no?

La nostra esperienza con plone.api.

L’organizzazione dell’API permette di usufruire di diverse funzionalità in un unico pacchetto senza doversi ricordare la posizione di una particolare funzione tra i diversi pacchetti che costituiscono il core di Plone.

Molte volte capitava ad esempio di risolvere la stessa operazione ogni volta con una implementazione diversa, con plone.api ciò non avviene.

Da qualche mese utlizziamo plone.api in ogni progetto e con soddisfazione.

Approfondimenti.

La documentazione: http://api.plone.org.

Documentazione specifica delle funzioni: http://docs.plone.org/external/plone.api/docs/api/index.html.

Share this on

Share |

On same topics

Commenti

comments powered by Disqus