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
|
"""Allows askbot.deps.livesettings to be "locked down" and no longer use the settings page or the database
for settings retrieval.
"""
from django.conf import settings as djangosettings
from django.contrib.sites.models import Site
__all__ = ['get_overrides']
def _safe_get_siteid(site):
if not site:
try:
site = Site.objects.get_current()
siteid = site.id
except:
siteid = djangosettings.SITE_ID
else:
siteid = site.id
return siteid
def get_overrides(siteid=-1):
"""Check to see if askbot.deps.livesettings is allowed to use the database. If not, then
it will only use the values in the dictionary, LIVESETTINGS_OPTIONS[SITEID]['SETTINGS'],
this allows 'lockdown' of a live site.
The LIVESETTINGS dict must be formatted as follows::
LIVESETTINGS_OPTIONS = {
1 : {
'DB' : [True/False],
SETTINGS = {
'GROUPKEY' : {'KEY', val, 'KEY2', val},
'GROUPKEY2' : {'KEY', val, 'KEY2', val},
}
}
}
In the settings dict above, the "val" entries must exactly match the format
stored in the database for a setting. Do not use a literal True or an integer,
it needs to be the string representation of them.
Returns a tuple (DB_ALLOWED, SETTINGS)
"""
overrides = (True, {})
if hasattr(djangosettings, 'LIVESETTINGS_OPTIONS'):
if siteid == -1:
siteid = _safe_get_siteid(None)
opts = djangosettings.LIVESETTINGS_OPTIONS
if opts.has_key(siteid):
opts = opts[siteid]
overrides = (opts.get('DB', True), opts['SETTINGS'])
return overrides
|