Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Desarrollo Aplicaciones Plone

2,206 views

Published on

  • Be the first to comment

  • Be the first to like this

Desarrollo Aplicaciones Plone

  1. 1. Internet Solutions www.codesyntax.com Desarrollo de Aplicaciones en Plone Mikel Larreategi [email_address] 2008/12/15
  2. 2. Recordemos <ul><li>ZPT
  3. 3. Python
  4. 4. Buildout
  5. 5. Plone básico </li></ul>
  6. 6. Buildout <ul><li>Archivo de configuración formato INI
  7. 7. Ahí decimos qué cosas se instalan en Plone
  8. 8. Podemos crear nuestros productos para que se puedan instalar con buildout </li></ul>
  9. 9. Productos para Plone: eggs <ul><li>Un egg es Python lo que un jar es a Java
  10. 10. Es simplemente un archivo ZIP que contiene el código y metadatos para su gestión de cierta forma automatizada
  11. 11. Veamos el esqueleto de un huevo </li></ul>
  12. 12. ¿Cómo creamos un huevo? <ul><li>A mano
  13. 13. A máquina: </li><ul><li>$ paster create --list-templates
  14. 14. $ paster create -t plone
  15. 15. $ paster create -t plone_app
  16. 16. $ paster create -t plone3_theme
  17. 17. $ paster create -t archetype </li></ul><li>Esto hay que combinarlo con --svn-repository para incluirlo en SVN (o en cualquier otro a mano) </li></ul>
  18. 18. Plone Theme (I) <ul><li>$ paster create -t plone3_theme
  19. 19. Veamos la estructura del producto
  20. 20. Expliquemos lo que hay en cada sitio </li><ul><li>setup.py
  21. 21. __init__.py
  22. 22. configure.zcml
  23. 23. profiles/default
  24. 24. GenericSetup
  25. 25. skins </li></ul></ul>
  26. 26. Plone Theme (II) <ul><li>Skins </li><ul><li>Personalización de plantillas y scripts de plone
  27. 27. Creación de nuevas plantillas </li></ul><li>¿Por qué funciona? </li><ul><li>portal_skins
  28. 28. Concepto de layer o capa
  29. 29. Concepto de skin </li></ul></ul>
  30. 30. Plone Theme (III) <ul><li>Ejemplos: </li><ul><li>Personalicemos una plantilla
  31. 31. Creemos una nueva plantilla </li></ul><li>Macros, slots, viewlets, etc. </li></ul>
  32. 32. Plone Theme (y IV) <ul><li>Vamos a utilizar GenericSetup para que la plantilla que hemos añadido se pueda utilizar como portada de la página principal </li></ul>
  33. 33. ¿Qué es GenericSetup? <ul><li>Una forma para exportar la configuración de Plone a archivos XML para que pueda ser reproducible
  34. 34. ¿De qué configuración hablamos? </li><ul><li>De casi todos los elementos que hay en el ZMI </li><ul><li>portal_actions, portal_catalog, portal_types... </li></ul><li>Registrar nuevos tipos de objetos, perfiles de actualización, … </li></ul><li>Veamos el perfil básico de Plone </li></ul>
  35. 35. Archetypes (I) <ul><li>¿Qué es Archetypes? </li><ul><li>Herramientas para crear nuevos tipos de objeto en Plone </li><ul><li>Los objetos básicos de Plone están hechos con Archetypes </li></ul><li>Schema, Field, Widget </li></ul><li>Veamos cómo está hecha una noticia en Plone </li></ul>
  36. 36. Archetypes (II) <ul><li>Creemos el nuestro: </li><ul><li>$ paster create -t archetype </li></ul><li>Sin embargo cada vez que añadamos un nuevo objeto, hay que “tocar” muchos archivos: </li><ul><li>Crear el .py, el interfaz
  37. 37. Añadirlo en el perfil GS (types.xml, types y factory.xml)
  38. 38. Crear permisos, por si acaso ,
  39. 39. ... </li></ul></ul>
  40. 40. Archetypes (y III) <ul><li>$ paster addcontent --list
  41. 41. $ paster addcontent contenttype
  42. 42. Ahora añadiremos a mano algún campo
  43. 43. Pero eso incluso se puede hacer a máquina: </li><ul><li>$ paster addcontent atschema
  44. 44. Tiene sus “peros”, pero bueno, sirve para empezar. </li></ul></ul>
  45. 45. Aplicaciones en Plone (I) <ul><li>Concepto de vista en Zope3
  46. 46. ¿Por qué una vista y no un script de skins? </li><ul><li>Todo el poder de Python
  47. 47. Código restringido </li></ul><li>Cómo añadimos una vista </li><ul><li>A mano (.py y configure.zcml)
  48. 48. A máquina (sólo en productos que hayamos creado con la plantilla archetype ): </li><ul><li>$ paster addcontent view </li></ul></ul></ul>
  49. 49. Aplicaciones en Plone (II) <ul><li>Hagamos un ejemplo: </li><ul><li>Un formulario que recoja un string y dos enteros y que muestra el string en negrita, los dos enteros en una lista y la suma de los dos enteros también en negrita. </li></ul></ul>
  50. 50. Aplicaciones en Plone (III) <ul><li>portal_catalog </li><ul><li>Plone utiliza ZODB
  51. 51. Base de Datos orientada a objetos
  52. 52. No hacemos consultas SQL para buscar cosas
  53. 53. Las buscamos en una cosa llamada Catálogo, en la que se indexan todos los objetos y guardan cierta información
  54. 54. Veámos qué tiene nuestro catálogo </li></ul></ul>
  55. 55. Aplicaciones en Plone (IV) <ul><li>Veámos cómo hace Plone una búsqueda en el catálogo. Normalmente se utilizan vistas (aunque se puede hacer desde scripts) </li><ul><li>CMFPlone/browser/portlets/news.py </li></ul><li>Concepto de brain y concepto de objeto </li><ul><li>Datos indexados en el catálogo que obtenemos directamente del brain: Metadata </li></ul><li>Añadiendo nuevos índices y metadata utilizando GS </li></ul>
  56. 56. Aplicaciones en Plone (V) <ul><li>Hagamos que nuestro tipo de objeto indexe uno de sus atributos en el catálogo
  57. 57. Hagamos que algún atributos de nuestro objeto se indexe en el índice de texto libre </li></ul>
  58. 58. Aplicaciones en Plone (VI) <ul><li>Una plantilla, que utilizando una vista, nos devuelva ciertos objetos de Plone ordenados
  59. 59. Una plantilla y una vista que hagan lo mismo que hace el formulario de búsqueda de Plone </li></ul>
  60. 60. Y ahora qué... (I) <ul><li>Consultas SQL </li><ul><li>Hay librerías en python que se pueden utilizar </li><ul><li>MySQLdb
  61. 61. PostgreSQL
  62. 62. SQLite
  63. 63. cx_Oracle </li></ul><li>Añadiríamos como egg y utilizaríamos la librería como si fuera un programa python
  64. 64. SQLAlchemy, un ORM para Python </li></ul></ul>
  65. 65. Y ahora qué (y II) <ul><li>Con las vistas y las plantillas podéis hacer lo que se os ocurra </li></ul>
  66. 66. Bibliografía <ul><li>Professional Plone Development. Martin Aspeli. PacktPub 2007 (también en PDF)
  67. 67. Web Component Development with Zope 3. Philipp von Weitershausen. Springer 2007
  68. 68. Documentación online: http://plone.org </li></ul>

×