Template de Plugin para Andino. Este repositorio es una muestra de cómo implementar un plugin base para una instancia de Andino y agregar funcionalidades extendiendo el plugin.
Antes de crear y comenzar a utilizar tu propio plugin basado en ckanext-andinotemplate
, quizás quieras
instalar el original a modo de prueba. Para lograrlo:
-
Activá el virtualenv de tu instancia de CKAN:
. /usr/lib/ckan/default/bin/activate
-
Instalá el paquete de Python
ckanext-andinotemplate
dentro del virtualenv:pip install -e git+https://github.com/datosgobar/ckanext-andinotemplate.git#egg=ckanext-andinotemplate
-
Agregá
andinotemplate
a la lista deckan.plugins
en tu archivo de configuración de CKAN (por defecto ubicada en/etc/ckan/default/production.ini
dentro del contenedorportal
). -
Editar el archivo de configuración de Andino
/etc/ckan/default/production.ini
dentro del contenedorportal
y agregar el settingandino.base_page = andino_custom_base_page.html
, provisto porckanext-andinotemplate
. -
Reiniciá Andino.
El plugin template default permite agregar a tu instancia de Andino dos puntos de menú en la navegación superior de Andino:
- Andino: Al hacer click redirige a la documentación oficial de Portal Andino.
- Nueva Sección: Es una demostración de cómo agregar una ṕágina de contenido estático en Andino.
Para crear e instalar tu propia versión de ckanext-andinotemplate
para agregar funcionalidades adicionales a tu
Andino seguí los siguientes pasos:
-
Necesitás tener tu copia del proyecto
ckanext-andinotemplate
, lo cual podés lograr haciendo un fork del original o una copia del repositorio. -
Renombrar el plugin acorde a la funcionalidad que agregarás. Por ejemplo
ckanext-miplugindeandino
. -
Ingresá al contenedor
portal
de tu Andino y asegurate de que esté activado el virtualenv:. /usr/lib/ckan/default/bin/activate
-
Instalá el paquete de Python correspondiente a tu plugin en modo editable dentro del virtualenv:
pip install -e
-
Agregá tu plugin a la lista de
ckan.plugins
en tu archivo de configuración de CKAN (por defecto ubicada en/etc/ckan/default/production.ini
dentro del contenedorportal
). Si tu plugin se llamackanext-miplugindeandino
lo que debés agregar esmiplugindeandino
. -
Editá el archivo de configuración de Andino
/etc/ckan/default/production.ini
dentro del contenedorportal
y agregá el settingandino.base_page = andino_custom_base_page.html
, provisto por tu copia deckanext-andinotemplate
. Este paso es opcional, y sólo debés hacerlo si deseás modificar los templates de Andino. -
Reiniciá Andino.
El archivo andino_custom_base_page.html
deberá contener lo que desees mostrar en vez del template default que
utiliza Andino. Esto te permite, por ejemplo, agregar secciones nuevas en el header (las cuales te pueden servir
para mostrar las nuevas funcionalidades) junto a las ya existentes.
Recomendamos basarse en el template utilizado por default en Andino y realizar modificaciones a partir del mismo.
Se requiere la utilización de un template nuevo para cada funcionalidad, el cual debe ser guardado en el mismo
directorio que el archivo template_nuevo.html
.
-
Creá un nuevo template copiando el archivo template_nuevo.html, por ejemplo
mi_nuevo_template.html
. -
Agrega una nueva "acción" en la clase dentro de plugin_controller.py; éste debe ser un método que reciba cierto parámetro y devuelva render("mi_nuevo_template.html").
-
En el archivo
plugin.py
de ckanext-andinotemplate, dentro de la funciónafter_map
, copiar y pegar un código parecido a éste exactamente arriba de la línea "return m":
m.connect('mi_pagina_custom', "/el_path_de_mi_pagina",
controller='ckanext.andinotemplate.plugin_controller:AndinoTemplateController',
action='nombre_de_mi_accion')
- En el archivo
plugin_controller.py
de ckanext-andinotemplate, pegar como función nueva este código:
def nombre_de_mi_accion(self):
return base.render('mi_nuevo_template.html') # Especificamos el template
Es importante que el nombre de la función, en este ejemplo "nombre_de_mi_accion", sea el mismo que se escribió para
'action' en plugin.py
.
Para más información acerca de cómo desarrollar un plugin para CKAN, podés ver la documentación oficial.