Djblets 1.0.3 Release Notes¶
Release date: February 5, 2018
Packaging¶
Added missing SVG icons, source maps, and development-related files to the package.
djblets.avatars¶
Rewrote the avatar backend code to avoid common state synchronization problems.
Changes made to the avatar configuration weren’t being synchronized properly to other processes/servers, due to the configuration state being stored locally and never being refreshed from the database. Stale state would also sometimes replace the new state, undoing changes that were made. This has all changed, making the Site Configuration the ultimate source of truth on the configuration, and fixing a lot of the state synchronization problems being hit.
If you continue to hit problems with configuring custom avatar backends, please let us know.
Redesigned the File Upload avatar configuration form.
The new form makes it easy to upload avatars through drag-and-drop or by navigating through a file dialog. It also correctly shows the user’s current avatar, which the old form did not, and in a more standard size.
Fixed a crash when computing Gravatars for a user without an e-mail address.
The default Gravatar image will now be shown for these users instead.
Replaced the
AvatarServiceRegistry.enabled_services
property with anAvatarServiceRegistry.set_enabled_services
method.The new method allows the caller to specify whether the settings should be immediately saved after setting the new list of enabled services. By default, they are saved.
The old property will continue to work for 1.0.x.
Default values for avatar-related site configuration keys are now registered globally for site configurations.
djblets.db¶
Hopefully fixed a rare crash in production with
RelationCounterField
.
djblets.extensions¶
Fixed the LessCSS include path when packaging extensions.
This should allow extensions’ LessCSS files to once again reference other LessCSS files provided by the application.
djblets.siteconfig¶
Added globally-registered defaults for site configuration settings.
Site configurations have historically allowed default values for settings to be registered for a particular site configuration (keyed off by the site configuration’s ID in the database), which required having that configuration available up-front.
They can now be registered globally, affecting any site configuration (of which there’s usually only one), without needing to perform any lookups. This is managed through the following new class methods:
Added methods for removing defaults on specific site configurations.
The defaults can now be individually removed with
SiteConfiguration.remove_default()
and completely cleared withSiteConfiguration.clear_defaults()
.Added a
siteconfig_reloaded
signal for determining when the site configuration has reloaded.This can be used to refresh local state based on changes in the site configuration.
Added
SiteConfiguration.objects.get_for_site_id()
to return a site configuration for a specific Django site ID.Changed
SiteConfiguration.objects.check_expired()
to immediately re-fetch the configuration if the new signal contains listeners.
Contributors¶
Christian Hammond
David Trowbridge