Merge branch 'master' of https://github.com/ungleich/dynamicweb
This commit is contained in:
commit
e17792badb
7 changed files with 68 additions and 22 deletions
|
@ -33,6 +33,9 @@
|
||||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
<!-- Google analytics -->
|
||||||
|
{% include "google_analytics.html" %}
|
||||||
|
<!-- End Google Analytics -->
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
|
@ -39,27 +39,13 @@
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||||
<!--[if lt IE 9]>
|
<!--[if lt IE 9]>
|
||||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
|
||||||
<script>
|
<!-- Google analytics -->
|
||||||
(function (i, s, o, g, r, a, m) {
|
{% include 'google_analytics.html' %}
|
||||||
i['GoogleAnalyticsObject'] = r;
|
<!-- End Google Analytics -->
|
||||||
i[r] = i[r] || function () {
|
|
||||||
(i[r].q = i[r].q || []).push(arguments)
|
|
||||||
}, i[r].l = 1 * new Date();
|
|
||||||
a = s.createElement(o),
|
|
||||||
m = s.getElementsByTagName(o)[0];
|
|
||||||
a.async = 1;
|
|
||||||
a.src = g;
|
|
||||||
m.parentNode.insertBefore(a, m)
|
|
||||||
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
|
|
||||||
|
|
||||||
ga('create', 'UA-62285904-2', 'auto');
|
|
||||||
ga('send', 'pageview');
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
|
@ -118,6 +118,7 @@ INSTALLED_APPS = (
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES = (
|
MIDDLEWARE_CLASSES = (
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
|
'utils.middleware.MultipleProxyMiddleware',
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
'django.middleware.csrf.CsrfViewMiddleware',
|
'django.middleware.csrf.CsrfViewMiddleware',
|
||||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
|
@ -138,6 +139,7 @@ TEMPLATES = [
|
||||||
{
|
{
|
||||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||||
'DIRS': [os.path.join(PROJECT_DIR, 'cms_templates/'),
|
'DIRS': [os.path.join(PROJECT_DIR, 'cms_templates/'),
|
||||||
|
os.path.join(PROJECT_DIR, 'templates'),
|
||||||
os.path.join(PROJECT_DIR, 'cms_templates/djangocms_blog/'),
|
os.path.join(PROJECT_DIR, 'cms_templates/djangocms_blog/'),
|
||||||
os.path.join(PROJECT_DIR, 'membership'),
|
os.path.join(PROJECT_DIR, 'membership'),
|
||||||
os.path.join(PROJECT_DIR, 'hosting/templates/'),
|
os.path.join(PROJECT_DIR, 'hosting/templates/'),
|
||||||
|
@ -161,6 +163,7 @@ TEMPLATES = [
|
||||||
"django.contrib.messages.context_processors.messages",
|
"django.contrib.messages.context_processors.messages",
|
||||||
'sekizai.context_processors.sekizai',
|
'sekizai.context_processors.sekizai',
|
||||||
'cms.context_processors.cms_settings',
|
'cms.context_processors.cms_settings',
|
||||||
|
'utils.context_processor.google_analytics',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -509,3 +512,12 @@ OPENNEBULA_ENDPOINT = env('OPENNEBULA_ENDPOINT')
|
||||||
# dcl email configurations
|
# dcl email configurations
|
||||||
DCL_TEXT = env('DCL_TEXT')
|
DCL_TEXT = env('DCL_TEXT')
|
||||||
DCL_SUPPORT_FROM_ADDRESS = env('DCL_SUPPORT_FROM_ADDRESS')
|
DCL_SUPPORT_FROM_ADDRESS = env('DCL_SUPPORT_FROM_ADDRESS')
|
||||||
|
|
||||||
|
# Settings for Google analytics
|
||||||
|
GOOGLE_ANALYTICS_PROPERTY_IDS = {
|
||||||
|
'datacenterlight.ch': 'UA-62285904-9',
|
||||||
|
'digitalglarus.ch': 'UA-62285904-2',
|
||||||
|
'127.0.0.1:8000': 'localhost',
|
||||||
|
'dynamicweb-development.ungleich.ch': 'development',
|
||||||
|
'dynamicweb-staging.ungleich.ch': 'staging'
|
||||||
|
}
|
||||||
|
|
13
templates/google_analytics.html
Normal file
13
templates/google_analytics.html
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{% if GOOGLE_ANALYTICS_PROPERTY_ID %}
|
||||||
|
<script>
|
||||||
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||||
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||||
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||||
|
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||||
|
|
||||||
|
ga('create', '{{ GOOGLE_ANALYTICS_PROPERTY_ID }}', 'auto');
|
||||||
|
ga('send', 'pageview');
|
||||||
|
</script>
|
||||||
|
{% else %}
|
||||||
|
<!-- Empty analytics -->
|
||||||
|
{% endif %}
|
15
utils/context_processor.py
Normal file
15
utils/context_processor.py
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
|
|
||||||
|
def google_analytics(request):
|
||||||
|
"""
|
||||||
|
Use the variables returned in this function to
|
||||||
|
render your Google Analytics tracking code template.
|
||||||
|
"""
|
||||||
|
host = request.get_host()
|
||||||
|
ga_prop_id = getattr(settings, 'GOOGLE_ANALYTICS_PROPERTY_IDS', False).get(host)
|
||||||
|
if not settings.DEBUG and ga_prop_id:
|
||||||
|
return {
|
||||||
|
'GOOGLE_ANALYTICS_PROPERTY_ID': ga_prop_id
|
||||||
|
}
|
||||||
|
return {}
|
17
utils/middleware.py
Normal file
17
utils/middleware.py
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
class MultipleProxyMiddleware(object):
|
||||||
|
FORWARDED_FOR_FIELDS = [
|
||||||
|
'HTTP_X_FORWARDED_FOR',
|
||||||
|
'HTTP_X_FORWARDED_HOST',
|
||||||
|
'HTTP_X_FORWARDED_SERVER',
|
||||||
|
]
|
||||||
|
|
||||||
|
def process_request(self, request):
|
||||||
|
"""
|
||||||
|
Rewrites the proxy headers so that only the most
|
||||||
|
recent proxy is used.
|
||||||
|
"""
|
||||||
|
for field in self.FORWARDED_FOR_FIELDS:
|
||||||
|
if field in request.META:
|
||||||
|
if ',' in request.META[field]:
|
||||||
|
parts = request.META[field].split(',')
|
||||||
|
request.META[field] = parts[-1].strip()
|
Loading…
Reference in a new issue