Migración a Wordpress usando Python para Campaña Ropa Limpia

Migración a Wordpress usando Python para Campaña Ropa Limpia

Campaña Ropa Limpia es una red de asociaciones cuyo objetivo es “mejorar las condiciones de las personas trabajadoras de la industria global de la confección”. Para la difusión de su trabajo cuentan con el sitio ropalimpia.org. Este sitio estaba construido sobre una aplicación personalizada sobre el lenguaje PHP. Junto a nuestros socios de FreePress migramos la web desde esa aplicación al sistema Wordpress (construido también con el lenguaje de programación PHP).

En la fase inicial de la migración, se sacaron los datos de la aplicación personalizada utilizando la funcionalidad de introspección de bases de datos del ORM (Object Relational Mapping) Peewee [1] (programada en el lenguaje Python). Esta funcionalidad genera modelos automáticamente desde las tablas para utilizarse al momento y realizar consultas expresivas, insertados, etc. fácilmente sin necesitar de escribir secuencias SQL. Un ejemplo de consulta sería:

CrlTestimonios().select().where(visible == 1)

Los resultados de las consultas realizadas con Peewee son datos y objetos python fácilmente manipulables.

Los datos obtenidos de esta manera se han introducido en el Wordpress usando el API XML-RPC que nos ofrece el propio Wordpress, usando una librería Python [2], tanto los posts como la creación de recursos multimedia.

Previamente se limpiaba el contenido usando una librería de limpieza HTML liberada por la fundación Mozilla llamada Bleach [3]. Esta limpieza evita que código HTML extraño en los contenidos migrados puedan afectar negativamente al diseño y estilo realizado por FreePress.

Aunque parezca ridículo el utilizar para una migración un lenguaje diferente a los del gestor de contenidos de origen y destino, sin embargo un código ad-hoc (“custom” que llamamos o personalizado), aunque sea utilizando PHP Symfony como es el caso, es tan diferente de comprender y revertir del API de Wordpress como ambos lo son de Python.

La consistencia de las aplicaciones en Python acelera el proceso, junto con una documentación frecuentemente más clara que sus homólogas en PHP (por ejemplo, Doctrine ORM para PHP [4]). En general esto demuestra que uno de los grandes nichos de Python es precisamente la de “pegamento” (glue) para unir o trasvasar datos entre sistemas heterogéneos.


  1. http://docs.peewee-orm.com/en/latest/
  2. https://pypi.python.org/pypi/wordpress-api/1.2.1
  3. https://github.com/mozilla/bleach
  4. http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/


Historias relacionadas

Migración a Wordpress usando Python para Campaña Ropa Limpia

Migración a Wordpress usando Python para Campaña Ropa Limpia

Campaña Ropa Limpia es una red de asociaciones cuyo objetivo es “mejorar las condiciones de las personas trabajadoras de la industria global de la confección”. Para la difusión de su trabajo cuentan con el sitio ropalimpia.org. Este sitio estaba construido sobre una aplicación personalizada sobre el lenguaje PHP. Junto a nuestros socios de FreePress ...

Integración de MailChimp y Prestashop para Agua de Coco

Integración de MailChimp y Prestashop para Agua de Coco

Agua de Coco es una fundación dedicada a la cooperación internacional. Su tienda online solidaria estaba funcionando sobre Prestashop 1.7 con múltiples errores al haber sido actualizado desde la versión 1.5 directamente. Después de revisar y solucionar los errores de la actualización, ajustamos los estilos del tema por defecto e instalamos una serie ...

Si no tiene API, lo hacemos: una solución para usuarios de CDMON

Si no tiene API, lo hacemos: una solución para usuarios de CDMON

“Tener” un dominio consiste en realidad en 2 gestiones independientes:

  • Registrar el dominio, que puede ser la entidad registradora X,
  • Gestionar los registros y parámetros del dominio, servicio que puedes realizar en la misma entidad X o con la entidad Y.

Hace unos 10 años que somos clientes de CDMON registrando y gestionando nuestros dominios ...

Solicítanos información

 Tel: (+34) 983 070 900

    Envía un correo