Hi, I'm Matthias

I am a founding partner of Feinheit AG and Die Bruchpiloten AG. Find me on GitHub, Mastodon, LinkedIn or by email.

2024-07-31

Weeknotes (2024 week 31)

I have missed almost two months of weeknotes. I’ve got some catching up to do. I have tried writing a larger piece on my thoughts about CMS, but with everything going on in my personal and work life I haven’t made much progress.

This weeknotes entry is me trying to get back into the groove of writing (and publishing!) regularly.

django-prose-editor

I have previously written about the ProseMirror-based editor for Django websites here. I have continued working on the project in the meantime. Apart from bugfixes the big new feature is the support for showing typographic characters. For now the editor supports showing non-breaking spaces and soft hyphens. The project seems to get a little more interest after the deprecation of django-ckeditor has become more well known and the project has even received a contribution by someone else. It’s always a lovely moment when this happens.

django-json-schema-editor

Still alpha. Updated the vendorized JSON editor and fixed the integration into Django to not throw errors with the newer version.

Foreign key fields now support describing the referenced value similar to the raw ID fields functionality. Added optional support for using "format": "prose" to use the django-prose-editor to edit individual fields. JSON plugins for the content editor are now downcasted into their proxy models automatically. This is especially useful with the feincms3 changes mentioned below. (You do not have to use either django-content-editor or feincms3 to use this package!)

The following screenshot shows the prose editor integration; the mentioned foreign key field description isn’t visible yet here.

A screenshot of the JSON editor including the prose editor

Traduire

Traduire (french for «translate») is a web-based platform for editing gettext translations.

It is intended as a replacement for Transifex, Weblate and comparable products. It is geared towards small teams or agencies which want to allow their customers and their less technical team members to update translations.

Traduire profits from the great work done on django-rosetta. I would still be using Rosetta if it would work when used with a container orchestator such as Kubernetes. Since all application storage is ephemeral that doesn’t work, translation editing and deployment have to be separated.

A screenshot of the Traduire interface

It is built using Django and relies on polib to do the heavy lifting.

This is a project which might also be interesting for others. I would especially appreciate it if someone could contribute an easier way to get it up and running, e.g. using a Docker Compose configuration or something. I am using Kubernetes and GitOps to host it, but that’s not straightforward at all. Really, all that’s needed to run it is a Django host with any database which is supported by Django. I prefer using PostgreSQL because I have it, but sqlite etc. work just as well.

Releases since the second week of June

  • django-translated-fields 0.13: Nothing much except for CI and pre-commit updates. The implementation continues to be rock-solid and basically unchanged.
  • django-content-editor 7.0.6: Tweaks and fixes to the new interface. Added better scrolling behavior when dragging content around. The editor now also supports colorized icons which helps quickly understanding the structure of some content when there are many plugins.
  • blacknoise 1.0.2: Fixed a few bugs in the blacknoise.compress utility and started running the testsuite on GitHub actions. whitenoise has been friendly-forked as ServeStatic and I’m definitely having a close look at this project as well, but blacknoise is simple and works well, so I’m not convinced that switching back to the much larger project (in terms of amounts of code) is an improvement now.
  • django-authlib: Minor bugfixes.
  • feincms3: Allowed registering plugin models with the renderer which aren’t supposed to be fetched from the database. This is especially useful when used together with JSON plugins, where the individual JSON plugins are created as proxies for the underlying Django model and fetched all at once. Disabled the version check on our CKEditor plugin. Still, really stop using CKEditor 4 if you want to use maintained software.
  • FeinCMS 24.7.1: Small bugfixes, and made the Read the Docs build work correctly.
  • django-debug-toolbar 4.4.x: The toolbar continues to be a nice project to work on. Fixed a few edge cases in the new alerts panel.
  • django-admin-ordering 0.18.2: The value of ordering_field now has additional sanity checks.
  • django-cabinet 0.16: cabinet now supports exporting a folder as a ZIP file while preserving the structure you see in the CMS instead of the structure on the file system. The inline upload form has been dropped from the CabinetForeignKey widget because the folder dropdown slowed down the page a lot when used on a site with many folders. Using the raw ID fields popup isn’t that bad.
  • django-prose-editor 0.6.2: See above.
  • django-json-schema-editor 0.0.28: See above.