Generación automática de documentos usando Appy/POD
(Codigo fuente disponible con licencia CC-BY en https://bitbucket.org/euribates/presentacion-appy/)
Taller de introducción al desarrollo web con DjangoJuan Rodríguez
Taller de introducción al desarrollo web con Django, impartido en la Tenerife Lan Party 2012.
"Te Interesa desarrollar proyectos para la web? ¿Posees un espíritu perfeccionista, pero siempre te falta tiempo? Entonces lo que necesitas en un framework de desarrollo para web que te quite de encima los problemas y te permita concentrarte en lo realmente importante: tu idea.
Quizá Django pueda ayudarte. Django es código abierto, modular, escrito en Python, y muy potente. En este taller daremos una introducción a Django, e implementaremos desde cero una aplicación web para gestionar los informes secretos de SHIELD. Con registro de usuarios, acceso a base de datos, páginas dinámicas y servicios web. En cuatro horas."
PHP, una introducción a modo de presentación como tutorial básico llegando hasta clases y pasando por la conexión con una oferta de servicios web mediante protocolo SOAP con WSDL.
Taller de introducción al desarrollo web con DjangoJuan Rodríguez
Taller de introducción al desarrollo web con Django, impartido en la Tenerife Lan Party 2012.
"Te Interesa desarrollar proyectos para la web? ¿Posees un espíritu perfeccionista, pero siempre te falta tiempo? Entonces lo que necesitas en un framework de desarrollo para web que te quite de encima los problemas y te permita concentrarte en lo realmente importante: tu idea.
Quizá Django pueda ayudarte. Django es código abierto, modular, escrito en Python, y muy potente. En este taller daremos una introducción a Django, e implementaremos desde cero una aplicación web para gestionar los informes secretos de SHIELD. Con registro de usuarios, acceso a base de datos, páginas dinámicas y servicios web. En cuatro horas."
PHP, una introducción a modo de presentación como tutorial básico llegando hasta clases y pasando por la conexión con una oferta de servicios web mediante protocolo SOAP con WSDL.
Instalar Python 2.7 y 3 en Windows (Anaconda)CAChemE
¿Cómo instalar Python en Windows?
Diapositivas que explican cómo instalar paso a paso Python en Windows.
Nota: Están orientadas a científicos e ingenieros con poca experiencia en el entorno de windows.
Aumenta la seguridad de tus formularios gracias a recaptcha de google.
Introduccióna recaptcha y jQuery
Aplicable a cualquier tipo de formulario, login, registro, contacto, etc.
Claro que si, como su título lo indica, la raíz de este tutorial es porque hay muy poca información en español sobre como realizar este tipo de tareas.
Entonces, me veo en la necesidad de hacer algo útil y que sirva para aquellos que no dejamos de utilizar el lenguaje C/C++ para nuestras tareas rutinarias.
Instalar Python 2.7 y 3 en Windows (Anaconda)CAChemE
¿Cómo instalar Python en Windows?
Diapositivas que explican cómo instalar paso a paso Python en Windows.
Nota: Están orientadas a científicos e ingenieros con poca experiencia en el entorno de windows.
Aumenta la seguridad de tus formularios gracias a recaptcha de google.
Introduccióna recaptcha y jQuery
Aplicable a cualquier tipo de formulario, login, registro, contacto, etc.
Claro que si, como su título lo indica, la raíz de este tutorial es porque hay muy poca información en español sobre como realizar este tipo de tareas.
Entonces, me veo en la necesidad de hacer algo útil y que sirva para aquellos que no dejamos de utilizar el lenguaje C/C++ para nuestras tareas rutinarias.
Laravel, es el framework PHP de código abierto de mayor aceptación actualmente para este lenguaje, y su simplicidad en la sintaxis, su elegancia en la escritura, su motor de plantillas incorporado, la potencia de composer y de artisan para su manejo y los complementos con los que cuenta, hacen que PHP que para muchos estaba empezando a quedarse en el olvido, vuelva a ser rescatado y sea ahora un lenguaje moderno, rápido, eficiente y profesional trabajado desde Laravel.
PHP es un lenguaje de scripting orientado al desarrollo de aplicaciones web. En una primera parte se explica los principios del lenguaje, algunas herramientas y un esbozo de una aplicación web escrita en PHP. En una segunda parte se presenta Symfony, un framework PHP que reúne las mejores prácticas de desarrollo de aplicaciones web.
CRUD básico con Symfony. Esta presentación es una continuación de lo contado en la II Symfony Zaragoza. Explica un ejemplo sencillo de un CRUD para mostrar como realizar modelos, controladores, vistas, formularios, etc.
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contableAlex Rayón Jerez
Dirigido a cualquier persona y/o cualquier organización, el cursillo sobre la herramienta de software libre OpenERP permitirá a los asistentes conocer las superficialidades de esta herramienta de gestión de los recursos de la empresa, que si bien es transversal a muchas áreas de gestión empresarial, es parametrizable a necesidades específicas de la organización (contabilidad, recursos humanos, compras, clientes, etc.)
En este curso, se introducirá el ERP de software libre que mayor crecimiento ha experimentado en las últimas fechas, y se presentará su parametrización como herramienta contable como alternativa real y válida a otras herramientas de gestión como pudiera ser Contaplus de Sage o similares.
Una corta introducción para el principio de diseño conocodo como: HAcer los estados invalidos imposibles de representar.
Charla para el #PyBirrasTenerife2022
Vue.js: El framework javascript para mugglesJuan Rodríguez
Introducción a Vue.js, un framework javascript reactivo, diseñado para que sea sencillo de usar, pero con una enorme capacidad de expansión.
Se puede descargar esta presentación, así como el código de los ejemplos de:
https://github.com/euribates/vuelab/
Viaje al centro de la locura con JavascriptJuan Rodríguez
Presentación para la charla "Viaje al centro de la locura con Javascript", dada en la Tenerife Lan Party 2016, en la sección "El Club del Desarrollador".
KAWARU CONSULTING presenta el projecte amb l'objectiu de permetre als ciutadans realitzar tràmits administratius de manera telemàtica, des de qualsevol lloc i dispositiu, amb seguretat jurídica. Aquesta plataforma redueix els desplaçaments físics i el temps invertit en tràmits, ja que es pot fer tot en línia. A més, proporciona evidències de la correcta realització dels tràmits, garantint-ne la validesa davant d'un jutge si cal. Inicialment concebuda per al Ministeri de Justícia, la plataforma s'ha expandit per adaptar-se a diverses organitzacions i països, oferint una solució flexible i fàcil de desplegar.
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...AMADO SALVADOR
El catálogo general de electrodomésticos Teka presenta una amplia gama de productos de alta calidad y diseño innovador. Como distribuidor oficial Teka, Amado Salvador ofrece soluciones en electrodomésticos Teka que destacan por su tecnología avanzada y durabilidad. Este catálogo incluye una selección exhaustiva de productos Teka que cumplen con los más altos estándares del mercado, consolidando a Amado Salvador como el distribuidor oficial Teka.
Explora las diversas categorías de electrodomésticos Teka en este catálogo, cada una diseñada para satisfacer las necesidades de cualquier hogar. Amado Salvador, como distribuidor oficial Teka, garantiza que cada producto de Teka se distingue por su excelente calidad y diseño moderno.
Amado Salvador, distribuidor oficial Teka en Valencia. La calidad y el diseño de los electrodomésticos Teka se reflejan en cada página del catálogo, ofreciendo opciones que van desde hornos, placas de cocina, campanas extractoras hasta frigoríficos y lavavajillas. Este catálogo es una herramienta esencial para inspirarse y encontrar electrodomésticos de alta calidad que se adaptan a cualquier proyecto de diseño.
En Amado Salvador somos distribuidor oficial Teka en Valencia y ponemos atu disposición acceso directo a los mejores productos de Teka. Explora este catálogo y encuentra la inspiración y los electrodomésticos necesarios para equipar tu hogar con la garantía y calidad que solo un distribuidor oficial Teka puede ofrecer.
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaAMADO SALVADOR
Descubra el catálogo completo de buzones BTV, una marca líder en la fabricación de buzones y cajas fuertes para los sectores de ferretería, bricolaje y seguridad. Como distribuidor oficial de BTV, Amado Salvador se enorgullece de presentar esta amplia selección de productos diseñados para satisfacer las necesidades de seguridad y funcionalidad en cualquier entorno.
Descubra una variedad de buzones residenciales, comerciales y corporativos, cada uno construido con los más altos estándares de calidad y durabilidad. Desde modelos clásicos hasta diseños modernos, los buzones BTV ofrecen una combinación perfecta de estilo y resistencia, garantizando la protección de su correspondencia en todo momento.
Amado Salvador, se compromete a ofrecer productos de primera clase respaldados por un servicio excepcional al cliente. Como distribuidor oficial de BTV, entendemos la importancia de la seguridad y la tranquilidad para nuestros clientes. Por eso, trabajamos en colaboración con BTV para brindarle acceso a los mejores productos del mercado.
Explore el catálogo de buzones ahora y encuentre la solución perfecta para sus necesidades de correo y seguridad. Confíe en Amado Salvador y BTV para proporcionarle buzones de calidad excepcional que cumplan y superen sus expectativas.
2. ¿Qué es POD?
POD (Python Open Document) es una
librería python que permite generar
documentos con contenidos
dinámicos.
Es parte de un framework llamando
Appy (Applications in python)
4. ¿Cómo funciona?
1) Se crea una plantilla en formato ODF (Open
Document Format)
2) Insertamos código dentro
5. ¿Cómo funciona?
1) Se crea una plantilla en formato ODF (Open
Document Format)
2) Insertamos código dentro
3) Llamamos a pod con la plantilla y un
conjunto de objetos Python, obteniendo un
documento ODF con el resultado deseado
6. Otros formatos
• Se puede usar el LibreOffice en modo de
servidor para convertir el ODT resultante en
cualquier formato que LibreOffice pueda
exportar: RTF, Documentos Word, PDF, etc...
• No lo veremos en esta presentación, pero se
puede hacer
• Para generar en documento en formato ODT,
sin embargo, NO es necesario ni siquiera tener
instalado OpenOffice.
7. Hola, Mundo
Primero creamos un documento con
OpenOffice/LibreOffice. Vamos a incluir una variable
que definiremos por programa. Para incluir la variable
en el texto del documento:
8. Hola, Mundo
Primero creamos un documento con
OpenOffice/LibreOffice. Vamos a incluir una
variable que definiremos por programa. Para
incluir la variable en el texto del documento:
1) Seleccionamos “grabar cambios” (Menú
Editar->Cambios->Grabar)
9. Hola, Mundo
Primero creamos un documento con
OpenOffice/LibreOffice. Vamos a incluir una
variable que definiremos por programa. Para
incluir la variable en el texto del documento:
1) Seleccionamos “grabar cambios” (Menú
Editar->Cambios->Grabar)
2) Escribimos el nombre de la variable
10. Hola, Mundo
Primero creamos un documento con
OpenOffice/LibreOffice. Vamos a incluir una
variable que definiremos por programa. Para
incluir la variable en el texto del documento:
1) Seleccionamos “grabar cambios” (Menú
Editar->Cambios->Grabar)
2) Escribimos el nombre de la variable
3) Volvemos al modo normal con la misma
opción del menú.
12. Fusionar plantilla con datos
#!/usr/bin/env python
from appy.pod.renderer import Renderer
import datetime
hora = datetime.datetime.now()
renderer = Renderer(
'ex_01.odt', # Plantilla
{'hora':hora}, # Contexto
'out_01.odt' # Salida
)
renderer.run()
13. No solo variables
Podemos incluir otras cosas, además de
variables:
• Valores retornados por funciones
• Expresiones
• Valores retornados por métodos de objetos
• Estructuras de datos complejas
17. #!/usr/bin/env python
from appy.pod.renderer import Renderer
class Mensajes:
def __init__(self, msg):
self.msg = msg
def hola(self):
return self.msg
mensajes = Mensajes('hola, mundo')
datos = [
{'nombre':'Matt Murdock'},
{'nombre':'Peter Parker'},
]
renderer = Renderer('ex_03.odt', globals(), 'out_03.odt')
renderer.run()
Fusionar con métodos/estructuras de datos
18. Estructuras de control
• Las estructuras de control se realizan mediante
notas (En LibreOffice: Insertar -> Comentarios
[Ctrl-Shift-C])
• El código va dentro de la nota
• Solo hay dos estructuras de control: IF y FOR
19. La sentencia IF
La sentencia if tiene la siguiente forma:
do <área afectada> [if <condicion python>]
Donde el área afectada puede ser:
• text Todo el párrafo
• title El título
• section Toda la sección
• table Toda la tabla
• row Toda una fila de una tabla
• cell Una celda dentro de una tabla
20. La sentencia IF
Después del IF, puede venir cualquier expresión
en Python, que se evaluará como un valor
booleano. Si es verdadero, el área afectada
aparecerá en el documento generado, si es
falsa, no aparecerá.
22. La sentencia IF
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from appy.pod.renderer import Renderer
flag = False
renderer = Renderer(
'ex_04.odt',
locals(),
'out_04.odt',
)
renderer.run()
23. La sentencia FOR
La sentencia for tiene la siguiente forma:
do <área afectada> for <variable> in <iterador>
• En variable podemos usar cualquier nombre que
sea válido en Python
• Servirá como la variable de la iteración, es decir, el
valor que cambia en cada ciclo. Se inserta en el
contexto para que sea accesible.
• En iterador nos servirá cualquier variable iterable
en Python: listas, texto, tuplas, etc...
• El área de actuación es igual que en el if.
25. La sentencia FOR
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from appy.pod.renderer import Renderer
numeros = range(1,101)
renderer = Renderer(
'ex_05.odt',
locals(),
'out_05.odt',
)
renderer.run()
26. Insertar contenido arbitrario
• Existe una clausula especial from, que se puede
añadir a las sentencias if/for
• Permite sustituir el área afectada por el
resultado de la cláusula from
27. • La cláusula from debe empezar en una nueva
línea (Si no, pensará que es parte de la
sentencia y probablemente de error)
• La cláusula debe ser una expresión válida en
Python, que debe devolver un fragmento
correctamente formateado en ODT.
Para usar la cláusula from
28. Ejemplo de uso de la cláusula from
do text
from '<text:p>Hola, mundo</text:p>'
Ejemplo con un if
Ejemplo con un for
do text for i in range(3)
from '<text:p>Hola, mundo %d</text:p>' % i
La pega: Hay que conocer el formato interno
de ODT (El resumen tiene 303 páginas)
Por eso se inventó...
29. La función xhtml
• Esta función nos permite convertir de Html a
formato ODT, preparado para ser incrustado con la
cláusula from.
• Si utilizamos clases en nuestro Html, y existe un
estilo con el mismo nombre en la plantilla, se usará
ese estilo.
• Los tags h1..h6 se mapean a los estilos
Heading1..Heading6.
31. Ejemplo 6 ~ Uso de from/xhtml ~ Programa
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from appy.pod.renderer import Renderer
ejemplo = '''
<h2>Ejemplo</h2>
<p>Un párrafo con <b>negritas</b>, <i>itálicas</i>, subíndices:
H<sub>2</sub>O, exponentes: 2·π·r<sup>2</sup> y de postre un enlace:
<a href="http://www.python.org/">www.python.org</a>.</p>
<ul>
<li>Uno</li>
<li>Dos</li>
<li>Tres</li>
<ul>
<li>Tres.Uno</li>
<li>Tres.Dos</li>
</ul>
</ul>
'''
renderer = Renderer('ex_06.odt', locals(), 'out_06.odt',)
renderer.run()
32. la función document
• La función document permite integrar dentro
del resultado imágenes o ficheros externos.
• La función tiene la siguiente signatura:
document(content=None, at=None, format=None, anchor='as-char')
• Se puede usar para incrustar contenidos que
estén en memoria (porque los recuperamos de
una base de datos, por ejemplo) o que estén en
el sistema de ficheros.
33. la función document para contenidos en memoria
Si el contenido está en memoria:
• content puede ser o una variable cuyo valor son
los datos binarios, o un objeto de tipo file, abierto
• format puede ser o un tipo MIME o un extensión
de fichero (sin punto) de alguno de los formatos
aceptables: Un documento ODT, un documento
PDF, una imagen PNG, una imagen JPEG o una
imagen GIF
34. Si el contenido está en un fichero:
• El parámetro at indica la ruta dentro del sistema
de ficheros de la imagen o documento a incrustar.
• los parámetros content y format no son
necesarios.
la función document para contenidos en ficheros
35. El parámetro anchor de la función document
Este parámetro se usa solo para las imágenes, y
determina la forma en que la imagen se ancla
en el documento resultante. Los posibles
valores son:
Valor del parámetro Descripción
page
Al párrafo
char
A la página
paragrap
as-char
Al carácter
Como un carácter
36. El código de los ejemplos está disponible
El contenido de esta presentación, tanto en pdf
como en su fuente original para scribus, los
ficheros auxiliares, documentos y scripts de
ejemplo están disponibles públicamente en:
Con licencia Creative-commons reconocimiento (Attribution)
hg clone https://bitbucket.org/euribates/presentacion-appy
37. Créditos y agradecimientos
La fotografía usada en el fondo es de:
Luke Robinson
(mortalcoil)
http://www.flickr.com/photos/mortalcoil/