Merge branch 'master' of github.com:ungleich/dynamicweb
							
								
								
									
										36
									
								
								Changelog
									
										
									
									
									
								
							
							
						
						| 
						 | 
				
			
			@ -1,20 +1,22 @@
 | 
			
		|||
1.0.0: 2017-05-25
 | 
			
		||||
    * Initial stable release
 | 
			
		||||
1.0.5: 2017-06-06
 | 
			
		||||
    * [all] General cleanup
 | 
			
		||||
    * [datacenterlight] Add German translations
 | 
			
		||||
    * [datacenterlight] Change beta access to subscriptions 
 | 
			
		||||
    * [hosting] Add German translations 
 | 
			
		||||
    * [blog] Add German translation for header
 | 
			
		||||
    * [opennebula_api] Improve testing, add ssh key functions
 | 
			
		||||
    * [opennebula_api] Remove template views
 | 
			
		||||
    * [datacenterlight] Allow user to have multiple ssh keys 
 | 
			
		||||
    * [datacenterlight] Changed stripe.js v2 to v3
 | 
			
		||||
    * [datacenterlight] Added support for stripe payment errors on current user language 
 | 
			
		||||
1.0.4: 2017-06-05
 | 
			
		||||
    * [all] Added new Domains to accept
 | 
			
		||||
1.0.3: 2017-06-02
 | 
			
		||||
    * [datacenterlight] Hotfix, remove footer on mobile devices
 | 
			
		||||
1.0.2: 2017-05-28
 | 
			
		||||
    * [datacenterlight] Fixed login redirecting to blank page after logout
 | 
			
		||||
1.0.1: 2017-05-26
 | 
			
		||||
    * [datacenterlight] Allow storage to shrink / grow only in 10th of GB
 | 
			
		||||
    * [datacenterlight] Fix initially shown price
 | 
			
		||||
1.0.2: 2017-05-28
 | 
			
		||||
    * [datacenterlight] Fixed login redirecting to blank page after logout
 | 
			
		||||
1.0.3: 2017-06-02
 | 
			
		||||
    * [datacenterlight] Hotfix, remove footer on mobile devices
 | 
			
		||||
 | 
			
		||||
next:
 | 
			
		||||
	* [datacenterlight] Add German translations
 | 
			
		||||
	* [datacenterlight] Change beta access to subscriptions 
 | 
			
		||||
	* [hosting] Add German translations 
 | 
			
		||||
	* [blog] Add German translation for header
 | 
			
		||||
	* [opennebula_api] Improve testing, add ssh key functions
 | 
			
		||||
	* [opennebula_api] Remove template views
 | 
			
		||||
	* [datacenterlight] Allow user to have multiple ssh keys 
 | 
			
		||||
        * [datacenterlight] Changed stripe.js v2 to v3
 | 
			
		||||
        * [datacenterlight] Added support for stripe payment errors on current user language 
 | 
			
		||||
1.0.0: 2017-05-25
 | 
			
		||||
    * Initial stable release
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,69 +0,0 @@
 | 
			
		|||
user www-data;
 | 
			
		||||
worker_processes 2;
 | 
			
		||||
pid /var/run/nginx.pid;
 | 
			
		||||
daemon off;
 | 
			
		||||
 | 
			
		||||
