Release Notes¶
5.0.14¶
What's new?¶
- Updated packaging to pyproject.toml and linting/formatting to ruff
- Added Django 5.0 support (thanks @adamchainz!)
- Added Django 5.2 support (thanks @sergei-maertens!)
Bug fixes¶
- Fixed parameter condition example in docs (thanks @andy-isoc!)
5.0.13¶
What's new?¶
- Modernize code for Python 3.6+ (thanks @adamchainz!)
- Run linters with Python 3.11 (thanks @adamchainz!)
- Format with Black 23 (thanks @adamchainz!)
- Added Django 4.2 support (thanks @adamchainz!).
Removals¶
- Removed Python 3.6 support (thanks @michael-k!).
Bug fixes¶
- Removed errant print statement (thanks @Natim!).
5.0.12¶
What's new?¶
- Added Django 4.1 support (thanks @adamchainz!).
5.0.11¶
What's new?¶
- Added changelog and documentation links to the package on PyPI (thanks @adamchainz!)
5.0.10¶
What's new?¶
- Fixed an issue with resolving include()s inflagged_path()URL patterns (#100)
5.0.9¶
What's new?¶
- Fixed a DeprecationWarningon Jinja 3+.
- Fixed an AttributeErroronAnonymousUserin the user condition (thanks @edomora97!)
5.0.8¶
What's new?¶
- Prevent RemovedInDjango41Warningaboutdefault_app_configfor Django 3.2+ (thanks @adamchainz!)
5.0.7¶
What's new?¶
- Update Django 4 pin to allow versions under 4.1
5.0.6¶
What's new?¶
- Added Django 4.0 support (thanks @gregtap!)
5.0.5¶
What's new?¶
- Added Django 3.2 support (thanks @dduong42!)
5.0.4¶
What's new?¶
- Fixed the "path matches" condition validator to allow any valid regular expression.
5.0.3¶
What's new?¶
- Added enable_flaganddisable_flagfunctions.
- Added enable_flaganddisable_flagmanagement commands.
5.0.2¶
What's new?¶
- Added defaults for FlaggedViewMixin'skwargs(by @jackton1)
5.0.1¶
What's new?¶
- Added Django 3.1 support
5.0.0¶
What's new?¶
- Added Django 3.0 support
- Added validator support to ensure that the values that flag conditions test against are valid.
Deprecations¶
- Deprecated the optional flags.middleware.FlagConditionsMiddlewarein favor of always lazily caching flags on the request object.
Removals¶
- Django Flags 4.1 deprecated support for using a single dictionary to hold key/values of conditions for a settings-based feature flag, and this has been removed. Use a list of dictionaries or tuples instead.
- Removed support for Django 1.11.
4.2.4¶
What's new?¶
- FLAGS_STATE_LOGGINGis now- Falseby default to cut down on potentially unwanted noise (@darakian).
4.2.3¶
What's new?¶
- Removed the word "optional" to describe non-required conditions in the Flag Conditions Debug Toolbar panel.
4.2.2¶
What's new?¶
- Fixed a bug where if a flag was defined in multiple sources the conditions defined in subsequent sources would not be evaluated. This means (with the default sources) if a flag is defined in Django settings and has conditions defined the database, only the settings conditions would be evaluated.
4.2.1¶
What's new?¶
- Made the language around optional boolean conditions with required conditions clearer in the Flag Conditions Debug Toolbar panel
4.2.0¶
What's new?¶
- Added optional Django Debug Toolbar panels to list all flag conditions and to report flag checks for a request.
- Added flag state check logging and FLAGS_STATE_LOGGINGsetting to enable it.
- Modified flag state checking to raise an AppRegistryNotReadyif an attempt to check flag state is made before the app registry is ready.
- Modified flag view decorators to warn if a fallback view do not take the same arguments as the flag view.
4.1.2¶
What's new?¶
- Added support for Django 2.2 and Python 3.7 (Chris Adams).
4.1.1¶
What's new?¶
- booleanand- anonymousconditions now accept multiple possible string representations of truth as their values.
- parameterconditions now accept possible parameter values.
4.1¶
What's new?¶
- Added the option to specifiy required conditions that must always be met.
- Deprecated support for using a single dictionary to hold key/values of conditions for a settings-based feature flag. Support will be removed in Django-Flags 5.0. Use a list of dictionaries or tuples instead.
- Added a before datecondition that is met whenever the current date is before the expected date.
4.0.3¶
What's new?¶
- The system check introduced in 4.0.2 will no longer raise a ProgrammingErroror anOperationalErrorwhen run pre-migration.
4.0.2¶
What's new?¶
- Logging of non-existent conditions is now a Django system check.
4.0.1¶
What's new?¶
- condition.check()returns a Falsy- Noneinstead of raising a- TypeErrorwhen a configured condition has no function registered.
4.0¶
What's new?¶
- The template functions flag_enabledandflag_disabledin both Django and Jinja2 templates now support taking keyword arguments that could be used by custom conditions.
- Jinja2 template functions are now available via a Jinja2 extension that can be included in settings.py.
- The optional flags.middleware.FlagConditionsMiddlewarehas been added to ensure that all feature flag checks throughout single request cycle use the same flag conditions.
- Support for specifying the source of feature flags in settings.pyhas been added to allow further customization and the potential to limit flags to settings or database-only.
- The "user" condition now supports custom user models. (@callorico)
Upgrading¶
Django-Flags 4.0 introduces backwards-incompatible changes for users of Jinja2 templates.
Previously Django-Flags provided flags.template_functions.flag_enabled and flags.template_functions.flag_disabled functions that had to be registered in the Jinja2 environment downstream. The Django-Flags documentation recommended doing so in jinja2.Environment.globals.update(). flags.template_functions has been removed in Django-Flags 4.0.
Jinja2 function registration is now handled by a flags.jinja2tags.flags Jinja2 extension. To use Django-Flags 4.0 with Jinja2 templates, the TEMPLATES setting in settings.py should to be modified to include the extension:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',
        ...
        'OPTIONS': {
            'extensions': [
                ...
                'flags.jinja2tags.flags',  # add this line to your existing settings
                ...
            ],
        }
    },
]3.0.2¶
What's new?¶
- Requests are now optional the flag_enabledandflag_disabledtemplate tags.
- Flag state form conditions are now bound when the form is created to ensure all custom conditions are available on the form. (@callorico)
3.0.1¶
What's new?¶
- Django 2.1 is now supported.
3.0¶
Django-Flags is a fork of the Django-only components of the Wagtail-Flags feature flag library. This is the initial release.