angle-up arrow-clockwise arrow-counterclockwise arrow-down-up arrow-left at calendar card-list chat check envelope folder house info-circle pencil people person person-plus phone plus question-circle search tag trash x

Reorganizar, reestructurar, pasar a elementos de contenido, añadir temas, añadir más idiomas

14 agosto 2019 antes de Peter
En Otros

Después de la maratón de edición soy Ringo Starr: ¡Tengo ampollas en los dedos!

post main image
unsplash.com/@creativegangsters

Este post trata sobre la edición de código, un montón de edición, grandes cantidades de edición! Cuando se implementa mucha funcionalidad, se notan cosas que necesitan atención, cosas que necesitan ser investigadas, cómo lo hacen los demás, cuál es el plural de ciertas palabras, etc. Mantengo una lista de cosas por hacer y cada vez que noté algo que necesitaba atención, lo agregué a esta lista. La lista se hizo demasiado grande así que decidí dejar de añadir código por un momento y primero resolver muchos de estos problemas. Sabía que tenía que editar mucho.

Mover los planos a planos/admin cuando sólo son utilizados por un administrador

Tengo una estructura donde todos los planos están al mismo nivel, en un directorio (sorprendentemente) llamado'planos'. Decidí mover todos los planos de administrador a un subdirectorio 'planos/admin'. También tuve que hacer esto para las plantillas, mover las plantillas de administrador a'plantillas/admin'. Mucha edición.

Pasar de modelos de blogs y páginas a elementos de contenido

Este fue un gran problema. Este sitio web es un blog pero también tiene páginas. Cuando empecé definí los modelos BlogPost, BlogPostAuthor, BlogPostCategory, BlogPostTag. Entonces quise tener mis páginas también en la base de datos, así que definí Página, PageAuthor, PageCategory, PageTag. Pero estos son casi idénticos a los de BlogPost. ¡Así que lárgate con esto! He movido ambos a ContentItem, ContentItemAuthor, ContentItemCategory, ContentItemTag. El ContentItem tiene un atributo content_item_type que indica si se trata de una entrada de blog, una página o cualquier otra cosa. Yo no inventé esto, muchos CMS y software para blogs gestionan el contenido de esta manera. ¿Por qué no pensé en esto antes? Lo hice, pero sólo trataba de hacer que muchas otras cosas funcionaran. Otra vez mucha edición.

Utilizo Alambique para migraciones de bases de datos SQLAlchemy. Es un programa maravilloso, pero a veces puede meterte en problemas muy serios. Este fue también el caso aquí, donde tuve que eliminar las tablas vinculadas a otras tablas. Alambique devuelto con mensajes de que no podía quitar llaves ajenas. El problema es que en este caso Alambique ya hizo muchas cosas, lo que significa que después de quitar manualmente una llave extraña en Mariadb, Alambique empezó a quejarse de que quería tirar mesas que ya se habían caído. Resolví esto editando el archivo de versión y volviendo a ejecutar'upgrade head', y editando y volviendo a ejecutar hasta que finalmente no se encontraron más errores. Esto es de hecho también una advertencia para todos aquellos que quieran usar el Alambique. Cuando te encuentras con problemas, a menudo sólo puedes resolverlos cuando tienes un buen conocimiento de SQL. De todos modos, mucha edición.

Añadir soporte para temas

Este sitio web es el Bootstrap por defecto. Es bueno probar algunos temas y para hacer esto debe eliminar tanto como sea posible de otras hojas de estilo para que un nuevo tema pueda tomar el relevo. Tenía un style.css que dividí en default.css y custom.css. El primero, default.css, contiene los cambios muy específicos del tema predeterminado de Bootstrap, que son sólo unas pocas líneas. Este archivo se incluye sólo cuando se incluye el bootstrap.min.css predeterminado. El segundo, custom.css, contiene estilos sin color para WTForms, etc. y siempre debe ser incluido. Hay muchos temas para Bootstrap, yo elijo añadir temas de Bootswatch, vienen con una licencia MIT. Después de añadirlos los hice seleccionables desde la barra de navegación. INTÉNTALO TÚ MISMO. Ahora puedo comprobar fácilmente si se me olvidó quitar las cosas de peinado. Por cierto, todavía no me gustan los tamaños de encabezado predeterminados de Bootstrap. Además de esto, sólo puedo decir que fue una gran cantidad de edición.

Añadir más idiomas

Un día debería añadir más idiomas y decidí que esto era hoy. Todavía tenía que extender el script que se comunica con la API de DeepL. De todos modos, agregué algunos idiomas nuevos, traducidos automáticamente usando la API de DeepL. Puede seleccionarlos en la parte superior derecha. Esta vez no tanto como para editar, pero se sintió como un montón de edición.

Y luego estaba .... un bicho

Hay todos los errores de tiempo en mi código pero después de tanta edición llega un momento en el que quieres hacer otra cosa, los programadores lo saben. Parecía que al cambiar de idioma, el selector de idioma obtenía un valor de la selección anterior. Gracioso .... NO. He implementado la receta multilenguaje desde el sitio web de Flask y el problema estaba en el código que hace estallar el idioma desde la primera parte de la url. No tuve en cuenta que un cambio de idioma también puede ser emitido por el visitante, lo que se hace haciendo una solicitud utilizando la url actual con el idioma solicitado adjunto. Ok, arreglado. Suficiente edición por hoy.

Y luego estaba.... otra bonificación

Antes de hacer todos los cambios a la producción pensé que escribiría un post, este post, sobre mi maratón de edición. Todo bien hasta que intenté asignar una imagen a este post. ¿Qué? pero entonces recordé haberme saltado esto mientras editaba el archivo de vista, no ahora que pensaba que lo haría en algún momento más tarde. Cuando construyes algo con Flask, conoces la pantalla: Werkzeug debugger - Traceback (última llamada). Estoy contento, más editando en el último momento. No hay problema, lo haré. Lo editaré.

Enlaces / créditos

Bootswatch: Free themes for Bootstrap
https://bootswatch.com

Deje un comentario

Comente de forma anónima o inicie sesión para comentar.

Comentarios

Deje una respuesta.

Responda de forma anónima o inicie sesión para responder.