Djblets 2.0: Now supporting Python 3 and Django 1.11

We quietly released Djblets 2.0 a few days ago, now supporting Python 3 and Django 1.11. This is a major milestone for Djblets, as we’re finally leaving behind the formerly-necessary legacy version of Django 1.6, with our sights set on future major releases keeping up with the latest Django has to offer.

What’s Djblets?

Djblets is an add-on package for Django that provides a great deal of additions useful for building large, extensible web applications, like Review Board. This includes:

  • Dynamic site configuration and settings
  • Extension support for applications
  • Base for designing REST APIs
  • Consent-based, privacy-first foundation for features
  • Feature flags with extensible backends
  • Avatar rendering and extensible backends
  • Datagrid UIs
  • Database fields for Base64 content, atomic counters, and more
  • Mail sending additions supporting DMARC and smart From/Sender header spoofing
  • Rate limiting
  • Unit testing improvements

And plenty more.

What’s New?

Quite a lot!

  • Support for Python 2.7 and 3.6 through 3.9
  • Support for Django 1.11 (the last version to support Python 2.7)
  • New configuration forms CSS/JavaScript component library
  • New UIs for managing extensions and integrations
  • Extensions can now provide schema changes as evolutions or Django’s migrations
  • A new form widget for selecting related objects (for populating a ForeignKey or ManyToManyField)
  • Utility property for defining aliases (with optional conversion and/or deprecation warnings) to other properties
  • Utility property for defining properties requiring certain data types, with validation
  • Improved way of defining types for REST API fields
  • New template tags and filters for working with object data and custom template variables

Plus lots of new features and minor bug fixes.

The full list is in the release notes.

See the documentation or start using Djblets in your own project!

Read More

New Release: Django Evolution 2.1

Just a few months ago, we released Django Evolution 2.0, the first release to support database upgrades using both Django’s migrations and our own evolutions.

Django Evolution 2.1 builds on this by introducing enhanced dependency management for evolutions and migrations. Now, an evolution (or its app) can specify other evolutions or migrations that must be applied either before or after.

Django applications that make use of swappable models can benefit from this, as an evolution defining that model can now be applied before a migration that requires it.

See the guide on adding dependencies to learn more.

Other highlights include:

  • Compatibility with Python 3.9
  • Workarounds for MySQL/MariaDB bugs in Django 1.8 through 1.10
  • Enhanced transaction management, providing safer upgrades and recovery in the event that something goes wrong

See the release notes for the complete list of changes.

Read More

Announcing Django Evolution 2.0

After 3 years of development, and a pretty massive rewrite, we’ve released Django Evolution 2.0.

Django Evolution is an add-on for Django that helps developer make and maintain changes to the schema of the database.

This is similar to (and predates) Django’s own migrations support, but allows for faster database upgrades and supports older versions of Django. It’s better suited for the needs of self-installable web applications (such as Review Board) that may go years between upgrades and need to minimize the amount of downtime.

This new major release of Django Evolution introduces:

  • Support for Python 2.7 and 3.5 through 3.8
  • Support Django 1.6 through 3.1
  • Full management of both evolutions and Django’s migrations, using the evolve command
  • Superior compatibility with a range of versions of SQLite, MySQL, MariaDB, and Postgres
  • Full API for fine-tune control of evolutions (useful for apps with extensions, or installers that manage an app’s database)

There’s also all-new documentation, and a full breakdown of the changes in the release notes.

Read More