I'll also provide insights into how this site was made, as well as code examples and thoughts on how those could be further developed.
Feel free to leave questions or comments at the bottom of each post - I just ask people to create an account to filter out the spammers. You won't receive any unsolicited communication or find your email sold to a marketing list.
Create Thumbnails with Preserved Edges Using Python Image Library
If you ever had the annoyance of uploading an image to a website, only to have it cropped to fit a certain aspect ratio, then this article is for you. I walk through creating thumbnails where the entire image is displayed without cropping or stretching while meeting the thumbnail dimension requirements
I'll also go through how to add this as an image filter in Wagtail so you can create thumbnail renders for your metadata.
Wagtail: Extending the Draftail Editor Part 3 - Dynamic Text
I'll go through an example of adding inline Font Awesome icons as a proof of concept which could be easily adapted to show any dynamic information such as stock indices, exchange rates, availability of a resource etc..
Wagtail: Extending the Draftail Editor Part 2 - Block Styles
We walk through customising the blockquote style, add text alignment buttons to the editor as an example and then consider a different way to accomplish this outside of the editor with a StructBlock and why that might be preferable.
Wagtail: Extending the Draftail Editor Part 1 - Inline Styles
I'll include adding tag-based styling (such as <u>), how to add styled <span> tags and also demonstrate using both unicode glyphs and svg paths for your toolbar icon.
Configuring Rich Text Blocks for Your Wagtail Site
Add Heading Blocks with Bookmarks in Wagtail
In this example, I create a simple StreamBlock to add to your Streamfields that includes heading size, alignment and an optional bookmark. I use ChoiceBlocks for the field values, a custom template with some basic logic and also include some validation to ensure the entered bookmark is a valid slug.
This is a good example to work through if you're starting out with Wagtail and getting used to working with blocks and StreamFields.
Adding MapBox Blocks to Wagtail Stream Fields
Surprisingly, the safe way to do this requires far less coding and allows you to pass complex data structures without the faff and without exposing your site to unnecessary risk.
Upgrading to Wagtail 3.0
Here, I create an automated, on-the-fly table of contents without the need for hard-coded anchor links, regardless of the source of your content. It's easily adaptable to turn into a nav bar or similar menu. Similarly, this technique could be used to produce a summary with links on an API data feed page for rapid data analysis and drill-down capability.
At the end, I wrap it in a Wagtail stream block ready to drop into your templates.
Translating Static Template Text with Wagtail Localize
Static text lurks in the error pages, search results, e-mail templates and any Django pages that may be getting served on your site.
Here's an easy way to keep it all under the Wagtail Localize umbrella without the pain of making PO files and peppering your templates with blocktrans tags.
Dealing with UNIQUE Fields on a Multi-lingual Site
This poses a problem for models that have fields with UNIQUE constraints as attempting to save a copy of the default language instance will trigger an integrity error (ie duplicate key).
Fortunately, if you're using the TranslatableMixin, there's a way around this.