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
|
"""Allows 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
import logging
__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 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
|