El Blog de Trespams

Blog personal sobre tecnologia, gestió de projectes i coses que se me passen pel cap

Primera fase de la migració del blog

Si estau llegit això ja ho estau fent a la nova versió del blog. He passat d'una versió personalitzada de blogmaker cap a una versió basada en zinnia.

Zinnia és una aplicació integrable amb Django que permet escriure apunts com aquest i permet un gran grau de personalització fent servir el llenguatge de plantilles de Django. Això fa que integrar un nou tema sigui prou senzill. Potser no tant com un instal·lador de temes de Wordpress, però sí molt més extensible i personalitzable, i per mi generant un codi molt més clar.

Com que les estructures de dades i funcionalitats de blogmaker i les de zinnia no són les mateixes, passar d'un sistema a un altre va requerir un petit esforç de migració, la idea era conservar tant els apuntos com els comentaris i a més mantenir les estructures de les urls antigues redireccionant cap a les noves ulrs.

He preferit separar el blog completament del domini ja que també vull aprofitar la integració per fer alguns experiments a la part principal de trespams, de manera que un dia d'aquests pugui tener desde enllaços, experiments i més herbes.

Per la migració he fet servir una utilitat anomenada Peewee, un petit ORM a l'estil del de Django, però que m'ha permès connectar de manera independent a les dues bases de dades que necessitava i posar-hi tot el codi de migració sense tenir que anar contra l'ORM de Django i desactivar els signals que té Zinnia cada cop que escrius un apunt. Peewee té una utilitat que ens permet fer engenyieria inversa de la base de dades i generar el codi dels models. Com que es "poc restrictiu", pots fer algunes marranades que van molt bé en una migració i que Django directament no et permetria fer de bones a primeres. Per exemple, el model que genera d'un apunt de blogmaker és

class Blog_Entry(BaseModel):
active = BooleanField()
body = TextField(null=True)
body_markdown = TextField()
copyright = CharField(null=True)
externalid = IntegerField(null=True, db_column='externalId')
headline = CharField()
image = CharField(null=True)
pub_date = DateTimeField()
slug = CharField()
summary = CharField(null=True)
user = ForeignKeyField(db_column='user_id', rel_model=Auth_User)

class Meta:
db_table = 'blog_entry'

Com podem veure molt més senzill que el que seria un model típic de Django i això és el que he anat a cercar a la migració.

Una vegada traspassada la informació ja sols ha estat cosa de demanar un poc d'ajuda als companys. En Bernat ha creat el nou entorn a un dels servidors i ha configurat el nostre actualitzador automatitzat. Això em permetrà fer els experiments que vull fer amb el blog i el domini molt més ràpidament.

Pels curiosos dir-vos com estan les butzes d'això

  • Dajango 1.5.5
  • Pillow 2.2.1
  • South
  • django-compressor per tractar amb css i js
  • django-blog-zinnia==0.13

i dependències associades a cada paquet formen el conjunt. Com a tema he fet servir el que duu Zinnia basat en bootstrap. Això fa que a més de tenir una aparença millorada ara el blog sigui ja responsiu, la qual cosa esper facilitarà la lectura als dispositius mòbils.

Falta molt camí a fer, però el més important per mi és mantenir la comunicació oberta amb tots vosaltres que em llegiu i a la mateixa vegada poder experimentar i anar fent coses sense prendre'm-ho massa seriosament. Vull millorar disseny i estructura, millorar un poc la presentació, mirar de que escriure codi dins un apunt sigui senzill. Per això he començat ja a integrar SyntaxHighlighter i vull modificar l'editor que ve per defecte a Zinnia per a que no sigui tan visual i fer que sigui html pur. Manies que tinc.

Esper que us agradi el canvi. Aquells que em teniu als RSS mirau que no hagi trencat res i que us funcionin, que també he canviat urls.

blog comments powered by Disqus