Add customization of the theme based upon the domain name

This commit is contained in:
Benjamin Dauvergne 2010-12-01 16:15:03 +01:00
parent d9824f9c9d
commit 00c67cf7a2
1 changed files with 23 additions and 13 deletions

View File

@ -1,28 +1,38 @@
import qommon.template as template
from quixote import get_request
from quixote import get_request, get_publisher
from qommon import get_cfg
from admin_settings import STYLESHEET_URL, REFERER_PREFIX_URL
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')
print 'REFERER', referer
more_css = []
body_class = []
if referer:
requesting_service = None
for key, value in get_cfg('providers', {}).iteritems():
referer_prefix_url = value.get(REFERER_PREFIX_URL, '')
if request.form.get('service') == key or \
referer_prefix_url and referer.startswith(referer_prefix_url):
requesting_service = key
break
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 requesting_service and value.get(STYLESHEET_URL):
more_css.append(value.get(STYLESHEET_URL))
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)