30. Creando paquetes reusables con Eggs

Nosotros ya hemos creado un paquete Egg anteriormente.

Ahora vamos a crear una característica que es totalmente independiente de nuestro sitio ploneconf y puede ser reutilizado en otros paquetes.

Para hacer la distinción clara, esto no es un paquete de los nombres ploneconf pero desde starzel.

Vamos a agregar el comportamiento de votaciones.

Para esto nosotros necesitamos:

  • Un comportamiento que almacene esos datos en registros de anotaciones.

  • Un viewlet para presentar los votos.

  • Un poco de código Javascript.

  • Un poco de CSS.

  • Algunos helper views para que el código Javascript puede comunicarse con Plone.

Nos ubicamos dentro del directorio src y ejecutamos el script llamado zopeskel desde nuestro directorio bin del proyecto, con los siguientes comando:

$ mkdir src
$ cd src
$ ../bin/zopeskel

Esto devuelve una lista de plantillas disponibles que podríamos utilizar. Elegimos la plantilla dexterity ya que es bastante pequeña, pero ya cuenta con algunas de las dependencias adecuadas que necesitamos, con el siguiente comando:

$ ../bin/zopeskel dexterity

Nosotros respondemos algunas preguntas:

  • Enter project name: starzel.votable_behavior
  • Expert Mode? (What question mode would you like? (easy/expert/all)?) [‘easy’]: easy
  • Version (Version number for project) [‘1.0’]: 1.0.0
  • Description (One-line description of the project) [‘Example Dexterity Product’]: Voting Behavior
  • Grok-Based? (True/False: Use grok conventions to simplify coding?) [True]: False
  • Use relations? (True/False: include support for relations?) [False]: False

Tenemos que modificar ligeramente los archivos generados.

En setup.py, eliminamos por completo las variables setup_requires y paster_plugins. Estos son necesarios para las características que se usan muy poco y añade una gran cantidad de código en el directorio de fuentes que no queremos. Para la lista install_requires, añadimos una entrada para plone.api.

Nosotros eliminamos el archivo tests.py. Este ofrece un sistema de pruebas descontinuado, no queremos que empieces a partir de ahí.

El archivo profiles/default/types.xml lo eliminamos también. No vamos a definir nuevos tipos de contenidos en este paquete.