"""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