events {
 | 
			
		||||
	worker_connections 512;
 | 
			
		||||
	# multi_accept on;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
http {
 | 
			
		||||
	sendfile on;
 | 
			
		||||
	tcp_nopush on;
 | 
			
		||||
	tcp_nodelay on;
 | 
			
		||||
	keepalive_timeout 65;
 | 
			
		||||
	types_hash_max_size 2048;
 | 
			
		||||
	server_tokens off;
 | 
			
		||||
	port_in_redirect on;
 | 
			
		||||
 | 
			
		||||
	server_names_hash_bucket_size 128;
 | 
			
		||||
	server_name_in_redirect off;
 | 
			
		||||
 | 
			
		||||
	client_max_body_size 60m;
 | 
			
		||||
 | 
			
		||||
	include /etc/nginx/mime.types;
 | 
			
		||||
	default_type application/octet-stream;
 | 
			
		||||
 | 
			
		||||
	send_timeout 300;
 | 
			
		||||
	client_body_timeout   300;
 | 
			
		||||
	client_header_timeout 300;
 | 
			
		||||
 | 
			
		||||
	access_log /logs/access.log;
 | 
			
		||||
	error_log /logs/error.log;
 | 
			
		||||
 | 
			
		||||
	gzip on;
 | 
			
		||||
	gzip_disable "msie6";
 | 
			
		||||
	gzip_vary on;
 | 
			
		||||
	gzip_proxied any;
 | 
			
		||||
	gzip_comp_level 6;
 | 
			
		||||
	gzip_buffers 16 8k;
 | 
			
		||||
	gzip_http_version 1.1;
 | 
			
		||||
	gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
 | 
			
		||||
 | 
			
		||||
	upstream django {
 | 
			
		||||
		server 127.0.0.1:8000;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	server {
 | 
			
		||||
		listen 80 default;
 | 
			
		||||
		server_name localhost;
 | 
			
		||||
		location / {
 | 
			
		||||
			proxy_pass http://django;
 | 
			
		||||
			include proxy_params;
 | 
			
		||||
		}
 | 
			
		||||
		location /media/ {
 | 
			
		||||
			root /data;
 | 
			
		||||
			expires max;
 | 
			
		||||
			access_log off;
 | 
			
		||||
		}
 | 
			
		||||
		location /static/ {
 | 
			
		||||
			root /data;
 | 
			
		||||
			expires max;
 | 
			
		||||
			access_log off;
 | 
			
		||||
		}
 | 
			
		||||
		location ~ /\.ht { deny  all; }
 | 
			
		||||
		location ~ /\.hg { deny  all; }
 | 
			
		||||
		location ~ /\.svn { deny  all; }
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,25 +0,0 @@
 | 
			
		|||
server {
 | 
			
		||||
    listen  80;
 | 
			
		||||
    server_name dynamicweb-staging.ungleich.ch;
 | 
			
		||||
 | 
			
		||||
    location /static {
 | 
			
		||||
	    alias /home/app/django/dynamicweb/static/;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    location /media {
 | 
			
		||||
	    alias /home/app/django/dynamicweb/media/;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    location / {
 | 
			
		||||
	proxy_pass http://127.0.0.1:8000/;
 | 
			
		||||
	proxy_pass_header Server;
 | 
			
		||||
	proxy_set_header Host $host;
 | 
			
		||||
	proxy_set_header X-Forwarded-Host $host;
 | 
			
		||||
	proxy_redirect off;
 | 
			
		||||
	proxy_set_header X-Real-IP $remote_addr;
 | 
			
		||||
	proxy_set_header X-Scheme $scheme;
 | 
			
		||||
	proxy_connect_timeout 600;
 | 
			
		||||
	proxy_send_timeout 600;
 | 
			
		||||
	proxy_read_timeout 600;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -27,8 +27,8 @@ class PricingView(TemplateView):
 | 
			
		|||
            }
 | 
			
		||||
        except:
 | 
			
		||||
            messages.error( request,
 | 
			
		||||
                'We could not load the VM templates due to a backend connection \
 | 
			
		||||
                error. Please try again in a few minutes'
 | 
			
		||||
                'We have a temporary problem to connect to our backend. \
 | 
			
		||||
                Please try again in a few minutes'
 | 
			
		||||
                )
 | 
			
		||||
            context = {
 | 
			
		||||
                'error' : 'connection'
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +36,6 @@ class PricingView(TemplateView):
 | 
			
		|||
 | 
			
		||||
        return render(request, self.template_name, context)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def post(self, request):
 | 
			
		||||
 | 
			
		||||
        cores = request.POST.get('cpu')
 | 
			
		||||
| 
						 | 
				
			
			@ -54,7 +53,7 @@ class PricingView(TemplateView):
 | 
			
		|||
        if not request.user.is_authenticated():
 | 
			
		||||
            request.session['next'] = reverse('hosting:payment')
 | 
			
		||||
 | 
			
		||||
        request.session['specs'] = { 
 | 
			
		||||
        request.session['specs'] = {
 | 
			
		||||
            'cpu':cores,
 | 
			
		||||
            'memory': memory,
 | 
			
		||||
            'disk_size': storage,
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +65,7 @@ class PricingView(TemplateView):
 | 
			
		|||
 | 
			
		||||
class BetaAccessView(FormView):
 | 
			
		||||
    template_name = "datacenterlight/beta_access.html"
 | 
			
		||||
    form_class = BetaAccessForm  
 | 
			
		||||
    form_class = BetaAccessForm
 | 
			
		||||
    success_message = "Thank you, we will contact you as soon as possible"
 | 
			
		||||
 | 
			
		||||
    def form_valid(self, form):
 | 
			
		||||
| 
						 | 
				
			
			@ -151,43 +150,6 @@ class BetaProgramView(CreateView):
 | 
			
		|||
 | 
			
		||||
        messages.add_message(self.request, messages.SUCCESS, self.success_message)
 | 
			
		||||
        return HttpResponseRedirect(self.get_success_url())
 | 
			
		||||
        # return super(BetaProgramView, self).form_valid(form)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
    # def form_valid(self, form):
 | 
			
		||||
 | 
			
		||||
    #     context = {
 | 
			
		||||
    #         'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host())
 | 
			
		||||
    #     }
 | 
			
		||||
 | 
			
		||||
    #     email_data = {
 | 
			
		||||
    #         'subject': 'DatacenterLight Beta Access Request',
 | 
			
		||||
    #         'to': form.cleaned_data.get('email'),
 | 
			
		||||
    #         'context': context,
 | 
			
		||||
    #         'template_name': 'request_access_confirmation',
 | 
			
		||||
    #         'template_path': 'datacenterlight/emails/'
 | 
			
		||||
    #     }
 | 
			
		||||
    #     email = BaseEmail(**email_data)
 | 
			
		||||
    #     email.send()
 | 
			
		||||
 | 
			
		||||
    #     context.update({
 | 
			
		||||
    #         'email': form.cleaned_data.get('email')
 | 
			
		||||
    #     })
 | 
			
		||||
 | 
			
		||||
    #     email_data = {
 | 
			
		||||
    #         'subject': 'DatacenterLight Beta Access Request',
 | 
			
		||||
    #         'to': 'info@ungleich.ch',
 | 
			
		||||
    #         'context': context,
 | 
			
		||||
    #         'template_name': 'request_access_notification',
 | 
			
		||||
    #         'template_path': 'datacenterlight/emails/'
 | 
			
		||||
    #     }
 | 
			
		||||
    #     email = BaseEmail(**email_data)
 | 
			
		||||
    #     email.send()
 | 
			
		||||
 | 
			
		||||
    #     messages.add_message(self.request, messages.SUCCESS, self.success_message)
 | 
			
		||||
    #     return super(IndexView, self).form_valid(form)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class IndexView(CreateView):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										
											BIN
										
									
								
								dump.rdb
									
										
									
									
									
								
							
							
						
						| 
						 | 
				
			
			@ -1,423 +0,0 @@
 | 
			
		|||
"""
 | 
			
		||||
Copyright 2015 ungleich.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
# -*- coding: utf-8 -*-
 | 
			
		||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
 | 
			
		||||
import os
 | 
			
		||||
from django.utils.translation import ugettext_lazy as _
 | 
			
		||||
# dotenv
 | 
			
		||||
import dotenv
 | 
			
		||||
 | 
			
		||||
gettext = lambda s: s
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def env(env_name):
 | 
			
		||||
    return os.environ.get(env_name)
 | 
			
		||||
 | 
			
		||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 | 
			
		||||
 | 
			
		||||
PROJECT_DIR = os.path.abspath(
 | 
			
		||||
    os.path.join(os.path.dirname(__file__), "../.."),
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# load .env file
 | 
			
		||||
dotenv.read_dotenv("{0}/.env".format(PROJECT_DIR))
 | 
			
		||||
 | 
			
		||||
# Quick-start development settings - unsuitable for production
 | 
			
		||||
# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/
 | 
			
		||||
 | 
			
		||||
SITE_ID = 1
 | 
			
		||||
 | 
			
		||||
APP_ROOT_ENDPOINT = "/"
 | 
			
		||||
 | 
			
		||||
LOGIN_URL = None
 | 
			
		||||
LOGOUT_URL = None
 | 
			
		||||
LOGIN_REDIRECT_URL = None
 | 
			
		||||
 | 
			
		||||
EMAIL_HOST = "localhost"
 | 
			
		||||
EMAIL_PORT = 25
 | 
			
		||||
 | 
			
		||||
SECRET_KEY = env('DJANGO_SECRET_KEY')
 | 
			
		||||
 | 
			
		||||
# Application definition
 | 
			
		||||
 | 
			
		||||
INSTALLED_APPS = (
 | 
			
		||||
    'djangocms_admin_style',
 | 
			
		||||
    'django.contrib.admin',
 | 
			
		||||
    'django.contrib.auth',
 | 
			
		||||
    'django.contrib.contenttypes',
 | 
			
		||||
    'django.contrib.sessions',
 | 
			
		||||
    'django.contrib.messages',
 | 
			
		||||
    'django.contrib.staticfiles',
 | 
			
		||||
    'django.contrib.sites',
 | 
			
		||||
    'cms',  # django CMS itself
 | 
			
		||||
    'treebeard',  # utilities for implementing a tree
 | 
			
		||||
    'menus',  # helper for model independent hierarchical website navigation
 | 
			
		||||
    'sekizai',  # for javascript and css management
 | 
			
		||||
    # django-cms plugins
 | 
			
		||||
    'djangocms_flash',
 | 
			
		||||
    'djangocms_googlemap',
 | 
			
		||||
    'djangocms_inherit',
 | 
			
		||||
    'djangocms_link',
 | 
			
		||||
    'djangocms_snippet',
 | 
			
		||||
    'djangocms_teaser',
 | 
			
		||||
    'djangocms_page_meta',
 | 
			
		||||
    # django-filer
 | 
			
		||||
    'cmsplugin_filer_file',
 | 
			
		||||
    'cmsplugin_filer_folder',
 | 
			
		||||
    'cmsplugin_filer_link',
 | 
			
		||||
    'cmsplugin_filer_teaser',
 | 
			
		||||
    'cmsplugin_filer_video',
 | 
			
		||||
    # versioning
 | 
			
		||||
    'reversion',
 | 
			
		||||
    # ck-editor
 | 
			
		||||
    'djangocms_text_ckeditor',
 | 
			
		||||
    # djangocms-blog
 | 
			
		||||
    'filer',
 | 
			
		||||
    'easy_thumbnails',
 | 
			
		||||
    'cmsplugin_filer_image',
 | 
			
		||||
    'parler',
 | 
			
		||||
    'taggit',
 | 
			
		||||
    'taggit_autosuggest',
 | 
			
		||||
    'django_select2',
 | 
			
		||||
    'meta',
 | 
			
		||||
    'meta_mixin',
 | 
			
		||||
#    'admin_enhancer',
 | 
			
		||||
    'djangocms_blog',
 | 
			
		||||
    'bootstrap3',
 | 
			
		||||
    'compressor',
 | 
			
		||||
    # ungleich
 | 
			
		||||
    'ungleich',
 | 
			
		||||
    'hosting',
 | 
			
		||||
    'digitalglarus',
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
MIDDLEWARE_CLASSES = (
 | 
			
		||||
    'django.contrib.sessions.middleware.SessionMiddleware',
 | 
			
		||||
    'django.middleware.common.CommonMiddleware',
 | 
			
		||||
    'django.middleware.csrf.CsrfViewMiddleware',
 | 
			
		||||
    'django.contrib.auth.middleware.AuthenticationMiddleware',
 | 
			
		||||
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 | 
			
		||||
    'django.contrib.messages.middleware.MessageMiddleware',
 | 
			
		||||
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
 | 
			
		||||
    'django.middleware.locale.LocaleMiddleware',
 | 
			
		||||
    # django-cms middlewares
 | 
			
		||||
    'cms.middleware.user.CurrentUserMiddleware',
 | 
			
		||||
    'cms.middleware.page.CurrentPageMiddleware',
 | 
			
		||||
    'cms.middleware.toolbar.ToolbarMiddleware',
 | 
			
		||||
    'cms.middleware.language.LanguageCookieMiddleware',
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
ROOT_URLCONF = 'dynamicweb.urls'
 | 
			
		||||
 | 
			
		||||
TEMPLATES = [
 | 
			
		||||
    {
 | 
			
		||||
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
 | 
			
		||||
        'DIRS': [],
 | 
			
		||||
        'APP_DIRS': True,
 | 
			
		||||
        'OPTIONS': {
 | 
			
		||||
            'context_processors': [
 | 
			
		||||
                'django.template.context_processors.debug',
 | 
			
		||||
                'django.template.context_processors.request',
 | 
			
		||||
                'django.contrib.auth.context_processors.auth',
 | 
			
		||||
                'django.contrib.messages.context_processors.messages',
 | 
			
		||||
            ],
 | 
			
		||||
        },
 | 
			
		||||
    },
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
WSGI_APPLICATION = 'dynamicweb.wsgi.application'
 | 
			
		||||
 | 
			
		||||
# Deprecated since version 1.8.
 | 
			
		||||
# callables take a request object as their argument and return a dictionary of
 | 
			
		||||
# items to be merged into the context.
 | 
			
		||||
TEMPLATE_CONTEXT_PROCESSORS = (
 | 
			
		||||
    "django.contrib.auth.context_processors.auth",
 | 
			
		||||
    "django.core.context_processors.debug",
 | 
			
		||||
    "django.core.context_processors.i18n",
 | 
			
		||||
    "django.core.context_processors.media",
 | 
			
		||||
    "django.core.context_processors.static",
 | 
			
		||||
    "django.core.context_processors.tz",
 | 
			
		||||
    "django.contrib.messages.context_processors.messages",
 | 
			
		||||
    "django.core.context_processors.request",
 | 
			
		||||
    'sekizai.context_processors.sekizai',
 | 
			
		||||
    'cms.context_processors.cms_settings',
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
TEMPLATE_DIRS = (
 | 
			
		||||
    os.path.join(PROJECT_DIR, 'templates'),
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
CMS_TEMPLATES_DIR = {
 | 
			
		||||
    1: os.path.join(TEMPLATE_DIRS[0], 'cms/'),
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Database
 | 
			
		||||
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
 | 
			
		||||
 | 
			
		||||
DATABASES = {
 | 
			
		||||
    'default': {
 | 
			
		||||
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
 | 
			
		||||
        'NAME': 'app',
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Internationalization
 | 
			
		||||
# https://docs.djangoproject.com/en/1.7/topics/i18n/
 | 
			
		||||
 | 
			
		||||
TIME_ZONE = 'UTC'
 | 
			
		||||
 | 
			
		||||
USE_I18N = True
 | 
			
		||||
 | 
			
		||||
USE_L10N = True
 | 
			
		||||
 | 
			
		||||
USE_TZ = True
 | 
			
		||||
 | 
			
		||||
LANGUAGES = (
 | 
			
		||||
    ('en-us', _('English')),
 | 
			
		||||
    ('de', _('Deutsch')),
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
LANGUAGE_CODE = 'en-us'
 | 
			
		||||
 | 
			
		||||
CMS_PLACEHOLDER_CONF = {
 | 
			
		||||
    'logo_image': {
 | 
			
		||||
        'name': 'Logo Image',
 | 
			
		||||
        'plugins': ['FilerImagePlugin'],
 | 
			
		||||
        'limits': {
 | 
			
		||||
            'global': 1,
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    'page-title': {
 | 
			
		||||
        'name': 'Page Title',
 | 
			
		||||
        'plugins': ['TextPlugin'],
 | 
			
		||||
        'default_plugins': [
 | 
			
		||||
            {
 | 
			
		||||
                'plugin_type': 'TextPlugin',
 | 
			
		||||
                'values': {
 | 
			
		||||
                    'body': 'Page Title...'
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        'limits': {
 | 
			
		||||
            'global': 1,
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    'page-subtitle': {
 | 
			
		||||
        'name': 'Page Subtitle',
 | 
			
		||||
        'inherit': 'page-title',
 | 
			
		||||
        'default_plugins': [
 | 
			
		||||
            {
 | 
			
		||||
                'plugin_type': 'TextPlugin',
 | 
			
		||||
                'values': {
 | 
			
		||||
                    'body': 'Page subtitle...'
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
    },
 | 
			
		||||
    'footer_copyright': {
 | 
			
		||||
        'name': 'Copyright',
 | 
			
		||||
        'inherit': 'page-title',
 | 
			
		||||
        'default_plugins': [
 | 
			
		||||
            {
 | 
			
		||||
                'plugin_type': 'TextPlugin',
 | 
			
		||||
                'values': {
 | 
			
		||||
                    'body': 'Copyright...'
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
    },
 | 
			
		||||
    'content': {
 | 
			
		||||
        'name': _('Content'),
 | 
			
		||||
        'default_plugins': [
 | 
			
		||||
            {
 | 
			
		||||
                'plugin_type': 'TextPlugin',
 | 
			
		||||
                'values': {'body': '<p></p>'},
 | 
			
		||||
            },
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    'post_content': {
 | 
			
		||||
        'name': _('Content'),
 | 
			
		||||
        'default_plugins': [
 | 
			
		||||
            {
 | 
			
		||||
                'plugin_type': 'TextPlugin',
 | 
			
		||||
                'values': {'body': '<p></p>'},
 | 
			
		||||
            },
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CACHES = {
 | 
			
		||||
    'default': {
 | 
			
		||||
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
 | 
			
		||||
        'LOCATION': '127.0.0.1:11211',
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if LOGIN_URL is None:
 | 
			
		||||
    LOGIN_URL = APP_ROOT_ENDPOINT + 'accounts/login/'
 | 
			
		||||
if LOGOUT_URL is None:
 | 
			
		||||
    LOGOUT_URL = APP_ROOT_ENDPOINT + 'accounts/logout/'
 | 
			
		||||
if LOGIN_REDIRECT_URL is None:
 | 
			
		||||
    LOGIN_REDIRECT_URL = APP_ROOT_ENDPOINT
 | 
			
		||||
 | 
			
		||||
# Static files (CSS, JavaScript, Images)
 | 
			
		||||
# https://docs.djangoproject.com/en/1.7/howto/static-files/
 | 
			
		||||
 | 
			
		||||
STATIC_URL = '/static/'
 | 
			
		||||
 | 
			
		||||
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
 | 
			
		||||
 | 
			
		||||
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
 | 
			
		||||
MEDIA_URL = APP_ROOT_ENDPOINT + 'media/'
 | 
			
		||||
FILE_UPLOAD_PERMISSIONS = 0o644
 | 
			
		||||
 | 
			
		||||
# Templates confs
 | 
			
		||||
TEMPLATE_DIRS = (
 | 
			
		||||
    os.path.join(PROJECT_DIR, "templates"),
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
META_SITE_PROTOCOL = 'http'
 | 
			
		||||
META_USE_SITES = True
 | 
			
		||||
 | 
			
		||||
MIGRATION_MODULES = {
 | 
			
		||||
    'cms': 'cms.migrations',
 | 
			
		||||
    'filer': 'filer.migrations_django',
 | 
			
		||||
    'menus': 'menus.migrations_django',
 | 
			
		||||
    'djangocms_flash': 'djangocms_flash.migrations_django',
 | 
			
		||||
    'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
 | 
			
		||||
    'djangocms_inherit': 'djangocms_inherit.migrations_django',
 | 
			
		||||
    'djangocms_link': 'djangocms_link.migrations_django',
 | 
			
		||||
    'djangocms_snippet': 'djangocms_snippet.migrations_django',
 | 
			
		||||
    'djangocms_teaser': 'djangocms_teaser.migrations_django',
 | 
			
		||||
    'djangocms_column': 'djangocms_column.migrations_django',
 | 
			
		||||
    'djangocms_flash': 'djangocms_flash.migrations_django',
 | 
			
		||||
    'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
 | 
			
		||||
    'djangocms_inherit': 'djangocms_inherit.migrations_django',
 | 
			
		||||
    'djangocms_style': 'djangocms_style.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_image': 'cmsplugin_filer_image.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_file': 'cmsplugin_filer_file.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_folder': 'cmsplugin_filer_folder.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_link': 'cmsplugin_filer_link.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_teaser': 'cmsplugin_filer_teaser.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_utils': 'cmsplugin_filer_utils.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_video': 'cmsplugin_filer_video.migrations_django',
 | 
			
		||||
    'djangocms_text_ckeditor': 'djangocms_text_ckeditor.migrations',
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
STATICFILES_FINDERS = (
 | 
			
		||||
    'django.contrib.staticfiles.finders.FileSystemFinder',
 | 
			
		||||
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
 | 
			
		||||
    'compressor.finders.CompressorFinder',
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
COMPRESS_PRECOMPILERS = (
 | 
			
		||||
    ('text/less', 'lesscpy {infile}'),
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
THUMBNAIL_PROCESSORS = (
 | 
			
		||||
    'easy_thumbnails.processors.colorspace',
 | 
			
		||||
    'easy_thumbnails.processors.autocrop',
 | 
			
		||||
    'filer.thumbnail_processors.scale_and_crop_with_subject_location',
 | 
			
		||||
    'easy_thumbnails.processors.filters',
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# django-cms-text-ckeditor
 | 
			
		||||
TEXT_SAVE_IMAGE_FUNCTION = (
 | 
			
		||||
    'cmsplugin_filer_image.integrations.ckeditor.create_image_plugin'
 | 
			
		||||
)
 | 
			
		||||
TEXT_ADDITIONAL_TAGS = ('iframe',)
 | 
			
		||||
TEXT_ADDITIONAL_ATTRIBUTES = ('scrolling', 'allowfullscreen', 'frameborder')
 | 
			
		||||
USE_X_FORWARDED_HOST = True
 | 
			
		||||
 | 
			
		||||
# Django Bootstrap - Settings
 | 
			
		||||
# Added Configuration for bootstrap static files to load over https.
 | 
			
		||||
BOOTSTRAP3 = {
 | 
			
		||||
 | 
			
		||||
    # The URL to the jQuery JavaScript file
 | 
			
		||||
    'jquery_url': '//code.jquery.com/jquery.min.js',
 | 
			
		||||
 | 
			
		||||
    # The Bootstrap base URL
 | 
			
		||||
    'base_url': '//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/',
 | 
			
		||||
 | 
			
		||||
    # The complete URL to the Bootstrap CSS file
 | 
			
		||||
    # (None means derive it from base_url)
 | 
			
		||||
    'css_url': None,
 | 
			
		||||
 | 
			
		||||
    # The complete URL to the Bootstrap CSS file (None means no theme)
 | 
			
		||||
    'theme_url': None,
 | 
			
		||||
 | 
			
		||||
    # The complete URL to the Bootstrap JavaScript file
 | 
			
		||||
    # (None means derive it from base_url)
 | 
			
		||||
    'javascript_url': None,
 | 
			
		||||
 | 
			
		||||
    # Put JavaScript in the HEAD section of the HTML document
 | 
			
		||||
    # (only relevant if you use bootstrap3.html)
 | 
			
		||||
    'javascript_in_head': False,
 | 
			
		||||
 | 
			
		||||
    # Include jQuery with Bootstrap JavaScript
 | 
			
		||||
    # (affects django-bootstrap3 template tags)
 | 
			
		||||
    'include_jquery': False,
 | 
			
		||||
 | 
			
		||||
    # Label class to use in horizontal forms
 | 
			
		||||
    'horizontal_label_class': 'col-md-3',
 | 
			
		||||
 | 
			
		||||
    # Field class to use in horizontal forms
 | 
			
		||||
    'horizontal_field_class': 'col-md-9',
 | 
			
		||||
 | 
			
		||||
    # Set HTML required attribute on required fields
 | 
			
		||||
    'set_required': True,
 | 
			
		||||
 | 
			
		||||
    # Set HTML disabled attribute on disabled fields
 | 
			
		||||
    'set_disabled': False,
 | 
			
		||||
 | 
			
		||||
    # Set placeholder attributes to label if no placeholder is provided
 | 
			
		||||
    'set_placeholder': True,
 | 
			
		||||
 | 
			
		||||
    # Class to indicate required (better to set this in your Django form)
 | 
			
		||||
    'required_css_class': '',
 | 
			
		||||
 | 
			
		||||
    # Class to indicate error (better to set this in your Django form)
 | 
			
		||||
    'error_css_class': 'has-error',
 | 
			
		||||
 | 
			
		||||
    # Class to indicate success, meaning the field has valid input
 | 
			
		||||
    # (better to set this in your Django form)
 | 
			
		||||
    'success_css_class': 'has-success',
 | 
			
		||||
 | 
			
		||||
    # Renderers (only set these if you have studied the source and understand
 | 
			
		||||
    # the inner workings)
 | 
			
		||||
    'formset_renderers': {
 | 
			
		||||
        'default': 'bootstrap3.renderers.FormsetRenderer',
 | 
			
		||||
    },
 | 
			
		||||
    'form_renderers': {
 | 
			
		||||
        'default': 'bootstrap3.renderers.FormRenderer',
 | 
			
		||||
    },
 | 
			
		||||
    'field_renderers': {
 | 
			
		||||
        'default': 'bootstrap3.renderers.FieldRenderer',
 | 
			
		||||
        'inline': 'bootstrap3.renderers.InlineFieldRenderer',
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# djangocms_blog config
 | 
			
		||||
 | 
			
		||||
BLOG_ENABLE_COMMENTS = False
 | 
			
		||||
BLOG_USE_PLACEHOLDER = True
 | 
			
		||||
BLOG_IMAGE_THUMBNAIL_SIZE = {'size': '120x120', 'crop': True, 'upscale': False}
 | 
			
		||||
BLOG_IMAGE_FULL_SIZE = {'size': '640x120', 'crop': True, 'upscale': False}
 | 
			
		||||
BLOG_PAGINATION = 4
 | 
			
		||||
BLOG_LATEST_POSTS = BLOG_PAGINATION
 | 
			
		||||
BLOG_POSTS_LIST_TRUNCWORDS_COUNT = 100
 | 
			
		||||
BLOG_MULTISITE = True
 | 
			
		||||
BLOG_AUTHOR_DEFAULT = True
 | 
			
		||||
 | 
			
		||||
# django-meta
 | 
			
		||||
META_SITE_PROTOCOL = "https"
 | 
			
		||||
META_SITE_DOMAIN = "ungleich.ch"
 | 
			
		||||
META_SITE_TYPE = "website"
 | 
			
		||||
META_SITE_NAME = "ungleich"
 | 
			
		||||
META_INCLUDE_KEYWORDS = ["ungleich", "hosting", "switzerland",
 | 
			
		||||
                         "Schweiz", "Swiss", "cdist"]
 | 
			
		||||
META_USE_SITES = True
 | 
			
		||||
 | 
			
		||||
PARLER_LANGUAGES = {1: ({'code': 'en-us'}, {'code': 'de'}, )}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,441 +0,0 @@
 | 
			
		|||
"""
 | 
			
		||||
Copyright 2015 ungleich.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
# -*- coding: utf-8 -*-
 | 
			
		||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
from django.utils.translation import ugettext_lazy as _
 | 
			
		||||
 | 
			
		||||
# dotenv
 | 
			
		||||
import dotenv
 | 
			
		||||
 | 
			
		||||
gettext = lambda s: s
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def env(env_name):
 | 
			
		||||
    return os.environ.get(env_name)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 | 
			
		||||
 | 
			
		||||
PROJECT_DIR = os.path.abspath(
 | 
			
		||||
    os.path.join(os.path.dirname(__file__), "../.."),
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# load .env file
 | 
			
		||||
dotenv.read_dotenv("{0}/.env".format(PROJECT_DIR))
 | 
			
		||||
 | 
			
		||||
# Quick-start development settings - unsuitable for production
 | 
			
		||||
# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/
 | 
			
		||||
 | 
			
		||||
SITE_ID = 1
 | 
			
		||||
 | 
			
		||||
APP_ROOT_ENDPOINT = "/"
 | 
			
		||||
 | 
			
		||||
LOGIN_URL = None
 | 
			
		||||
LOGOUT_URL = None
 | 
			
		||||
LOGIN_REDIRECT_URL = None
 | 
			
		||||
 | 
			
		||||
EMAIL_HOST = "localhost"
 | 
			
		||||
EMAIL_PORT = 25
 | 
			
		||||
 | 
			
		||||
SECRET_KEY = env('DJANGO_SECRET_KEY')
 | 
			
		||||
 | 
			
		||||
# Application definition
 | 
			
		||||
 | 
			
		||||
INSTALLED_APPS = (
 | 
			
		||||
    #1st migrate
 | 
			
		||||
    'membership',
 | 
			
		||||
    'django.contrib.admin',
 | 
			
		||||
    'django.contrib.auth',
 | 
			
		||||
    'django.contrib.contenttypes',
 | 
			
		||||
    'django.contrib.sessions',
 | 
			
		||||
    'django.contrib.messages',
 | 
			
		||||
    'django.contrib.staticfiles',
 | 
			
		||||
    'django.contrib.sites',
 | 
			
		||||
    'easy_thumbnails',
 | 
			
		||||
    'mptt',
 | 
			
		||||
    'parler',
 | 
			
		||||
    'taggit',
 | 
			
		||||
    'taggit_autosuggest',
 | 
			
		||||
    'django_select2',
 | 
			
		||||
    'meta',
 | 
			
		||||
    'meta_mixin',
 | 
			
		||||
#   'admin_enhancer',
 | 
			
		||||
    'djangocms_blog',
 | 
			
		||||
    'bootstrap3',
 | 
			
		||||
    'compressor',
 | 
			
		||||
    'filer',
 | 
			
		||||
    'djangocms_blog',
 | 
			
		||||
    'cms',  # django CMS itself
 | 
			
		||||
    'treebeard',  # utilities for implementing a tree
 | 
			
		||||
    'sekizai',  # for javascript and css management
 | 
			
		||||
    'menus',  # helper for model independent hierarchical website navigation
 | 
			
		||||
    'cmsplugin_filer_image',
 | 
			
		||||
 | 
			
		||||
    #2nd migrate
 | 
			
		||||
    # django-cms plugins
 | 
			
		||||
   'djangocms_file',
 | 
			
		||||
   'djangocms_picture',
 | 
			
		||||
   'djangocms_video',
 | 
			
		||||
   'djangocms_flash',
 | 
			
		||||
 | 
			
		||||
   'djangocms_googlemap',
 | 
			
		||||
   'djangocms_inherit',
 | 
			
		||||
   'djangocms_link',
 | 
			
		||||
   'djangocms_teaser',
 | 
			
		||||
   'djangocms_page_meta',
 | 
			
		||||
   'djangocms_text_ckeditor',
 | 
			
		||||
   'djangocms_admin_style',
 | 
			
		||||
   'cmsplugin_filer_file',
 | 
			
		||||
   'cmsplugin_filer_folder',
 | 
			
		||||
   'cmsplugin_filer_link',
 | 
			
		||||
   'cmsplugin_filer_teaser',
 | 
			
		||||
   'cmsplugin_filer_video',
 | 
			
		||||
    #
 | 
			
		||||
    #blog
 | 
			
		||||
    # versioning
 | 
			
		||||
    'reversion',
 | 
			
		||||
    # ungleich
 | 
			
		||||
    'ungleich',
 | 
			
		||||
    'hosting',
 | 
			
		||||
    'digitalglarus',
 | 
			
		||||
    'django_extensions',
 | 
			
		||||
    'debug_toolbar'
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
MIDDLEWARE_CLASSES = (
 | 
			
		||||
    'django.contrib.sessions.middleware.SessionMiddleware',
 | 
			
		||||
    'django.middleware.common.CommonMiddleware',
 | 
			
		||||
    'django.middleware.csrf.CsrfViewMiddleware',
 | 
			
		||||
    'django.contrib.auth.middleware.AuthenticationMiddleware',
 | 
			
		||||
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 | 
			
		||||
    'django.contrib.messages.middleware.MessageMiddleware',
 | 
			
		||||
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
 | 
			
		||||
    'django.middleware.locale.LocaleMiddleware',
 | 
			
		||||
    # django-cms middlewares
 | 
			
		||||
    'cms.middleware.user.CurrentUserMiddleware',
 | 
			
		||||
    'cms.middleware.page.CurrentPageMiddleware',
 | 
			
		||||
    'cms.middleware.toolbar.ToolbarMiddleware',
 | 
			
		||||
    'cms.middleware.language.LanguageCookieMiddleware',
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
ROOT_URLCONF = 'dynamicweb.urls'
 | 
			
		||||
 | 
			
		||||
TEMPLATES = [
 | 
			
		||||
    {
 | 
			
		||||
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
 | 
			
		||||
        'DIRS': [
 | 
			
		||||
            os.path.join(PROJECT_DIR, 'membership/'),  # membership template
 | 
			
		||||
            os.path.join(PROJECT_DIR, 'templates/'),
 | 
			
		||||
            os.path.join(PROJECT_DIR, 'templates/digitalglarus/partials'),
 | 
			
		||||
            os.path.join(PROJECT_DIR, 'templates/cms'),
 | 
			
		||||
            os.path.join(PROJECT_DIR, 'templates/digitalglarus'),
 | 
			
		||||
        ],
 | 
			
		||||
        'APP_DIRS': True,
 | 
			
		||||
        'OPTIONS': {
 | 
			
		||||
            'context_processors': [
 | 
			
		||||
                'django.template.context_processors.debug',
 | 
			
		||||
                'django.template.context_processors.request',
 | 
			
		||||
                'django.contrib.auth.context_processors.auth',
 | 
			
		||||
                'django.contrib.messages.context_processors.messages',
 | 
			
		||||
                "django.core.context_processors.media",
 | 
			
		||||
                "django.core.context_processors.static",
 | 
			
		||||
                "django.core.context_processors.tz",
 | 
			
		||||
                "django.contrib.messages.context_processors.messages",
 | 
			
		||||
                'sekizai.context_processors.sekizai',
 | 
			
		||||
                'cms.context_processors.cms_settings',
 | 
			
		||||
            ],
 | 
			
		||||
        },
 | 
			
		||||
    },
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
WSGI_APPLICATION = 'dynamicweb.wsgi.application'
 | 
			
		||||
 | 
			
		||||
TDIR = os.path.join(PROJECT_DIR, 'templates')
 | 
			
		||||
 | 
			
		||||
CMS_TEMPLATES_DIR = {
 | 
			
		||||
    1: os.path.join(TDIR, '')
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
DATABASES = {
 | 
			
		||||
    'default': {
 | 
			
		||||
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
 | 
			
		||||
        'NAME': 'app',
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Internationalization
 | 
			
		||||
# https://docs.djangoproject.com/en/1.7/topics/i18n/
 | 
			
		||||
 | 
			
		||||
TIME_ZONE = 'UTC'
 | 
			
		||||
 | 
			
		||||
USE_I18N = True
 | 
			
		||||
 | 
			
		||||
USE_L10N = True
 | 
			
		||||
 | 
			
		||||
USE_TZ = True
 | 
			
		||||
 | 
			
		||||
LANGUAGES = (
 | 
			
		||||
    ('en-us', _('English')),
 | 
			
		||||
    ('de', _('Deutsch')),
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
LANGUAGE_CODE = 'en-us'
 | 
			
		||||
 | 
			
		||||
CMS_PLACEHOLDER_CONF = {
 | 
			
		||||
    'logo_image': {
 | 
			
		||||
        'name': 'Logo Image',
 | 
			
		||||
        'plugins': ['FilerImagePlugin'],
 | 
			
		||||
        'limits': {
 | 
			
		||||
            'global': 1,
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    'page-title': {
 | 
			
		||||
        'name': 'Page Title',
 | 
			
		||||
        'plugins': ['TextPlugin'],
 | 
			
		||||
        'default_plugins': [
 | 
			
		||||
            {
 | 
			
		||||
                'plugin_type': 'TextPlugin',
 | 
			
		||||
                'values': {
 | 
			
		||||
                    'body': 'Page Title...'
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        'limits': {
 | 
			
		||||
            'global': 1,
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    'page-subtitle': {
 | 
			
		||||
        'name': 'Page Subtitle',
 | 
			
		||||
        'inherit': 'page-title',
 | 
			
		||||
        'default_plugins': [
 | 
			
		||||
            {
 | 
			
		||||
                'plugin_type': 'TextPlugin',
 | 
			
		||||
                'values': {
 | 
			
		||||
                    'body': 'Page subtitle...'
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
    },
 | 
			
		||||
    'footer_copyright': {
 | 
			
		||||
        'name': 'Copyright',
 | 
			
		||||
        'inherit': 'page-title',
 | 
			
		||||
        'default_plugins': [
 | 
			
		||||
            {
 | 
			
		||||
                'plugin_type': 'TextPlugin',
 | 
			
		||||
                'values': {
 | 
			
		||||
                    'body': 'Copyright...'
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
    },
 | 
			
		||||
    'content': {
 | 
			
		||||
        'name': _('Content'),
 | 
			
		||||
        'default_plugins': [
 | 
			
		||||
            {
 | 
			
		||||
                'plugin_type': 'TextPlugin',
 | 
			
		||||
                'values': {'body': '<p></p>'},
 | 
			
		||||
            },
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    'post_content': {
 | 
			
		||||
        'name': _('Content'),
 | 
			
		||||
        'default_plugins': [
 | 
			
		||||
            {
 | 
			
		||||
                'plugin_type': 'TextPlugin',
 | 
			
		||||
                'values': {'body': '<p></p>'},
 | 
			
		||||
            },
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CACHES = {
 | 
			
		||||
    'default': {
 | 
			
		||||
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
 | 
			
		||||
        'LOCATION': '127.0.0.1:11211',
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if LOGIN_URL is None:
 | 
			
		||||
    LOGIN_URL = APP_ROOT_ENDPOINT + 'accounts/login/'
 | 
			
		||||
if LOGOUT_URL is None:
 | 
			
		||||
    LOGOUT_URL = APP_ROOT_ENDPOINT + 'accounts/logout/'
 | 
			
		||||
if LOGIN_REDIRECT_URL is None:
 | 
			
		||||
    LOGIN_REDIRECT_URL = APP_ROOT_ENDPOINT
 | 
			
		||||
 | 
			
		||||
# Static files (CSS, JavaScript, Images)
 | 
			
		||||
# https://docs.djangoproject.com/en/1.7/howto/static-files/
 | 
			
		||||
 | 
			
		||||
STATIC_URL = '/static/'
 | 
			
		||||
 | 
			
		||||
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
 | 
			
		||||
 | 
			
		||||
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
 | 
			
		||||
MEDIA_URL = APP_ROOT_ENDPOINT + 'media/'
 | 
			
		||||
FILE_UPLOAD_PERMISSIONS = 0o644
 | 
			
		||||
 | 
			
		||||
META_SITE_PROTOCOL = 'http'
 | 
			
		||||
META_USE_SITES = True
 | 
			
		||||
MIGRATION_MODULES = {
 | 
			
		||||
    'cms': 'cms.migrations',
 | 
			
		||||
    # 'filer': 'filer.migrations_django',
 | 
			
		||||
    # 'menus': 'menus.migrations_django',
 | 
			
		||||
    'djangocms_flash': 'djangocms_flash.migrations_django',
 | 
			
		||||
    'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
 | 
			
		||||
    'djangocms_inherit': 'djangocms_inherit.migrations_django',
 | 
			
		||||
    'djangocms_link': 'djangocms_link.migrations_django',
 | 
			
		||||
    'djangocms_teaser': 'djangocms_teaser.migrations_django',
 | 
			
		||||
    'djangocms_column': 'djangocms_column.migrations_django',
 | 
			
		||||
    'djangocms_flash': 'djangocms_flash.migrations_django',
 | 
			
		||||
    'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
 | 
			
		||||
    'djangocms_inherit': 'djangocms_inherit.migrations_django',
 | 
			
		||||
    'djangocms_style': 'djangocms_style.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_image': 'cmsplugin_filer_image.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_file': 'cmsplugin_filer_file.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_folder': 'cmsplugin_filer_folder.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_link': 'cmsplugin_filer_link.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_teaser': 'cmsplugin_filer_teaser.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_utils': 'cmsplugin_filer_utils.migrations_django',
 | 
			
		||||
    'cmsplugin_filer_video': 'cmsplugin_filer_video.migrations_django',
 | 
			
		||||
    'djangocms_text_ckeditor': 'djangocms_text_ckeditor.migrations',
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
STATICFILES_FINDERS = (
 | 
			
		||||
    'django.contrib.staticfiles.finders.FileSystemFinder',
 | 
			
		||||
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
 | 
			
		||||
    'compressor.finders.CompressorFinder',
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
#COMPRESS_PRECOMPILERS = (
 | 
			
		||||
#    ('text/less', 'lesscpy {infile}'),
 | 
			
		||||
#)
 | 
			
		||||
 | 
			
		||||
THUMBNAIL_PROCESSORS = (
 | 
			
		||||
    'easy_thumbnails.processors.colorspace',
 | 
			
		||||
    'easy_thumbnails.processors.autocrop',
 | 
			
		||||
    'filer.thumbnail_processors.scale_and_crop_with_subject_location',
 | 
			
		||||
    'easy_thumbnails.processors.filters',
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# django-cms-text-ckeditor
 | 
			
		||||
TEXT_SAVE_IMAGE_FUNCTION = (
 | 
			
		||||
    'cmsplugin_filer_image.integrations.ckeditor.create_image_plugin'
 | 
			
		||||
)
 | 
			
		||||
TEXT_ADDITIONAL_TAGS = ('iframe',)
 | 
			
		||||
TEXT_ADDITIONAL_ATTRIBUTES = ('scrolling', 'allowfullscreen', 'frameborder')
 | 
			
		||||
USE_X_FORWARDED_HOST = True
 | 
			
		||||
 | 
			
		||||
# Django Bootstrap - Settings
 | 
			
		||||
# Added Configuration for bootstrap static files to load over https.
 | 
			
		||||
BOOTSTRAP3 = {
 | 
			
		||||
 | 
			
		||||
    # The URL to the jQuery JavaScript file
 | 
			
		||||
    'jquery_url': '//code.jquery.com/jquery.min.js',
 | 
			
		||||
 | 
			
		||||
    # The Bootstrap base URL
 | 
			
		||||
    'base_url': '//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/',
 | 
			
		||||
 | 
			
		||||
    # The complete URL to the Bootstrap CSS file
 | 
			
		||||
    # (None means derive it from base_url)
 | 
			
		||||
    'css_url': None,
 | 
			
		||||
 | 
			
		||||
    # The complete URL to the Bootstrap CSS file (None means no theme)
 | 
			
		||||
    'theme_url': None,
 | 
			
		||||
 | 
			
		||||
    # The complete URL to the Bootstrap JavaScript file
 | 
			
		||||
    # (None means derive it from base_url)
 | 
			
		||||
    'javascript_url': None,
 | 
			
		||||
 | 
			
		||||
    # Put JavaScript in the HEAD section of the HTML document
 | 
			
		||||
    # (only relevant if you use bootstrap3.html)
 | 
			
		||||
    'javascript_in_head': False,
 | 
			
		||||
 | 
			
		||||
    # Include jQuery with Bootstrap JavaScript
 | 
			
		||||
    # (affects django-bootstrap3 template tags)
 | 
			
		||||
    'include_jquery': False,
 | 
			
		||||
 | 
			
		||||
    # Label class to use in horizontal forms
 | 
			
		||||
    'horizontal_label_class': 'col-md-3',
 | 
			
		||||
 | 
			
		||||
    # Field class to use in horizontal forms
 | 
			
		||||
    'horizontal_field_class': 'col-md-9',
 | 
			
		||||
 | 
			
		||||
    # Set HTML required attribute on required fields
 | 
			
		||||
    'set_required': True,
 | 
			
		||||
 | 
			
		||||
    # Set HTML disabled attribute on disabled fields
 | 
			
		||||
    'set_disabled': False,
 | 
			
		||||
 | 
			
		||||
    # Set placeholder attributes to label if no placeholder is provided
 | 
			
		||||
    'set_placeholder': True,
 | 
			
		||||
 | 
			
		||||
    # Class to indicate required (better to set this in your Django form)
 | 
			
		||||
    'required_css_class': '',
 | 
			
		||||
 | 
			
		||||
    # Class to indicate error (better to set this in your Django form)
 | 
			
		||||
    'error_css_class': 'has-error',
 | 
			
		||||
 | 
			
		||||
    # Class to indicate success, meaning the field has valid input
 | 
			
		||||
    # (better to set this in your Django form)
 | 
			
		||||
    'success_css_class': 'has-success',
 | 
			
		||||
 | 
			
		||||
    # Renderers (only set these if you have studied the source and understand
 | 
			
		||||
    # the inner workings)
 | 
			
		||||
    'formset_renderers': {
 | 
			
		||||
        'default': 'bootstrap3.renderers.FormsetRenderer',
 | 
			
		||||
    },
 | 
			
		||||
    'form_renderers': {
 | 
			
		||||
        'default': 'bootstrap3.renderers.FormRenderer',
 | 
			
		||||
    },
 | 
			
		||||
    'field_renderers': {
 | 
			
		||||
        'default': 'bootstrap3.renderers.FieldRenderer',
 | 
			
		||||
        'inline': 'bootstrap3.renderers.InlineFieldRenderer',
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# djangocms_blog config
 | 
			
		||||
 | 
			
		||||
BLOG_ENABLE_COMMENTS = False
 | 
			
		||||
BLOG_USE_PLACEHOLDER = True
 | 
			
		||||
BLOG_IMAGE_THUMBNAIL_SIZE = {'size': '120x120', 'crop': True, 'upscale': False}
 | 
			
		||||
BLOG_IMAGE_FULL_SIZE = {'size': '640x120', 'crop': True, 'upscale': False}
 | 
			
		||||
BLOG_PAGINATION = 4
 | 
			
		||||
BLOG_LATEST_POSTS = BLOG_PAGINATION
 | 
			
		||||
BLOG_POSTS_LIST_TRUNCWORDS_COUNT = 100
 | 
			
		||||
BLOG_MULTISITE = True
 | 
			
		||||
BLOG_AUTHOR_DEFAULT = True
 | 
			
		||||
 | 
			
		||||
# django-meta
 | 
			
		||||
META_SITE_PROTOCOL = "https"
 | 
			
		||||
META_SITE_DOMAIN = "ungleich.ch"
 | 
			
		||||
META_SITE_TYPE = "website"
 | 
			
		||||
META_SITE_NAME = "ungleich"
 | 
			
		||||
META_INCLUDE_KEYWORDS = ["ungleich", "hosting", "switzerland",
 | 
			
		||||
                         "Schweiz", "Swiss", "cdist"]
 | 
			
		||||
META_USE_SITES = True
 | 
			
		||||
 | 
			
		||||
PARLER_LANGUAGES = {1: ({'code': 'en-us'}, {'code': 'de'},)}
 | 
			
		||||
AUTH_USER_MODEL = 'membership.CustomUser'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# PAYMENT
 | 
			
		||||
 | 
			
		||||
STRIPE_API_PUBLIC_KEY = 'pk_test_uvWyHNJgVL2IB8kjfgJkGjg4'  # used in frontend to call from user browser
 | 
			
		||||
STRIPE_API_PRIVATE_KEY = 'sk_test_uIPMdgXoRGydrcD7fkwcn7dj'  # used in backend payment
 | 
			
		||||
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
 | 
			
		||||
 | 
			
		||||
# EMAIL MESSAGES
 | 
			
		||||
REGISTRATION_MESSAGE = {'subject': "Validation mail",
 | 
			
		||||
                        'message': 'Please validate Your account under this link http://localhost:8000/en-us/validate/{}',
 | 
			
		||||
                        'from': 'test@test.com'}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#dont migrate test
 | 
			
		||||
# SOUTH_TESTS_MIGRATE = False
 | 
			
		||||
 | 
			
		||||
STRIPE_API_PUBLIC_KEY = 'pk_test_uvWyHNJgVL2IB8kjfgJkGjg4'  # used in frontend to call from user browser
 | 
			
		||||
STRIPE_API_PRIVATE_KEY = 'sk_test_uIPMdgXoRGydrcD7fkwcn7dj'  # used in backend payment
 | 
			
		||||
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
 | 
			
		||||
| 
						 | 
				
			
			@ -1,12 +1,8 @@
 | 
			
		|||
from .base import *
 | 
			
		||||
 | 
			
		||||
ADMINS = (
 | 
			
		||||
    ('Nico Schottelius', 'nico.schottelius@ungleich.ch'),
 | 
			
		||||
    ('Raul Ascencio', 'raul.ascencio@yandex.com'),
 | 
			
		||||
    ('Web team', 'web-team@ungleich.ch')
 | 
			
		||||
# List of people that get admin messages
 | 
			
		||||
ADMINS = ( (x, x + "@ungleich.ch") for x in ["web-team"] )
 | 
			
		||||
 | 
			
		||||
)
 | 
			
		||||
#    ('Sanghee Kim', 'sanghee.kim@ungleich.ch'),
 | 
			
		||||
DEBUG=False
 | 
			
		||||
 | 
			
		||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
 | 
			
		||||
| 
						 | 
				
			
			@ -17,6 +13,15 @@ REGISTRATION_MESSAGE['message'] = REGISTRATION_MESSAGE['message'].format(host='d
 | 
			
		|||
 | 
			
		||||
ALLOWED_HOSTS = [
 | 
			
		||||
    ".ungleich.ch",
 | 
			
		||||
    "digital.glarus.ungleich.ch",
 | 
			
		||||
    ".datacenterlight.ch",
 | 
			
		||||
    ".rails-hosting.ch",
 | 
			
		||||
    ".django-hosting.ch",
 | 
			
		||||
    ".node-hosting.ch",
 | 
			
		||||
    ".devuanhosting.ch",
 | 
			
		||||
    ".digitalezukunft.ch",
 | 
			
		||||
    ".ipv6onlyhosting.ch",
 | 
			
		||||
    ".ipv6onlyhosting.com",
 | 
			
		||||
    ".ipv6onlyhosting.net",
 | 
			
		||||
    ".digitalglarus.ch",
 | 
			
		||||
    ".alplora.ch"
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
		 Before Width: | Height: | Size: 507 KiB  | 
| 
		 Before Width: | Height: | Size: 380 KiB  | 
| 
		 Before Width: | Height: | Size: 910 KiB  | 
| 
		 Before Width: | Height: | Size: 16 KiB  | 
| 
		 Before Width: | Height: | Size: 18 KiB  | 
| 
		 Before Width: | Height: | Size: 358 KiB  | 
| 
		 Before Width: | Height: | Size: 285 KiB  | 
| 
		 Before Width: | Height: | Size: 106 KiB  | 
| 
		 Before Width: | Height: | Size: 482 KiB  | 
| 
		 Before Width: | Height: | Size: 291 KiB  | 
| 
		 Before Width: | Height: | Size: 196 KiB  | 
| 
		 Before Width: | Height: | Size: 2.3 MiB  | 
| 
		 Before Width: | Height: | Size: 541 KiB  | 
| 
		 Before Width: | Height: | Size: 441 KiB  | 
| 
		 Before Width: | Height: | Size: 56 KiB  | 
| 
		 Before Width: | Height: | Size: 190 KiB  | 
| 
		 Before Width: | Height: | Size: 114 KiB  | 
| 
		 Before Width: | Height: | Size: 283 KiB  | 
| 
		 Before Width: | Height: | Size: 103 KiB  | 
| 
		 Before Width: | Height: | Size: 3.5 MiB  | 
| 
		 Before Width: | Height: | Size: 1.3 MiB  | 
| 
		 Before Width: | Height: | Size: 384 KiB  | 
| 
		 Before Width: | Height: | Size: 1.2 MiB  | 
| 
		 Before Width: | Height: | Size: 105 KiB  | 
| 
		 Before Width: | Height: | Size: 252 KiB  | 
| 
		 Before Width: | Height: | Size: 36 KiB  | 
| 
		 Before Width: | Height: | Size: 303 KiB  | 
| 
		 Before Width: | Height: | Size: 195 KiB  | 
| 
		 Before Width: | Height: | Size: 5.5 KiB  | 
| 
		 Before Width: | Height: | Size: 27 KiB  | 
| 
		 Before Width: | Height: | Size: 2.8 MiB  | 
| 
		 Before Width: | Height: | Size: 447 B  | 
| 
		 Before Width: | Height: | Size: 58 KiB  | 
| 
		 Before Width: | Height: | Size: 328 KiB  | 
| 
		 Before Width: | Height: | Size: 980 KiB  | 
| 
		 Before Width: | Height: | Size: 503 KiB  | 
| 
		 Before Width: | Height: | Size: 942 KiB  | 
| 
		 Before Width: | Height: | Size: 1.3 MiB  | 
| 
		 Before Width: | Height: | Size: 557 KiB  | 
| 
		 Before Width: | Height: | Size: 3.2 MiB  | 
| 
		 Before Width: | Height: | Size: 833 KiB  | 
| 
		 Before Width: | Height: | Size: 12 KiB  | 
| 
		 Before Width: | Height: | Size: 893 KiB  | 
| 
		 Before Width: | Height: | Size: 280 KiB  | 
| 
		 Before Width: | Height: | Size: 2.7 MiB  | 
| 
		 Before Width: | Height: | Size: 265 KiB  | 
| 
		 Before Width: | Height: | Size: 3.4 MiB  | 
| 
		 Before Width: | Height: | Size: 13 KiB  | 
| 
		 Before Width: | Height: | Size: 415 KiB  | 
| 
		 Before Width: | Height: | Size: 438 KiB  | 
| 
		 Before Width: | Height: | Size: 2.1 MiB  | 
| 
		 Before Width: | Height: | Size: 13 KiB  | 
| 
		 Before Width: | Height: | Size: 824 KiB  | 
| 
		 Before Width: | Height: | Size: 2.4 MiB  | 
| 
						 | 
				
			
			@ -1,71 +0,0 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 | 
			
		||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
 | 
			
		||||
<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 | 
			
		||||
	 width="250px" height="70px" viewBox="0 0 250 70" enable-background="new 0 0 250 70" xml:space="preserve">
 | 
			
		||||
<g>
 | 
			
		||||
	<path fill="#010101" d="M72.846,59.448c0-0.947,0.333-1.869,1.003-2.77c0.67-0.899,1.625-1.709,2.866-2.425v-0.201
 | 
			
		||||
		c-0.649-0.356-1.224-0.854-1.717-1.492c-0.486-0.638-0.732-1.463-0.732-2.474c0-0.784,0.254-1.577,0.762-2.379
 | 
			
		||||
		c0.502-0.8,1.216-1.511,2.133-2.13V45.38c-0.853-0.619-1.572-1.446-2.161-2.476c-0.584-1.028-0.878-2.262-0.878-3.697
 | 
			
		||||
		c0-1.341,0.259-2.542,0.782-3.605c0.523-1.062,1.227-1.965,2.11-2.719c0.881-0.752,1.901-1.323,3.062-1.717
 | 
			
		||||
		c1.158-0.391,2.392-0.586,3.7-0.586c1.338,0,2.547,0.195,3.628,0.586h9.849v3.677h-5.979c0.493,0.523,0.932,1.17,1.323,1.935
 | 
			
		||||
		c0.394,0.771,0.589,1.629,0.589,2.576c0,1.309-0.244,2.472-0.734,3.479c-0.49,1.016-1.161,1.871-2.011,2.574
 | 
			
		||||
		c-0.852,0.703-1.846,1.232-2.988,1.59c-1.143,0.359-2.369,0.543-3.677,0.543c-0.586,0-1.216-0.066-1.889-0.198
 | 
			
		||||
		c-0.667-0.127-1.328-0.328-1.983-0.589c-1.112,0.721-1.666,1.552-1.666,2.501c0,0.881,0.409,1.521,1.224,1.912
 | 
			
		||||
		c0.815,0.394,1.993,0.589,3.529,0.589h5.096c3.142,0,5.464,0.452,6.988,1.346c1.518,0.899,2.277,2.383,2.277,4.438
 | 
			
		||||
		c0,1.146-0.32,2.222-0.955,3.234c-0.641,1.014-1.546,1.903-2.723,2.675c-1.175,0.764-2.597,1.37-4.266,1.811
 | 
			
		||||
		c-1.663,0.444-3.527,0.663-5.586,0.663c-3.4,0-6.076-0.548-8.036-1.646C73.827,63.184,72.846,61.57,72.846,59.448z M76.958,58.861
 | 
			
		||||
		c0,1.143,0.63,2.062,1.89,2.768c1.259,0.703,3.08,1.055,5.464,1.055c1.274,0,2.425-0.123,3.456-0.367
 | 
			
		||||
		c1.03-0.244,1.912-0.569,2.647-0.98c0.737-0.409,1.295-0.876,1.691-1.396c0.391-0.521,0.586-1.076,0.586-1.668
 | 
			
		||||
		c0-1.043-0.434-1.736-1.297-2.08c-0.866-0.346-2.166-0.516-3.897-0.516h-4.215c-0.751,0-1.419-0.023-2.006-0.074
 | 
			
		||||
		c-0.591-0.048-1.147-0.153-1.668-0.318c-0.983,0.556-1.666,1.13-2.062,1.716C77.159,57.586,76.958,58.204,76.958,58.861z
 | 
			
		||||
		 M83.773,44.4c1.374,0,2.547-0.454,3.532-1.37c0.978-0.917,1.47-2.188,1.47-3.821c0-1.572-0.493-2.829-1.47-3.775
 | 
			
		||||
		c-0.985-0.948-2.158-1.423-3.532-1.423s-2.549,0.475-3.529,1.423c-0.978,0.946-1.47,2.203-1.47,3.775
 | 
			
		||||
		c0,1.633,0.493,2.905,1.47,3.821C81.225,43.946,82.399,44.4,83.773,44.4z"/>
 | 
			
		||||
</g>
 | 
			
		||||
<path fill="#010101" d="M36.09,55.784h-4.107l-0.404-4.104h-0.203c-1.219,1.42-2.546,2.559-3.98,3.424
 | 
			
		||||
	c-1.438,0.857-3.101,1.289-4.994,1.289c-2.94,0-5.088-0.851-6.439-2.559c-1.353-1.707-2.027-4.2-2.027-7.479V33.906l-6.562-0.127
 | 
			
		||||
	l11.632-4.478l-0.051,3.382v13.013c0,2.199,0.389,3.812,1.168,4.842c0.777,1.033,2.11,1.549,4.004,1.549
 | 
			
		||||
	c1.285,0,2.458-0.314,3.524-0.941c1.063-0.625,2.207-1.682,3.423-3.166V30.993h5.02L36.09,55.784L36.09,55.784z"/>
 | 
			
		||||
<path fill="#010101" d="M44.406,30.992h4.106l0.405,4.007h0.2c1.252-1.287,2.604-2.376,4.059-3.271
 | 
			
		||||
	c1.449-0.896,3.144-1.343,5.07-1.343c2.905,0,5.038,0.863,6.389,2.584c1.351,1.722,2.028,4.21,2.028,7.455v15.359h-5.021V41.082
 | 
			
		||||
	c0-2.161-0.387-3.761-1.163-4.789c-0.777-1.033-2.113-1.551-4.007-1.551c-1.32,0-2.501,0.335-3.551,0.99
 | 
			
		||||
	c-1.046,0.66-2.217,1.646-3.499,2.968v17.083h-5.017V30.992L44.406,30.992z"/>
 | 
			
		||||
<path fill="#010101" d="M122.687,43.416c0-2.029,0.355-3.848,1.064-5.452c0.71-1.604,1.654-2.976,2.841-4.106
 | 
			
		||||
	c1.181-1.132,2.532-1.996,4.058-2.587c1.52-0.591,3.093-0.886,4.71-0.886c1.828,0,3.439,0.287,4.849,0.863
 | 
			
		||||
	c1.397,0.574,2.592,1.374,3.571,2.402c0.982,1.036,1.726,2.268,2.23,3.708c0.507,1.435,0.763,3.014,0.763,4.737
 | 
			
		||||
	c0,0.513-0.026,0.988-0.078,1.445c-0.051,0.46-0.107,0.838-0.178,1.14h-18.66c0.17,2.435,1.074,4.338,2.717,5.706
 | 
			
		||||
	c1.639,1.369,3.705,2.052,6.208,2.052c1.354,0,2.61-0.186,3.778-0.56c1.168-0.368,2.31-0.891,3.42-1.565l1.774,3.191
 | 
			
		||||
	c-1.279,0.812-2.729,1.495-4.332,2.055c-1.606,0.557-3.375,0.834-5.302,0.834c-1.86,0-3.604-0.293-5.243-0.886
 | 
			
		||||
	c-1.644-0.591-3.066-1.44-4.285-2.559c-1.22-1.115-2.175-2.478-2.866-4.083C123.033,47.258,122.687,45.441,122.687,43.416z
 | 
			
		||||
	 M142.105,41.237c0-2.234-0.577-3.941-1.725-5.126c-1.15-1.182-2.789-1.771-4.918-1.771c-1.859,0-3.517,0.589-4.97,1.771
 | 
			
		||||
	c-1.455,1.186-2.351,2.892-2.686,5.126H142.105z"/>
 | 
			
		||||
<path fill="#010101" d="M163.271,30.208l0.015,26.086h-5.02V37.248h-9.415L163.271,30.208z M160.344,25.094
 | 
			
		||||
	c-1.084,0-1.978-0.323-2.688-0.962c-0.707-0.643-1.062-1.506-1.062-2.587s0.354-1.95,1.062-2.61c0.711-0.66,1.604-0.988,2.688-0.988
 | 
			
		||||
	c1.08,0,1.979,0.328,2.688,0.988c0.709,0.66,1.066,1.529,1.066,2.61s-0.357,1.945-1.066,2.587
 | 
			
		||||
	C162.322,24.771,161.424,25.094,160.344,25.094z"/>
 | 
			
		||||
<path fill="#010101" d="M170.242,43.921c0-2.062,0.373-3.905,1.117-5.524c0.744-1.625,1.76-2.991,3.045-4.111
 | 
			
		||||
	c1.281-1.112,2.761-1.955,4.437-2.532c1.675-0.574,3.455-0.86,5.349-0.86c2.028,0,3.802,0.345,5.324,1.036
 | 
			
		||||
	c1.521,0.693,2.791,1.534,3.804,2.511l-2.434,3.194c-0.981-0.812-1.998-1.444-3.047-1.901c-1.043-0.457-2.179-0.684-3.396-0.684
 | 
			
		||||
	c-1.313,0-2.531,0.211-3.648,0.635c-1.112,0.422-2.071,1.021-2.862,1.799c-0.793,0.778-1.409,1.716-1.853,2.815
 | 
			
		||||
	c-0.438,1.097-0.657,2.31-0.657,3.623c0,1.318,0.211,2.529,0.635,3.628c0.422,1.098,1.028,2.034,1.824,2.812
 | 
			
		||||
	c0.795,0.773,1.732,1.38,2.814,1.801c1.081,0.419,2.279,0.63,3.6,0.63c1.521,0,2.892-0.285,4.105-0.858
 | 
			
		||||
	c1.217-0.576,2.312-1.267,3.297-2.08l2.13,3.246c-1.419,1.217-2.976,2.155-4.666,2.812c-1.688,0.658-3.448,0.988-5.272,0.988
 | 
			
		||||
	c-1.926,0-3.726-0.287-5.398-0.861c-1.674-0.571-3.117-1.419-4.337-2.536c-1.216-1.118-2.171-2.476-2.864-4.083
 | 
			
		||||
	C170.59,47.818,170.242,45.984,170.242,43.921z"/>
 | 
			
		||||
<path fill="#010101" d="M194.072,20.488l10.513-5.213v14.603l-0.306,5.576c1.252-1.282,2.603-2.366,4.06-3.245
 | 
			
		||||
	c1.453-0.876,3.144-1.315,5.069-1.315c2.904,0,5.035,0.86,6.388,2.584c1.351,1.724,2.026,4.209,2.026,7.456v15.36h-5.02V41.587
 | 
			
		||||
	c0-2.163-0.39-3.76-1.168-4.789c-0.774-1.03-2.107-1.549-4.002-1.549c-1.317,0-2.504,0.33-3.55,0.99
 | 
			
		||||
	c-1.049,0.659-2.217,1.647-3.5,2.968v17.085h-5.021l-0.104-36.017L194.072,20.488z"/>
 | 
			
		||||
<g>
 | 
			
		||||
	<polygon fill="#070404" points="222.766,9.28 221.074,12.812 242.092,12.901 243.783,9.3 	"/>
 | 
			
		||||
	<polygon fill="#070404" points="221.103,16.986 219.357,20.693 240.404,20.736 242.092,17.07 	"/>
 | 
			
		||||
	<polygon fill="#070404" points="225.205,24.898 234.847,4.372 238.561,4.425 229.031,24.903 	"/>
 | 
			
		||||
</g>
 | 
			
		||||
<g>
 | 
			
		||||
	<path fill="#010101" d="M110.112,47.722c0,1.663,0.416,2.867,1.251,3.604c0.833,0.732,1.917,1.104,3.258,1.104
 | 
			
		||||
		c0.652,0,1.325-0.084,2.012-0.248c0.686-0.164,1.455-0.425,2.304-0.785l1.176,3.631c-0.557,0.192-1.088,0.371-1.593,0.539
 | 
			
		||||
		c-0.512,0.162-1.021,0.297-1.544,0.412c-0.522,0.117-1.069,0.215-1.641,0.295c-0.574,0.08-1.202,0.125-1.888,0.125
 | 
			
		||||
		c-2.681,0-4.715-0.768-6.104-2.307c-1.389-1.536-2.081-3.755-2.081-6.665V14.792H97.42l12.691-8.943"/>
 | 
			
		||||
</g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 6.6 KiB  | 
| 
		 Before Width: | Height: | Size: 521 KiB  | 
| 
		 Before Width: | Height: | Size: 628 KiB  | 
| 
		 Before Width: | Height: | Size: 8.8 KiB  | 
| 
		 Before Width: | Height: | Size: 189 KiB  | 
| 
		 Before Width: | Height: | Size: 321 KiB  | 
| 
						 | 
				
			
			@ -1,71 +0,0 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 | 
			
		||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
 | 
			
		||||
<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 | 
			
		||||
	 width="250px" height="70px" viewBox="0 0 250 70" enable-background="new 0 0 250 70" xml:space="preserve">
 | 
			
		||||
<g>
 | 
			
		||||
	<path fill="#010101" d="M72.846,59.448c0-0.947,0.333-1.869,1.003-2.77c0.67-0.899,1.625-1.709,2.866-2.425v-0.201
 | 
			
		||||
		c-0.649-0.356-1.224-0.854-1.717-1.492c-0.486-0.638-0.732-1.463-0.732-2.474c0-0.784,0.254-1.577,0.762-2.379
 | 
			
		||||
		c0.502-0.8,1.216-1.511,2.133-2.13V45.38c-0.853-0.619-1.572-1.446-2.161-2.476c-0.584-1.028-0.878-2.262-0.878-3.697
 | 
			
		||||
		c0-1.341,0.259-2.542,0.782-3.605c0.523-1.062,1.227-1.965,2.11-2.719c0.881-0.752,1.901-1.323,3.062-1.717
 | 
			
		||||
		c1.158-0.391,2.392-0.586,3.7-0.586c1.338,0,2.547,0.195,3.628,0.586h9.849v3.677h-5.979c0.493,0.523,0.932,1.17,1.323,1.935
 | 
			
		||||
		c0.394,0.771,0.589,1.629,0.589,2.576c0,1.309-0.244,2.472-0.734,3.479c-0.49,1.016-1.161,1.871-2.011,2.574
 | 
			
		||||
		c-0.852,0.703-1.846,1.232-2.988,1.59c-1.143,0.359-2.369,0.543-3.677,0.543c-0.586,0-1.216-0.066-1.889-0.198
 | 
			
		||||
		c-0.667-0.127-1.328-0.328-1.983-0.589c-1.112,0.721-1.666,1.552-1.666,2.501c0,0.881,0.409,1.521,1.224,1.912
 | 
			
		||||
		c0.815,0.394,1.993,0.589,3.529,0.589h5.096c3.142,0,5.464,0.452,6.988,1.346c1.518,0.899,2.277,2.383,2.277,4.438
 | 
			
		||||
		c0,1.146-0.32,2.222-0.955,3.234c-0.641,1.014-1.546,1.903-2.723,2.675c-1.175,0.764-2.597,1.37-4.266,1.811
 | 
			
		||||
		c-1.663,0.444-3.527,0.663-5.586,0.663c-3.4,0-6.076-0.548-8.036-1.646C73.827,63.184,72.846,61.57,72.846,59.448z M76.958,58.861
 | 
			
		||||
		c0,1.143,0.63,2.062,1.89,2.768c1.259,0.703,3.08,1.055,5.464,1.055c1.274,0,2.425-0.123,3.456-0.367
 | 
			
		||||
		c1.03-0.244,1.912-0.569,2.647-0.98c0.737-0.409,1.295-0.876,1.691-1.396c0.391-0.521,0.586-1.076,0.586-1.668
 | 
			
		||||
		c0-1.043-0.434-1.736-1.297-2.08c-0.866-0.346-2.166-0.516-3.897-0.516h-4.215c-0.751,0-1.419-0.023-2.006-0.074
 | 
			
		||||
		c-0.591-0.048-1.147-0.153-1.668-0.318c-0.983,0.556-1.666,1.13-2.062,1.716C77.159,57.586,76.958,58.204,76.958,58.861z
 | 
			
		||||
		 M83.773,44.4c1.374,0,2.547-0.454,3.532-1.37c0.978-0.917,1.47-2.188,1.47-3.821c0-1.572-0.493-2.829-1.47-3.775
 | 
			
		||||
		c-0.985-0.948-2.158-1.423-3.532-1.423s-2.549,0.475-3.529,1.423c-0.978,0.946-1.47,2.203-1.47,3.775
 | 
			
		||||
		c0,1.633,0.493,2.905,1.47,3.821C81.225,43.946,82.399,44.4,83.773,44.4z"/>
 | 
			
		||||
</g>
 | 
			
		||||
<path fill="#010101" d="M36.09,55.784h-4.107l-0.404-4.104h-0.203c-1.219,1.42-2.546,2.559-3.98,3.424
 | 
			
		||||
	c-1.438,0.857-3.101,1.289-4.994,1.289c-2.94,0-5.088-0.851-6.439-2.559c-1.353-1.707-2.027-4.2-2.027-7.479V33.906l-6.562-0.127
 | 
			
		||||
	l11.632-4.478l-0.051,3.382v13.013c0,2.199,0.389,3.812,1.168,4.842c0.777,1.033,2.11,1.549,4.004,1.549
 | 
			
		||||
	c1.285,0,2.458-0.314,3.524-0.941c1.063-0.625,2.207-1.682,3.423-3.166V30.993h5.02L36.09,55.784L36.09,55.784z"/>
 | 
			
		||||
<path fill="#010101" d="M44.406,30.992h4.106l0.405,4.007h0.2c1.252-1.287,2.604-2.376,4.059-3.271
 | 
			
		||||
	c1.449-0.896,3.144-1.343,5.07-1.343c2.905,0,5.038,0.863,6.389,2.584c1.351,1.722,2.028,4.21,2.028,7.455v15.359h-5.021V41.082
 | 
			
		||||
	c0-2.161-0.387-3.761-1.163-4.789c-0.777-1.033-2.113-1.551-4.007-1.551c-1.32,0-2.501,0.335-3.551,0.99
 | 
			
		||||
	c-1.046,0.66-2.217,1.646-3.499,2.968v17.083h-5.017V30.992L44.406,30.992z"/>
 | 
			
		||||
<path fill="#010101" d="M122.687,43.416c0-2.029,0.355-3.848,1.064-5.452c0.71-1.604,1.654-2.976,2.841-4.106
 | 
			
		||||
	c1.181-1.132,2.532-1.996,4.058-2.587c1.52-0.591,3.093-0.886,4.71-0.886c1.828,0,3.439,0.287,4.849,0.863
 | 
			
		||||
	c1.397,0.574,2.592,1.374,3.571,2.402c0.982,1.036,1.726,2.268,2.23,3.708c0.507,1.435,0.763,3.014,0.763,4.737
 | 
			
		||||
	c0,0.513-0.026,0.988-0.078,1.445c-0.051,0.46-0.107,0.838-0.178,1.14h-18.66c0.17,2.435,1.074,4.338,2.717,5.706
 | 
			
		||||
	c1.639,1.369,3.705,2.052,6.208,2.052c1.354,0,2.61-0.186,3.778-0.56c1.168-0.368,2.31-0.891,3.42-1.565l1.774,3.191
 | 
			
		||||
	c-1.279,0.812-2.729,1.495-4.332,2.055c-1.606,0.557-3.375,0.834-5.302,0.834c-1.86,0-3.604-0.293-5.243-0.886
 | 
			
		||||
	c-1.644-0.591-3.066-1.44-4.285-2.559c-1.22-1.115-2.175-2.478-2.866-4.083C123.033,47.258,122.687,45.441,122.687,43.416z
 | 
			
		||||
	 M142.105,41.237c0-2.234-0.577-3.941-1.725-5.126c-1.15-1.182-2.789-1.771-4.918-1.771c-1.859,0-3.517,0.589-4.97,1.771
 | 
			
		||||
	c-1.455,1.186-2.351,2.892-2.686,5.126H142.105z"/>
 | 
			
		||||
<path fill="#010101" d="M163.271,30.208l0.015,26.086h-5.02V37.248h-9.415L163.271,30.208z M160.344,25.094
 | 
			
		||||
	c-1.084,0-1.978-0.323-2.688-0.962c-0.707-0.643-1.062-1.506-1.062-2.587s0.354-1.95,1.062-2.61c0.711-0.66,1.604-0.988,2.688-0.988
 | 
			
		||||
	c1.08,0,1.979,0.328,2.688,0.988c0.709,0.66,1.066,1.529,1.066,2.61s-0.357,1.945-1.066,2.587
 | 
			
		||||
	C162.322,24.771,161.424,25.094,160.344,25.094z"/>
 | 
			
		||||
<path fill="#010101" d="M170.242,43.921c0-2.062,0.373-3.905,1.117-5.524c0.744-1.625,1.76-2.991,3.045-4.111
 | 
			
		||||
	c1.281-1.112,2.761-1.955,4.437-2.532c1.675-0.574,3.455-0.86,5.349-0.86c2.028,0,3.802,0.345,5.324,1.036
 | 
			
		||||
	c1.521,0.693,2.791,1.534,3.804,2.511l-2.434,3.194c-0.981-0.812-1.998-1.444-3.047-1.901c-1.043-0.457-2.179-0.684-3.396-0.684
 | 
			
		||||
	c-1.313,0-2.531,0.211-3.648,0.635c-1.112,0.422-2.071,1.021-2.862,1.799c-0.793,0.778-1.409,1.716-1.853,2.815
 | 
			
		||||
	c-0.438,1.097-0.657,2.31-0.657,3.623c0,1.318,0.211,2.529,0.635,3.628c0.422,1.098,1.028,2.034,1.824,2.812
 | 
			
		||||
	c0.795,0.773,1.732,1.38,2.814,1.801c1.081,0.419,2.279,0.63,3.6,0.63c1.521,0,2.892-0.285,4.105-0.858
 | 
			
		||||
	c1.217-0.576,2.312-1.267,3.297-2.08l2.13,3.246c-1.419,1.217-2.976,2.155-4.666,2.812c-1.688,0.658-3.448,0.988-5.272,0.988
 | 
			
		||||
	c-1.926,0-3.726-0.287-5.398-0.861c-1.674-0.571-3.117-1.419-4.337-2.536c-1.216-1.118-2.171-2.476-2.864-4.083
 | 
			
		||||
	C170.59,47.818,170.242,45.984,170.242,43.921z"/>
 | 
			
		||||
<path fill="#010101" d="M194.072,20.488l10.513-5.213v14.603l-0.306,5.576c1.252-1.282,2.603-2.366,4.06-3.245
 | 
			
		||||
	c1.453-0.876,3.144-1.315,5.069-1.315c2.904,0,5.035,0.86,6.388,2.584c1.351,1.724,2.026,4.209,2.026,7.456v15.36h-5.02V41.587
 | 
			
		||||
	c0-2.163-0.39-3.76-1.168-4.789c-0.774-1.03-2.107-1.549-4.002-1.549c-1.317,0-2.504,0.33-3.55,0.99
 | 
			
		||||
	c-1.049,0.659-2.217,1.647-3.5,2.968v17.085h-5.021l-0.104-36.017L194.072,20.488z"/>
 | 
			
		||||
<g>
 | 
			
		||||
	<polygon fill="#070404" points="222.766,9.28 221.074,12.812 242.092,12.901 243.783,9.3 	"/>
 | 
			
		||||
	<polygon fill="#070404" points="221.103,16.986 219.357,20.693 240.404,20.736 242.092,17.07 	"/>
 | 
			
		||||
	<polygon fill="#070404" points="225.205,24.898 234.847,4.372 238.561,4.425 229.031,24.903 	"/>
 | 
			
		||||
</g>
 | 
			
		||||
<g>
 | 
			
		||||
	<path fill="#010101" d="M110.112,47.722c0,1.663,0.416,2.867,1.251,3.604c0.833,0.732,1.917,1.104,3.258,1.104
 | 
			
		||||
		c0.652,0,1.325-0.084,2.012-0.248c0.686-0.164,1.455-0.425,2.304-0.785l1.176,3.631c-0.557,0.192-1.088,0.371-1.593,0.539
 | 
			
		||||
		c-0.512,0.162-1.021,0.297-1.544,0.412c-0.522,0.117-1.069,0.215-1.641,0.295c-0.574,0.08-1.202,0.125-1.888,0.125
 | 
			
		||||
		c-2.681,0-4.715-0.768-6.104-2.307c-1.389-1.536-2.081-3.755-2.081-6.665V14.792H97.42l12.691-8.943"/>
 | 
			
		||||
</g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 6.6 KiB  | 
| 
		 Before Width: | Height: | Size: 1.2 MiB  | 
| 
		 Before Width: | Height: | Size: 879 KiB  | 
| 
		 Before Width: | Height: | Size: 2.7 MiB  | 
| 
		 Before Width: | Height: | Size: 1.1 MiB  | 
| 
		 Before Width: | Height: | Size: 56 KiB  | 
| 
		 Before Width: | Height: | Size: 618 KiB  | 
| 
		 Before Width: | Height: | Size: 262 KiB  | 
| 
		 Before Width: | Height: | Size: 506 KiB  | 
| 
		 Before Width: | Height: | Size: 119 KiB  | 
| 
		 Before Width: | Height: | Size: 26 KiB  | 
| 
		 Before Width: | Height: | Size: 1.4 MiB  | 
| 
		 Before Width: | Height: | Size: 1.3 MiB  | 
| 
		 Before Width: | Height: | Size: 360 KiB  | 
| 
		 Before Width: | Height: | Size: 833 KiB  | 
| 
		 Before Width: | Height: | Size: 143 KiB  | 
| 
		 Before Width: | Height: | Size: 27 KiB  | 
| 
		 Before Width: | Height: | Size: 710 KiB  | 
| 
		 Before Width: | Height: | Size: 665 KiB  | 
| 
		 Before Width: | Height: | Size: 3.1 KiB  | 
| 
		 Before Width: | Height: | Size: 436 KiB  | 
| 
		 Before Width: | Height: | Size: 237 KiB  | 
| 
		 Before Width: | Height: | Size: 1.2 MiB  | 
| 
		 Before Width: | Height: | Size: 92 KiB  | 
| 
		 Before Width: | Height: | Size: 269 KiB  | 
| 
		 Before Width: | Height: | Size: 209 KiB  | 
| 
		 Before Width: | Height: | Size: 114 KiB  | 
| 
		 Before Width: | Height: | Size: 1.6 MiB  | 
| 
		 Before Width: | Height: | Size: 184 KiB  | 
| 
		 Before Width: | Height: | Size: 181 KiB  |