djblets.features.checkers¶
Classes for checking whether features are enabled for different criteria.
- class BaseFeatureChecker¶
Bases:
objectBase class for a feature checker.
Subclasses are responsible for overriding
is_feature_enabled()and returning a suitable result for any given feature.- min_enabled_level¶
The minimum feature level to enable by default.
If
settings.MIN_ENABLED_FEATURE_LEVELis set, that value will be used.If
settings.DEBUGisTrue, then anythingBETAor higher will be enabled by default.If
settings.DEBUGisFalse, then anythingSTABLEor higher will be enabled by default.Subclasses can override this to provide custom logic.
- class SettingsFeatureChecker¶
Bases:
BaseFeatureCheckerFeature checker that checks against a SiteConfiguration.
This feature checker will check if a feature is enabled by checking the the
settings.ENABLED_FEATURESdictionary. This key can be changed by subclassing and modifyingsettings_key.- is_feature_enabled(feature_id: str, **kwargs) bool¶
Return whether a feature is enabled for a given ID.
The feature will be enabled if its feature ID is set to
Truein asettings.ENABLED_FEATURESdictionary.
- __annotations__ = {'settings_key': 'str'}¶
- class SiteConfigFeatureChecker¶
Bases:
SettingsFeatureCheckerFeature checker that checks against a SiteConfiguration.
This feature checker will check two places to see if a feature is enabled:
The
enabled_featuresdictionary in aSiteConfigurationsettings.The
settings.ENABLED_FEATURESdictionary.
These keys can be changed by subclassing and modifying
siteconfig_keyandsettings_key.- is_feature_enabled(feature_id: str, **kwargs) bool¶
Return whether a feature is enabled for a given ID.
The feature will be enabled if its feature ID is set to
Truein either theenabled_featureskey in aSiteConfigurationor in asettings.ENABLED_FEATURESdictionary.
- __annotations__ = {'settings_key': 'str', 'siteconfig_key': 'str'}¶
- set_feature_checker(feature_checker: Optional[BaseFeatureChecker]) None¶
Set the feature checker to use for all features.
This can be called to manually configure a feature checker, or to unset the feature checker in order to recompute it.
- Parameters:
feature_checker (
BaseFeatureChecker) – The new feature checker to set, orNoneto unset.
- get_feature_checker() BaseFeatureChecker¶
Return the configured feature checker instance.
The class to use is configured through the
settings.FEATURE_CHECKERsetting, which must be a full module and class path. If not specified,SettingsFeatureCheckerwill be used.The same feature checker instance will be returned each time this is called.
- Returns:
A feature checker instance.
- Return type:
- Raises:
django.core.exceptions.ImproperlyConfigured – There was an error either in the
settings.FEATURE_CHECKERvalue or in instantiating the feature checker.