Desarrollo de Productos con Archetypes y ArchGenXML
-
Upload
roberto-allende -
Category
Technology
-
view
3.306 -
download
1
description
Transcript of Desarrollo de Productos con Archetypes y ArchGenXML
![Page 1: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/1.jpg)
corporate training menttes
Sebastian, Ferreyra
Desarrollo de Productos con Archetypes y ArchGenXML
![Page 2: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/2.jpg)
menttes
¿Qué es UML?
UML son las siglas para Unified Modeling Language; que en castellano quiere decir: Lenguaje de
Modelado Unificado. Para comprender que es el UML basta con analizar cada una de las palabras
que lo componen por separado.
![Page 3: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/3.jpg)
menttes
Lenguaje
UML es, precisamente, un lenguaje. Lo que implica que éste cuente con una sintaxis y una semántica.
Por lo tanto, al modelar un concepto en UML, existen reglas sobre cómo deben agruparse los elementos del lenguaje y el significado de esta
agrupación.
![Page 4: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/4.jpg)
menttes
Modelado
UML es visual. Mediante su sintaxis se modelan distintos aspectos del mundo real que permiten
una mejor interpretación y entendimiento de éste.
![Page 5: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/5.jpg)
menttes
Unificado
Por que unifica varias técnicas de modelado en una única.
![Page 6: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/6.jpg)
menttes
UML Tools
ArchGenXML procesa modelos almacenados en formato XMI. Este formato XML no esta pensado para ser escrito en un editor de texto plano ni en un editor
basado en XML, por lo tanto se debe usar una herramienta de diseño UML. A continuación damos un
listado de las herramientas UML mas conocidad
![Page 7: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/7.jpg)
menttes
UML Tools - Poseidon
1) Software comercial2) Escrito en Java, corre en la mayoria de las
plataformas3) Basado en ArgoUML4) Almacena el modelo en formato XMI + información
del diagrama en archivos .zuml (archivos zip)5) Es bastante lento6) Necesita mucha memoria y una rapida CPU
Website y download - www.gentleware.com
![Page 8: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/8.jpg)
menttes
UML Tools - ArgoUML
1) Software libre2) Escrito en Java, corre en la mayoría de las
plataformas3) Almacena el modelo en formato XMI + información
del diagrama en archivos .zuml (archivos zip)4) No posee undo5) Conocidas, pero no criticas bugs
Website y download - argouml.tigris.org
![Page 9: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/9.jpg)
menttes
UML Tools - ObjectDomain
1) Comercial, demo por tiempo limitado <= 30 días2) Escrito en Java, corre en la mayoría de las
plataformas3) Se necesita exportar el modelo desde su nativo
.odm formato
Website y download - objectdomain.com
![Page 10: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/10.jpg)
menttes
UML Tools - Powerdesigner
1) Version XMI 1.12) Se necesita exportar el modelo
Website y download - sybase.com
![Page 11: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/11.jpg)
menttes
UML Tools - Umbrello
1) Software libre2) Corre bajo Linux/KDE3) Almacena el modelo en formato XMI4) Hasta la version 1.4 Umbrello no soportaba de
manera correcta el formato XMI
Website y download - uml.sourceforge.net
![Page 12: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/12.jpg)
menttes
Una breve introducción a UML
UML (Lenguaje de Modelado Unificado), es un lenguaje gráfico diseñado para describir software atraves de diagramas. Tenemos varios tipos de diagramas, pero los mas relevantes para ArchGenXML son:
- Diagrama de clases- Diagrama de estados
El diagrama de clases es utilizado para dibujar interfaces, content types (representados como clases) y herramientas (representadas como clases con el estereotipo portal_tool), así como los atributos y operaciones publicas en los mismos. Además de poder asociar los diagramas para ser contenidos o referenciados entre si.
![Page 13: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/13.jpg)
menttes
Content types – Por defecto
![Page 14: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/14.jpg)
menttes
Content types – De terceros
![Page 15: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/15.jpg)
menttes
Content types – Nuestros
![Page 16: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/16.jpg)
menttes
ArgoUML
![Page 17: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/17.jpg)
menttes
ArgoUML - Windows XP Download
Descargamos ArgoUML 0.24: http://argouml-downloads.tigris.org/argouml-0.24/
![Page 18: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/18.jpg)
menttes
ArgoUML – Ejecutar Jar File
Para ejecutar ArgoUML hacemos doble click en el archivo argouml
![Page 19: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/19.jpg)
menttes
ArgoUML – Descargando archgenxml tagged values
1) Descargamos argouml_profile:
http://plone.org/products/archgenxml/issues/30/18/at_download/attachment/
2) Copiamos el archivo argouml_profile.xmi dentro de la carpeta donde tenemos el ejecutable argouml.jar
![Page 20: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/20.jpg)
menttes
ArgoUML – Creando un .zargo con argouml_profile
1) Abrimos ArgoUML2) Vamos a “Archivo” -> “Guardar el proyecto como ...” y elegimos el nombre de nuestro proyecto (Ejemplo ArtistSite.zargo)
![Page 21: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/21.jpg)
menttes
ArgoUML – Creando un .zargo con argouml_profile
3) Luego lo que hacemos es pararnos encima del archivo .zargo que acabamos de crear y con el boton derecho del mouse elegimos la opción “Abrir con” -> “Elegir programa...”, por el momento seleccionamos el “Bloc de Notas” como programa por defecto para abrir los archivos .zargo para que Windows pueda identificarlos con algún formato.
4) A continuación dentro de la misma carpeta en donde se encuentra el archivo .zargo, elegimos el tab “Tipos de archivo” y elegimos nuestro archivo ZARGO.
![Page 22: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/22.jpg)
menttes
ArgoUML – Creando un .zargo con argouml_profile
5) Clickeamos en “Opciones avanzadas”, luego seleccionamos “open” y a continuación clickeamos en “Editar”, lo que hacemos es modificar “Aplicación utilizada para realizar la acción” por:
"C:\Program Files\Java\jre1.5.0_06\bin\javaw.exe" "-Dargo.defaultModel=your_PC_path\argouml_profile.xmi" -jar "your_PC_path\ArgoUML-0.20\argouml.jar" "%L"
![Page 23: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/23.jpg)
menttes
ArgoUML – Creando un .zargo con argouml_profile
Listo, ahora podemos ver dentro de nuestro modelo las opciones AGX en ArgoUML, y cada ves que
abramos un archivo .zargo se cargara con todos estos tag de manera automática
![Page 24: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/24.jpg)
menttes
¿Que es ArgoUML?
ArgoUML es una herramienta utilizada en el modelaje de sistemas, mediante la cual se realizan diseños en UML llevados acabo en el análisis y pre-
diseño de Sistemas de Software.
![Page 25: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/25.jpg)
menttes
¿Porque ArgoUML?
● Maduro – Este soporta importantes características ● Es relativamente liviano. Lo cual es muy
importante.● El precio es muy bueno. Es gratis.
![Page 26: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/26.jpg)
menttes
Definiendo Custom Content types
Ejemplo Uno: ArtistSite – Diagrama, atributos
Ejemplo Dos: GiveSuggestion – Workflow
Ejercicio Uno: AGAEXDocument – Expandir AT
Ejemplo Tres: ATArticle – Schemata
Ejercicio Dos: ATBirthday – Calendar, Kupu
![Page 27: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/27.jpg)
menttes
Ejemplo Uno: ArtistSite
![Page 28: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/28.jpg)
menttes
Creando la clase Artist
![Page 29: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/29.jpg)
menttes
Descripción, icono y docstring
![Page 30: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/30.jpg)
menttes
Atributos para el campo Title
![Page 31: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/31.jpg)
menttes
Tamaños de la foto
![Page 32: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/32.jpg)
menttes
Vocabulario de instrumentos
![Page 33: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/33.jpg)
menttes
¿Que es ArchGenXML?
● Es un generador de código para productos Plone, basados en Archetypes.
● Analiza modelos UML en el XMI-FORMATO (.xmi.zargo.zuml), creados con ArgoUML,
![Page 34: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/34.jpg)
menttes
¿Porqué usar ArchGenXML? (parte 1)
• Quieres ahorrarte tiempo
• Eres un programador bago
• No te gusta re inventar la rueda
• No te gusta copiar y pegar código• Haces uso de referencias e interfaces
![Page 35: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/35.jpg)
menttes
¿Porqué usar ArchGenXML? (parte 2)
• Tienes proyectos grandes con muchos content types diferentes
• Quieres o necesitas una correcta y bien documentada interfase para tu producto
• Quieres mantener tu proyecto en el futuro sin tener un dolor de cabeza
![Page 36: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/36.jpg)
menttes
De UML a Archetypes usando ArchGenXML
![Page 37: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/37.jpg)
menttes
Corriendo el script
Comando:
ArchGenXML.py -o ProductName ProductName.zargo
![Page 38: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/38.jpg)
menttes
Agregando un nuevo Artist
1) Copiar la carpeta ArtistSite en el directorio Products 2) Reiniciar Zope3) Instalar ArtistSite usando QuickInstaller4) Agregar un nuevo Artist
![Page 39: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/39.jpg)
menttes
Edit Artist form
![Page 40: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/40.jpg)
menttes
View Artist
![Page 41: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/41.jpg)
menttes
Moviendo el modelo al producto
1) Dentro de la carpeta ArtistSite crear una sub-carpeta llamada model
2) Copiar el archivo ArtistSite.zargo dentro de la carpeta model
![Page 42: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/42.jpg)
menttes
Vocabulario dinámico
![Page 43: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/43.jpg)
menttes
Agregar ATVM como dependencia
1) En la raíz del producto agregar el archivo AppConfig.py
2) Editar AppConfig.py y agregar la linea:DEPENDENCIES = ['ATVocabularyManager']
3) Reiniciar Zope4) Reinstalar ArtistSite
![Page 44: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/44.jpg)
menttes
Vocabulary Library
Ir a Plone Setup y elegir Vocabulary Library
![Page 45: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/45.jpg)
menttes
Agregamos un termino al vocabulario
![Page 46: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/46.jpg)
menttes
Vocabulario dinámico - Artist
![Page 47: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/47.jpg)
menttes
Contenedor
Usaremos el rombo solido para hacer una estricta contención, instancias del tipo Artist pueden ser
agregadas solo en instancias del tipo 'Artists'
![Page 48: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/48.jpg)
menttes
Usando <<large>> stereotype
![Page 49: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/49.jpg)
menttes
Le damos a este un nombre amigable
![Page 50: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/50.jpg)
menttes
Agregamos el contenedor Artists
![Page 51: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/51.jpg)
menttes
Ejemplo Dos: GiveSuggestion
![Page 52: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/52.jpg)
menttes
Atributos para el campo name
![Page 53: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/53.jpg)
menttes
Atributos para el campo suggestion
![Page 54: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/54.jpg)
menttes
Atributos para el campo area
![Page 55: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/55.jpg)
menttes
Corriendo el script
Comando:
ArchGenXML.py -o GiveSuggestion GiveSuggestion.zargo
![Page 56: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/56.jpg)
menttes
Agregando una nueva Suggestion
1) Copiar la carpeta GiveSuggestion en el directorio Products 2) Reiniciar Zope3) Instalar GiveSuggestion usando QuickInstaller4) Agregar una nueva Suggestion
![Page 57: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/57.jpg)
menttes
Edit Suggestion form
![Page 58: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/58.jpg)
menttes
Workflow
Lo que haremos ahora es agregarle workflow a nuestro content type Suggestion.
Definiremos los estados Submitted, Approved, Complete y Rejected con sus respectivas
transacciones.
![Page 59: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/59.jpg)
menttes
Agregando el diagrama de estado
1) Dentro de nuestro clase Suggestion, clickeamos en Crear -> Diagrama de estado
![Page 60: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/60.jpg)
menttes
Agregando un estado inicial
2) Agregamos un estado inicial, solo debemos clickear en el circulo de color negro solida, luego le ponemos el nombre Creating
![Page 61: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/61.jpg)
menttes
Agregando un estado simple
3) A continuación agregamos un estado simple, este luce como una caja redonda con una linea horizontal en el medio. Llamar a esta Submitted
![Page 62: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/62.jpg)
menttes
Otro estado simple
4) A la derecha de Submitted agregamos otro estado simple, lo llamaremos a este Approved
![Page 63: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/63.jpg)
menttes
Agregando estados finales
5) A la derecha de Approved agregamos un estado final (circulo negro con contorno blanco) al cual llamaremos Complete
6) Abajo de Approved agregamos un estado final al cual llamaremos Rejected
![Page 64: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/64.jpg)
menttes
Nombrando las transiciones
7) Lo que hacemos a continuación es nombrar las transiciones, la trancision que va al estado Submitted se llamara Submit, la transición que va al estado Approved se llamara Approve, la transición que va al estado Rejected se llamara Reject y por ultimo la transición que va al estado Completed se llamara Complete
![Page 65: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/65.jpg)
menttes
Permisos de los usuarios
8) Ahora vamos a definir lo que cada rol puede ver, los usuarios Anonimos podran Crear (un estado inicial) y requerir un Submit (una transición de estado), pero no podrán Aprobar una suggestion. Los Managers y Reviewer podrán approve/reject/complete la suggestions. Pero los usuarios anonimos podrán ver el pedido durante todo el proceso.
![Page 66: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/66.jpg)
menttes
Seteando permisos, estado Submitted
![Page 67: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/67.jpg)
menttes
Seteando permisos, estado Approved
![Page 68: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/68.jpg)
menttes
Seteando permisos, estado Complete
![Page 69: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/69.jpg)
menttes
Seteando permisos, estado Rejected
![Page 70: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/70.jpg)
menttes
Quien puede modificar los estados
9) Definiremos guardas (guards), para saber que estado es el que puede setear cada usuario en el content type. Para esto nos pararemos en cada una de las transacciones (menos en la inicial Submit) y agregaremos una guard:
guard_roles:Reviewer;Manager
![Page 71: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/71.jpg)
menttes
Guard - Approve
![Page 72: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/72.jpg)
menttes
Guard - Complete
![Page 73: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/73.jpg)
menttes
Guard - Reject
![Page 74: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/74.jpg)
menttes
Corriendo el script
Comando:
ArchGenXML.py -o GiveSuggestion GiveSuggestion.zargo
![Page 75: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/75.jpg)
menttes
Agregando una nueva Suggestion1) Copiar la carpeta GiveSuggestion en el directorio Products 2) Reiniciar Zope3) Instalar GiveSuggestion usando QuickInstaller4) Agregar una nueva Suggestion
![Page 76: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/76.jpg)
menttes
Anónimos Suggestion
Lo que haremos ahora es permitirle a los usuarios anónimos agregar suggestions a nuestro sitio. Pero no en cualquier lugar sino mas bien en una carpeta que
crearemos para que se agreguen dentro de esta.
![Page 77: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/77.jpg)
menttes
Carpeta Suggestion
1) En nuestra instancia Plone agregamos una carpeta en la raíz llamada Suggestions. Y dentro de esta creamos otra carpeta llamada Archive.
![Page 78: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/78.jpg)
menttes
Carpeta Suggestion - Security
2) En nuestro ZMI:a) Navegamos hasta la carpeta suggestions/archive
y clickeamos en el tab Security, buscamos el permiso Add portal content, Desclikeamos el box Aquire a la izquierda y clickeamos los boxes Anonymous y Authenticated a la derecha.
![Page 79: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/79.jpg)
menttes
Carpeta Suggestion - Security
b) Buscamos ahora el permiso Modify portal content. Asegurarse de que Aquire esta
desclickeado y clickear Anonymous y Authenticated.
![Page 80: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/80.jpg)
menttes
Carpeta Suggestion - Security
c) En la parte de mas abajo de la pagina clickeamos en el boton Save Changes para guardar los cambios.
Si abrimos el Sitio Plone con otro navegador o nos deslogeamos del sitio que estamos utilizando, podremos ver que los usuarios anónimos pueden ahora agregar suggestions dentro de la carpeta Archive. Y poner el contenido en estado Submited.
Pero tenemos un problema, los usuarios anónimos pueden editar dentro de Archive y eso no lo queremos.
![Page 81: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/81.jpg)
menttes
Negar edición a los Anónimos
El objetivo es hacer que los usuarios anónimos no puedan editar suggestions, para esto agregaremos
dos script dentro de nuestro producto GiveSuggestion que lo que harán es modificar de manera automática
el estado de las suggestion al ser creadas a Submited, ya que en ese estado hemos definido que los únicos que pueden modificar los objetos son los Managers y
Reviewers.Es importante tener en cuenta que estos scripts se
pueden borrar si regeneramos el producto con ArchGenXML por lo tanto debemos mantener una
copia del producto en algun lado.
![Page 82: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/82.jpg)
menttes
Creamos suggestion_post.cpy
En Products\GiveSuggestion\skins\GiveSuggestion
## Script (Python) "suggestion_post"##title=Post GiveSuggestion after validation##bind container=container##bind context=context##bind namespace=##bind script=script##bind state=state##bind subpath=traverse_subpath##parameters=##
from Products.CMFCore.utils import getToolByName
workflow = getToolByName(context, 'portal_workflow')workflow.doActionFor(context, 'Submit')
return state.set(status = 'success', portal_status_messsage = 'Thank you.')
![Page 83: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/83.jpg)
menttes
Creamos suggestion_post.cpy.metadata
En Products\GiveSuggestion\skins\GiveSuggestion
[default]title = Submit a suggestion
[validators]validators =
[actions]action.success = redirect_to:string:../action.failure = traverse_to:string:content_edit
![Page 84: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/84.jpg)
menttes
Editamos Install.py
En Products\GiveSuggestion\Extensions\Install.py
buscamos la linea:
print >>out,'no workflow install'
y debajo de esta ponemos:
controller = getToolByName(self, 'portal_form_controller')addFormControllerAction(self, out, controller, template = 'validate_integrity', status = 'success', contentType = 'Suggestion', button = '', actionType = 'traverse_to', action = 'string:suggestion_post')
![Page 85: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/85.jpg)
menttes
Editamos Install.py
En la parte inferior del archivo agregamos el código:
def addFormControllerAction(self, out, controller, template, status, contentType, button, actionType, action): """Add the given action to the portalFormController""" controller.addFormAction(template, status, contentType, button, actionType, action) print >> out, "Added action %s to %s" % (action, template)
Listo, si probamos ahora agregar una suggestion como usuarios anónimos, no podremos editarlo.
![Page 86: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/86.jpg)
menttes
Ejercicio Uno: ATAGAEXDocument
![Page 87: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/87.jpg)
menttes
Objetivo
El objetivo es crear un nuevo content type Document que herede todos los campos de ATDocument y a su
ves añadir un par de campos adicionales
![Page 88: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/88.jpg)
menttes
Un vistazo
![Page 89: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/89.jpg)
menttes
Atributos nuevos en ATAGAEXDocument
![Page 90: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/90.jpg)
menttes
Moviendo los nuevos campos debajo de title
Para mover los nuevos campos debajo del campo title debemos utilizar la función moveField, en:
Products\ATAGAEXDocument\content\AGAEXDocument.py
luego de la definición de nuestro schema, ponemos
AGAEXDocument_schema.moveField('autor', after='title')AGAEXDocument_schema.moveField('conocimiento', after='autor')AGAEXDocument_schema.moveField('publico', after='conocimiento')AGAEXDocument_schema.moveField('email', after='publico')'
![Page 91: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/91.jpg)
menttes
Atributos movidos en ATAGAEXDocument
![Page 92: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/92.jpg)
menttes
Ejemplo 4: ATArticle - Schemata
![Page 93: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/93.jpg)
menttes
Atributos para el campo body
![Page 94: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/94.jpg)
menttes
Atributos para el campo firstname
![Page 95: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/95.jpg)
menttes
Atributos para el campo lastname
![Page 96: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/96.jpg)
menttes
Corriendo el script
Comando:ArchGenXML.py -o ATArticle ATArticle.zargo
![Page 97: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/97.jpg)
menttes
Agregando un nuevo Article
1) Copiar la carpeta ATArticle en el directorio Products 2) Reiniciar Zope3) Instalar ATArticle usando QuickInstaller4) Agregar un nuevo Article
![Page 98: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/98.jpg)
menttes
Edit Article form – Schemata default
![Page 99: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/99.jpg)
menttes
Edit Article form – Schemata article
![Page 100: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/100.jpg)
menttes
Edit Article form – Schemata author
![Page 101: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/101.jpg)
menttes
View Article
![Page 102: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/102.jpg)
menttes
Borrando el schemata default
Para borrar el schemata default primero debemos mover los atributos id y title a nuestro schemata article, en:
Products\ATArticle\content\Article.py
luego de la definición de nuestro schema, ponemos
Article_schema['id'].schemata = 'article'Article_schema['title'].schemata = 'article'
![Page 103: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/103.jpg)
menttes
Article sin schemata default
![Page 104: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/104.jpg)
menttes
Ocultando title en Article
Lo que haremos a continuación es borrar el atributo title de nuestro content type Article, en:
Products\ATArticle\content\Article.py
luego de la definición de nuestro schema, ponemos
Article_schema['title'].required = 0Article_schema['title'].widget.visible = {'edit': 'hidden', 'view': 'invisible'}
![Page 105: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/105.jpg)
menttes
Article sin el atributo title
![Page 106: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/106.jpg)
menttes
Que paso con el id de nuestro ATArticle?
Al haber ocultado el atributo title de nuestro content type, Plone utiliza un id por defecto que lo obtiene de manera automática de acuerdo a la fecha del día en que se crea el objeto.
![Page 107: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/107.jpg)
menttes
Pisando title en Article
Lo que haremos sera modificar el atributo title cambiándole el nombre a Author, en:
Products\ATArticle\content\Article.py
luego de la definición de nuestro schema, ponemos
Article_schema['title'].widget.label = 'Author'
#Article_schema['title'].required = 0#Article_schema['title'].widget.visible = {'edit': 'hidden', 'view': 'invisible'}
![Page 108: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/108.jpg)
menttes
Atributo title renombrado
![Page 109: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/109.jpg)
menttes
Ejercicio Dos: ATBirthday
![Page 110: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/110.jpg)
menttes
¿Qué es Archetypes?
Archetypes es un framework diseñado para facilitar la construcción de aplicaciones para Plone
![Page 111: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/111.jpg)
menttes
Objetivo Principal
Proporcionar un método común para construir content type,
basado en la definición de esquemas
![Page 112: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/112.jpg)
menttes
Arquitectura Archetypes
SchemaField
WidgetSchema Field
Widget…
![Page 113: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/113.jpg)
menttes
¿Qué es un esquema Archetypes ?
El corazón de archetypes es su esquema (secuencia de campos).
El esquema trabaja como una definición de lo que su objeto contendrá y como presentar la información
contenida.
![Page 114: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/114.jpg)
menttes
Esquema y Esquema Base
Para crear un esquema se pasan los camposque se desean dentro del objeto esquema
como una tupla.
Ej.:
Schema((StringField('body',
widget = TextAreaWidget(label='Body') ),
# otros campos aquí))
![Page 115: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/115.jpg)
menttes
Esquema Base + Esquema
schema = Schema((StringField('body'),
))
class Ejemplo(BaseContent)schema = BaseSchema + schema
![Page 116: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/116.jpg)
menttes
Fields
Todos los campos son instanciados de la misma manera, creando un campo y pasándole a este un
parámetro requerido: name
Ej.:
from Products.Archetypes.public import IntegerField# un simple campo para edadage = IntegerField('age')
![Page 117: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/117.jpg)
menttes
Widgets
Una widget contiene la información acerca de cómo será representado visualmente el objeto
Ej.:from Products.Archetypes.public import IntegerFieldfrom Products.Archetypes.public import IntegerWidget
# un simple campo para la edadage = IntegerField('age', widget=IntegerWidget(label="Your age") )
![Page 118: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/118.jpg)
menttes
Ejemplo de Archetypes: Artist
schema = Schema((StringField('name'),ImageField('photo'),LinesField('instrument'),
))
class Artist(BaseContent)schema = BaseSchema + schemaregisterType(Artist,PROJECTNAME)
![Page 119: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/119.jpg)
menttes
Widgets
schema = Schema((StringField('name',
widget=StringWidget( label='Artist name', size=20),),ImageField('photo',
widget=ImageWidget(label='Headshot'),),LinesField('instrument', widget=MultiSelectionWidget(label='Instruments'),
multiValue=1,),
))
![Page 120: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/120.jpg)
menttes
Ejemplo: Artist paso a pasoProducts|\ Artist
| \ __init__.py | \ Artist.py | \ config.py | \ Extension | \ __init__.py |
\ Install.py
![Page 121: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/121.jpg)
menttes
Paso 1) Directorio Artist
Lo primero que debemos hacer es ir dentro de nuestro directorio de productos Plone y crear una
carpeta con el nombre “Artist”
Ejemplo: /var/www/zope/plone-2.1.1/Product/Artist
(Aunque podemos crearla en cualquier lado y luego tirarla dentro de “Product”)
![Page 122: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/122.jpg)
menttes
Paso 2) Artist.py
1 from Products.Archetypes.public import *2 from Products.Artist.config import PROJECTNAME34 class Artist(BaseContent):5 “””A Simple Content Type“””6 schema = BaseSchema + Schema((7 StringField('name'),8 ImageField('photo'),9 LinesField('instrument'),10 ))1112 registerType(Artist,PROJECTNAME)
![Page 123: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/123.jpg)
menttes
Paso 3) Atributos
schema = BaseSchema + Schema((StringField('name',
widget=StringWidget(label='Artist name', size=20),),ImageField('photo',
widget=ImageWidget(label='Headshot'),),LinesField('instrument', widget=MultiSelectionWidget(label='Instruments'),
multiValue=1,),
))
![Page 124: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/124.jpg)
menttes
Bien a esta altura ya hemos definido el esquema que tendra nuestro nuevo content type Artist
Ahora veamos como convertir un esquema Archetypes en un producto Zope
![Page 125: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/125.jpg)
menttes
Paso 4) __init__.py1 from Products.Archetypes.public import process_types, listTypes2 from Products.CMFCore import utils3 from Products.MyName.config import PROJECTNAME, ADD_CONTENT_PERMISSION4 5 def initialize(context):6 ## Import Types here to register them7 import Name89 content_types, constructors, ftis = process_types(listTypes(PROJECTNAME),10 PROJECTNAME)11 12 utils.ContentInit(13 PROJECTNAME + ' Content',14 content_types = content_types,15 permission = ADD_CONTENT_PERMISSION,16 extra_constructors = constructors,17 fti = ftis,18 ).initialize(context)
![Page 126: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/126.jpg)
menttes
Paso 5) config.py
1 PROJECTNAME = 'Artist'
2 ADD_CONTENT_PERMISSION = 'Artist: Add Content'
![Page 127: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/127.jpg)
menttes
Bien ya tenemos nuestro producto Plone listo con nuestro content type definido mediante esquemas.Ahora veamos como hacer el producto que hemos
creado instalable.
![Page 128: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/128.jpg)
menttes
Paso 6) Install.pyBien, primero debemos crear una nueva carpeta
Extensions dentro de nuestra carpeta Artist. Ahora si, dentro de esta agregamos Install.py:
1 from Products.Artist.config import PROJECTNAME2 from Products.Archetypes.public import listTypes3 from Products.Archetypes.Extensions.utils import installTypes4 from StringIO import StringIO5 def install(self):6 out = StringIO()7 installTypes(self, out,8 listTypes(PROJECTNAME),9 PROJECTNAME) 10 print >> out, "Successfully installed %s." % PROJECTNAME11 return out.getvalue()
![Page 129: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/129.jpg)
menttes
Listo! Hemos terminado.Ahora vamos a probarlo, para esto reiniciemos
nuestra instancia Zope, dentro de Plone vamos al ZMI, luego a portal_quickinstaller e instalamos
nuestro nuevo producto.En la front-page vamos a nuestra barra de
contenidos 'drop-down list' y cargamos un nuevo content type Artist!
![Page 130: Desarrollo de Productos con Archetypes y ArchGenXML](https://reader033.fdocuments.mx/reader033/viewer/2022052505/55512f1bb4c905f1528b4f0b/html5/thumbnails/130.jpg)
menttes
Material leido para ArchGenXML/ArgoUML
http://plone.org/documentation/tutorial/archgenxml-getting-started/tutorial-all-pages
http://plone.org/products/archgenxml/documentation/how-to/setting-up-argouml-to-provide-tagged-values-and-stereotypes-in-a-dropdown-menu
http://plone.org/products/archgenxml/issues/30
http://plone.org/documentation/tutorial/picking-archetypes-widgets/tutorial-all-pages
http://plone.org/documentation/tutorial/archgenxml-getting-started/archgenxmlquickref
http://plone.org/products/archgenxml/documentation/how-to/subclassing-atcontenttypes
http://plone.org/documentation/tutorial/anonymously-adding-custom-content-types-with-argouml-and-archgenxml/tutorial-all-pages
http://oodt.jpl.nasa.gov/wiki/display/edrn/UML+to+Portal+in+a+Few+Easy+Steps
http://www.jazkarta.com/presentations/ArchGenXML-ArgoUML.pdf
http://plone.org/documentation/how-to/make-view-page-use-schemata-declarations/?searchterm=BaseSchema
http://plone.org/products/archetypes/documentation/how-to/title-less-type