-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconstance_config.py
More file actions
77 lines (68 loc) · 2.8 KB
/
constance_config.py
File metadata and controls
77 lines (68 loc) · 2.8 KB
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
"""
Context processor udostępniający ustawienia z django-constance dla szablonów.
Zapewnia fallback do Django settings (zmiennych środowiskowych) w przypadku,
gdy constance nie jest jeszcze skonfigurowane (np. podczas migracji).
"""
_CONSTANCE_KEYS = (
"UZYWAJ_PUNKTACJI_WEWNETRZNEJ",
"POKAZUJ_INDEX_COPERNICUS",
"POKAZUJ_PUNKTACJA_SNIP",
"POKAZUJ_OSWIADCZENIE_KEN",
"SKROT_WYDZIALU_W_NAZWIE_JEDNOSTKI",
"UCZELNIA_UZYWA_WYDZIALOW",
"GOOGLE_ANALYTICS_PROPERTY_ID",
"GOOGLE_VERIFICATION_CODE",
"WYDRUK_MARGINES_GORA",
"WYDRUK_MARGINES_DOL",
"WYDRUK_MARGINES_LEWO",
"WYDRUK_MARGINES_PRAWO",
)
def constance_config(request):
"""
Udostępnia wybrane ustawienia z django-constance dla szablonów.
Używa ``constance.utils.get_values_for_keys`` zamiast
``getattr(config, key)``. Powód: od constance 4.x
``Config.__getattr__`` wykrywa aktywną pętlę asyncio (a Django
test client w nowszych wersjach startuje ją wewnętrznie) i
zwraca ``AsyncValueProxy`` — stringifikacja takiego proxy w
szablonie (``{{ VAR|default:"..." }}``) emituje
``RuntimeWarning: Synchronous access to Constance setting '...'
inside an async loop``. ``get_values_for_keys`` idzie prosto do
backendu, bez tej detekcji, więc działa identycznie w sync i
async kontekście.
Fallback: jeżeli constance nie jest skonfigurowane, używa wartości
z Django settings (ze zmiennych środowiskowych).
Returns:
dict: Słownik z ustawieniami dostępnymi w szablonach
"""
try:
from constance.utils import get_values_for_keys
return get_values_for_keys(_CONSTANCE_KEYS)
except (ImportError, AttributeError):
from django.conf import settings
return {
"UZYWAJ_PUNKTACJI_WEWNETRZNEJ": getattr(
settings, "UZYWAJ_PUNKTACJI_WEWNETRZNEJ", True
),
"POKAZUJ_INDEX_COPERNICUS": True,
"POKAZUJ_PUNKTACJA_SNIP": True,
"POKAZUJ_OSWIADCZENIE_KEN": getattr(
settings, "BPP_POKAZUJ_OSWIADCZENIE_KEN", False
),
"SKROT_WYDZIALU_W_NAZWIE_JEDNOSTKI": getattr(
settings, "DJANGO_BPP_SKROT_WYDZIALU_W_NAZWIE_JEDNOSTKI", True
),
"UCZELNIA_UZYWA_WYDZIALOW": getattr(
settings, "DJANGO_BPP_UCZELNIA_UZYWA_WYDZIALOW", True
),
"GOOGLE_ANALYTICS_PROPERTY_ID": getattr(
settings, "GOOGLE_ANALYTICS_PROPERTY_ID", None
),
"GOOGLE_VERIFICATION_CODE": getattr(
settings, "WEBMASTER_VERIFICATION", {}
).get("google", ""),
"WYDRUK_MARGINES_GORA": "2cm",
"WYDRUK_MARGINES_DOL": "2cm",
"WYDRUK_MARGINES_LEWO": "2cm",
"WYDRUK_MARGINES_PRAWO": "2cm",
}