-
Notifications
You must be signed in to change notification settings - Fork 28
/
checks.py
43 lines (38 loc) · 1.45 KB
/
checks.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from django.core.checks import Warning, register
from django.core.exceptions import ValidationError
@register()
def flag_conditions_check(app_configs, **kwargs):
from flags.sources import get_flags
errors = []
flags = get_flags(ignore_errors=True)
for name, flag in flags.items():
for condition in flag.conditions:
if condition.fn is None:
errors.append(
Warning(
(
f"Flag {name} has non-existent condition "
f"'{condition.condition}'."
),
hint=(
f"Register '{condition.condition}' as a "
"Django-Flags condition."
),
id="flags.E001",
)
)
elif condition.fn.validate is not None:
try:
condition.fn.validate(condition.value)
except ValidationError as e:
errors.append(
Warning(
(
f"Flag {name}'s '{condition.condition}' "
"condition has an invalid value."
),
hint=e.message,
id="flags.E002",
)
)
return errors