in privaterelay/utils.py [0:0]
def flag_is_active_in_task(flag_name: str, user: AbstractBaseUser | None) -> bool:
"""
Test if a flag is active in a task (not in a web request).
This mirrors AbstractBaseFlag.is_active, replicating these checks:
* Logs missing flags, if configured
* Creates missing flags, if configured
* Returns default for missing flags
* Checks flag.everyone
* Checks flag.users and flag.groups, if a user is passed
* Returns random results for flag.percent
It does not include:
* Overriding a flag with a query parameter
* Persisting a flag in a cookie (includes percent flags)
* Language-specific overrides (could be added later)
* Read-only mode for percent flags
When using this function, use the @override_flag decorator in tests, rather
than manually creating flags in the database.
"""
flag = get_waffle_flag_model().get(flag_name)
if not flag.pk:
log_level = get_waffle_setting("LOG_MISSING_FLAGS")
if log_level:
waffle_logger.log(log_level, "Flag %s not found", flag_name)
if get_waffle_setting("CREATE_MISSING_FLAGS"):
flag, _created = get_waffle_flag_model().objects.get_or_create(
name=flag_name,
defaults={"everyone": get_waffle_setting("FLAG_DEFAULT")},
)
cache = get_waffle_cache()
cache.set(flag._cache_key(flag.name), flag)
return bool(get_waffle_setting("FLAG_DEFAULT"))
# Removed - check for override as request query parameter
if flag.everyone:
return True
elif flag.everyone is False:
return False
# Removed - check for testing override in request query or cookie
# Removed - check for language-specific override
if user is not None:
active_for_user = flag.is_active_for_user(user)
if active_for_user is not None:
return bool(active_for_user)
if flag.percent and flag.percent > 0:
# Removed - check for waffles attribute of request
# Removed - check for cookie setting for flag
# Removed - check for read-only mode
if Decimal(str(random.uniform(0, 100))) <= flag.percent: # noqa: S311
# Removed - setting the flag for future checks
return True
return False