40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
import qommon.template as template
|
|
from quixote import get_request, get_publisher
|
|
from qommon import get_cfg
|
|
from admin_settings import STYLESHEET_URL, REFERER_PREFIX_URL, THEME, \
|
|
CUSTOM_DOMAIN
|
|
|
|
__old_decorate = template.decorate
|
|
|
|
def decorate(body, response):
|
|
request = get_request()
|
|
referer = request.environ.get('HTTP_REFERER')
|
|
domain = request.environ.get('SERVER_NAME')
|
|
|
|
more_css = []
|
|
body_class = []
|
|
theme = None
|
|
stylesheet_url = None
|
|
requesting_service = None
|
|
|
|
for key, value in get_cfg('providers', {}).iteritems():
|
|
custom_domain = value.get(CUSTOM_DOMAIN)
|
|
referer_prefix_url = value.get(REFERER_PREFIX_URL)
|
|
if custom_domain == domain or \
|
|
request.form.get('service') == key or \
|
|
(referer_prefix_url and referer and referer.startswith(referer_prefix_url)):
|
|
theme = value.get(THEME)
|
|
requesting_service = key
|
|
stylesheet_url = value.get(STYLESHEET_URL)
|
|
break
|
|
if requesting_service:
|
|
body_class.append(requesting_service)
|
|
if stylesheet_url:
|
|
more_css.append(stylesheet_url)
|
|
if theme:
|
|
get_publisher().cfg['branding']['theme'] = theme
|
|
response.filter.update({'more_css': more_css, 'body_class': body_class})
|
|
return __old_decorate(body, response)
|
|
|
|
template.decorate = decorate
|