0
Internet Solutions www.codesyntax.com Desarrollo de Aplicaciones  en Plone Mikel Larreategi [email_address] 2008/12/15
Recordemos <ul><li>ZPT
Python
Buildout
Plone básico </li></ul>
Buildout <ul><li>Archivo de configuración formato INI
Ahí decimos qué cosas se instalan en Plone
Podemos crear nuestros productos para que se puedan instalar con buildout </li></ul>
Productos para Plone: eggs <ul><li>Un egg es Python lo que un jar es a Java
Es simplemente un archivo ZIP que contiene el código y metadatos para su gestión de cierta forma automatizada
Veamos el esqueleto de un huevo </li></ul>
¿Cómo creamos un huevo? <ul><li>A mano
A máquina: </li><ul><li>$ paster create --list-templates
$ paster create -t plone
$ paster create -t plone_app
$ paster create -t plone3_theme
$ paster create -t archetype </li></ul><li>Esto hay que combinarlo con --svn-repository para incluirlo en SVN (o en cualqu...
Plone Theme (I) <ul><li>$ paster create -t plone3_theme
Veamos la estructura del producto
Expliquemos lo que hay en cada sitio </li><ul><li>setup.py
__init__.py
configure.zcml
Upcoming SlideShare
Loading in...5
×

Desarrollo Aplicaciones Plone

2,037

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,037
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
46
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 1
  • Transcript of "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>
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×