Merge branch 'master' into task/3848/ungleich_page_optimize
This commit is contained in:
		
				commit
				
					
						801c840a4d
					
				
			
		
					 58 changed files with 1667 additions and 616 deletions
				
			
		
							
								
								
									
										11
									
								
								Changelog
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								Changelog
									
										
									
									
									
								
							| 
						 | 
					@ -1,7 +1,16 @@
 | 
				
			||||||
Next release:
 | 
					1.2.8: 2017-10-21
 | 
				
			||||||
 | 
					    * Remove ALLOWED_HOST alplora.ch
 | 
				
			||||||
 | 
					    * Add ALLOWED_HOST hack4glarus.ch
 | 
				
			||||||
 | 
					    * Fetch page_title and meta_description dynamically in glasfaser CMS template
 | 
				
			||||||
 | 
					1.2.7: 2017-10-20
 | 
				
			||||||
    * Bugfix: [dcl, hosting] Fix Stripe js error in confirm payment page
 | 
					    * Bugfix: [dcl, hosting] Fix Stripe js error in confirm payment page
 | 
				
			||||||
    * #3847: [ungleich] change text 'hosting products' -> 'our products'
 | 
					    * #3847: [ungleich] change text 'hosting products' -> 'our products'
 | 
				
			||||||
    * #3829: [dcl] Handle landing login fail in payment page itself
 | 
					    * #3829: [dcl] Handle landing login fail in payment page itself
 | 
				
			||||||
 | 
					    * #3794: [dcl, hosting] Update email styles
 | 
				
			||||||
 | 
					    * #3828: [dcl, hosting] invoice period set to show monthly subscription
 | 
				
			||||||
 | 
					    * #3838: [hosting] restyle signup/login/password reset/password pages
 | 
				
			||||||
 | 
					    * Bugfix: [dg] Remove validate email link in the registration email
 | 
				
			||||||
 | 
					    * Feature: [ungleich_page] Add new glasfaser CMS template
 | 
				
			||||||
1.2.6: 2017-10-10
 | 
					1.2.6: 2017-10-10
 | 
				
			||||||
    * Bugfix: [dcl] Refactor and optimize images, links in glasfaser page
 | 
					    * Bugfix: [dcl] Refactor and optimize images, links in glasfaser page
 | 
				
			||||||
    * Bugfix: [dcl] Fix email not being sent issue
 | 
					    * Bugfix: [dcl] Fix email not being sent issue
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@ msgid ""
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
					"Project-Id-Version: PACKAGE VERSION\n"
 | 
				
			||||||
"Report-Msgid-Bugs-To: \n"
 | 
					"Report-Msgid-Bugs-To: \n"
 | 
				
			||||||
"POT-Creation-Date: 2017-10-10 21:35+0530\n"
 | 
					"POT-Creation-Date: 2017-10-16 00:57+0530\n"
 | 
				
			||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
					"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
				
			||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
					"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
				
			||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
					"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
				
			||||||
| 
						 | 
					@ -126,56 +126,57 @@ msgstr ""
 | 
				
			||||||
msgid "Thank you!"
 | 
					msgid "Thank you!"
 | 
				
			||||||
msgstr "Vielen Dank!"
 | 
					msgstr "Vielen Dank!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Account Activation"
 | 
					msgid "Data Center Light Account Activation"
 | 
				
			||||||
msgstr "Account Aktivierung"
 | 
					msgstr "Data Center Light Account Aktivierung"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"\n"
 | 
					"You can activate your Data Center Light account by clicking <a href="
 | 
				
			||||||
"You can activate your Data Center Light account by <a href=\"%(base_url)s"
 | 
					"\"%(base_url)s%(activation_link)s\" style=\"text-decoration: none; color: "
 | 
				
			||||||
"%(activation_link)s\">clicking here</a>.<br/>\n"
 | 
					"#4382c8; font-weight: 400;\">here</a>."
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
 | 
					"Klicke <a href=\"%(base_url)s%(activation_link)s\"style=\"text-decoration: "
 | 
				
			||||||
 | 
					"none; color: #4382c8; font-weight: 400;\">here</a> um deinen Data Center "
 | 
				
			||||||
 | 
					"Light Account zu aktivieren."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid ""
 | 
				
			||||||
"You can also copy and paste the following link into the address bar of your "
 | 
					"You can also copy and paste the following link into the address bar of your "
 | 
				
			||||||
"browser<br/>\n"
 | 
					"browser to activate your Data Center Light account."
 | 
				
			||||||
"to activate your Data Center Light account.<br/>\n"
 | 
					msgstr "Kopiere den folgenden Link in die Adressleiste deines Browsers."
 | 
				
			||||||
"%(base_url)s%(activation_link)s\n"
 | 
					 | 
				
			||||||
msgstr ""
 | 
					 | 
				
			||||||
"\n"
 | 
					 | 
				
			||||||
"<a href=\"%(base_url)s%(activation_link)s\">Klicke hier</a> um deinen Data "
 | 
					 | 
				
			||||||
"Center Light Account zu aktivieren oder kopiere den folgenden Link in die "
 | 
					 | 
				
			||||||
"Adressleiste deines Browsers.<br/>\n"
 | 
					 | 
				
			||||||
"%(base_url)s%(activation_link)s\n"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#, python-format
 | 
					msgid "Your account details are as follows"
 | 
				
			||||||
msgid ""
 | 
					msgstr "Deine Account Details sind unten aufgelistet"
 | 
				
			||||||
"Your account details are as follows:<br/><br/>\n"
 | 
					 | 
				
			||||||
"Username : Your email address<br/>\n"
 | 
					 | 
				
			||||||
"Password : %(account_details)s<br/><br/>\n"
 | 
					 | 
				
			||||||
"You can reset your password here:\n"
 | 
					 | 
				
			||||||
"%(base_url)s%(reset_password_url)s\n"
 | 
					 | 
				
			||||||
msgstr ""
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#, python-format
 | 
					msgid "Username"
 | 
				
			||||||
msgid ""
 | 
					msgstr "Username"
 | 
				
			||||||
"You can activate your Data Center Light account by clicking here.\n"
 | 
					
 | 
				
			||||||
"You can also copy and paste the following link into the address bar of your "
 | 
					msgid "Your email address"
 | 
				
			||||||
"browser\n"
 | 
					msgstr "Deine E-Mail-Adresse"
 | 
				
			||||||
"to activate your Data Center Light account.\n"
 | 
					
 | 
				
			||||||
"%(base_url)s%(activation_link)s\n"
 | 
					msgid "Password"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Passwort"
 | 
				
			||||||
"Klicke hier, um deinen Data Center Light Account zu aktivieren oder kopiere "
 | 
					
 | 
				
			||||||
"den folgenden Link in die Adressleiste deines Browsers.\n"
 | 
					msgid "You can reset your password here"
 | 
				
			||||||
"%(base_url)s%(activation_link)s\n"
 | 
					msgstr "Du kannst dein Passwort hier zurück setzen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#, python-format
 | 
					 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"Your account details are as follows:\n"
 | 
					"You can copy and paste the following link into the address bar of your "
 | 
				
			||||||
"\n"
 | 
					"browser to activate your Data Center Light account."
 | 
				
			||||||
"Username : Your email address\n"
 | 
					msgstr "Kopiere den folgenden Link in die Adressleiste deines Browsers."
 | 
				
			||||||
"Password : %(account_details)s\n"
 | 
					
 | 
				
			||||||
"\n"
 | 
					msgid "Welcome to Data Center Light!"
 | 
				
			||||||
"You can reset your password here:\n"
 | 
					msgstr "Willkommen beim Data Center Light!"
 | 
				
			||||||
"%(base_url)s%(reset_password_url)s\n"
 | 
					
 | 
				
			||||||
msgstr ""
 | 
					msgid ""
 | 
				
			||||||
 | 
					"Thanks for joining us! We provide the most affordable virtual machines from "
 | 
				
			||||||
 | 
					"the heart of Switzerland."
 | 
				
			||||||
 | 
					msgstr "Bei uns findest Du die günstiges VMs aus der Schweiz."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Try now, order a VM. VM price starts from only 15CHF per month."
 | 
				
			||||||
 | 
					msgstr "Unser Angebot beginnt bei 15 CHF pro Monat. Probier's jetzt aus!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "ORDER VM"
 | 
				
			||||||
 | 
					msgstr "VM BESTELLEN"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Home"
 | 
					msgid "Home"
 | 
				
			||||||
msgstr "Home"
 | 
					msgstr "Home"
 | 
				
			||||||
| 
						 | 
					@ -512,6 +513,15 @@ msgstr ""
 | 
				
			||||||
"Deine VM ist gleich bereit. Wir senden Dir eine Bestätigungsemail, sobald Du "
 | 
					"Deine VM ist gleich bereit. Wir senden Dir eine Bestätigungsemail, sobald Du "
 | 
				
			||||||
"auf sie zugreifen kannst."
 | 
					"auf sie zugreifen kannst."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Processing..."
 | 
				
			||||||
 | 
					#~ msgstr "Abarbeitung..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Hold tight, we are processing your request"
 | 
				
			||||||
 | 
					#~ msgstr "Bitte warten - wir verbeiten Deine Anfrage gerade"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Some problem encountered. Please try again later."
 | 
				
			||||||
 | 
					#~ msgstr "Ein Problem ist aufgetreten. Bitte versuche es später noch einmal."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#~ msgid "Submit"
 | 
					#~ msgid "Submit"
 | 
				
			||||||
#~ msgstr "Absenden"
 | 
					#~ msgstr "Absenden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -530,15 +540,6 @@ msgstr ""
 | 
				
			||||||
#~ msgid "Order summary"
 | 
					#~ msgid "Order summary"
 | 
				
			||||||
#~ msgstr "Bestellungsübersicht"
 | 
					#~ msgstr "Bestellungsübersicht"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#~ msgid "Processing..."
 | 
					 | 
				
			||||||
#~ msgstr "Abarbeitung..."
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#~ msgid "Hold tight, we are processing your request"
 | 
					 | 
				
			||||||
#~ msgstr "Bitte warten - wir verbeiten Deine Anfrage gerade"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#~ msgid "Some problem encountered. Please try again later."
 | 
					 | 
				
			||||||
#~ msgstr "Ein Problem ist aufgetreten. Bitte versuche es später noch einmal."
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#~ msgid "We are cutting down the costs significantly!"
 | 
					#~ msgid "We are cutting down the costs significantly!"
 | 
				
			||||||
#~ msgstr "Wir sorgen dafür, dass die Kosten für Dich signifikant abnehmen"
 | 
					#~ msgstr "Wir sorgen dafür, dass die Kosten für Dich signifikant abnehmen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -560,9 +561,6 @@ msgstr ""
 | 
				
			||||||
#~ "kontaktiere uns unter support@datacenterlight.ch. Unser Team wird sich "
 | 
					#~ "kontaktiere uns unter support@datacenterlight.ch. Unser Team wird sich "
 | 
				
			||||||
#~ "umgehend um dein Anliegen kümmern!"
 | 
					#~ "umgehend um dein Anliegen kümmern!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#~ msgid "Email Address"
 | 
					 | 
				
			||||||
#~ msgstr "E-Mail-Adresse"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#~ msgid "is not a proper name"
 | 
					#~ msgid "is not a proper name"
 | 
				
			||||||
#~ msgstr "ist kein gültiger Name"
 | 
					#~ msgstr "ist kein gültiger Name"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -182,7 +182,11 @@ button, input, optgroup, select, textarea {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.navbar-brand {
 | 
					.navbar-brand {
 | 
				
			||||||
    padding: 10px 15px;
 | 
					    padding: 10px 15px;
 | 
				
			||||||
    cursor: pointer;
 | 
					}
 | 
				
			||||||
 | 
					@media (max-width: 767px) {
 | 
				
			||||||
 | 
					    .navbar-brand {
 | 
				
			||||||
 | 
					        padding: 10px 10px;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.navbar-right {
 | 
					.navbar-right {
 | 
				
			||||||
| 
						 | 
					@ -1544,7 +1548,7 @@ tech-sub-sec h2 {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
footer {
 | 
					footer {
 | 
				
			||||||
    padding: 50px 0;
 | 
					    padding: 50px 20px;
 | 
				
			||||||
    background-color: #f8f8f8;
 | 
					    background-color: #f8f8f8;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								datacenterlight/static/datacenterlight/img/logo_black.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								datacenterlight/static/datacenterlight/img/logo_black.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 7.3 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 181 KiB After Width: | Height: | Size: 58 KiB  | 
| 
						 | 
					@ -5,6 +5,7 @@ from celery.utils.log import get_task_logger
 | 
				
			||||||
from celery import current_task
 | 
					from celery import current_task
 | 
				
			||||||
from django.conf import settings
 | 
					from django.conf import settings
 | 
				
			||||||
from django.core.mail import EmailMessage
 | 
					from django.core.mail import EmailMessage
 | 
				
			||||||
 | 
					from django.core.urlresolvers import reverse
 | 
				
			||||||
from django.utils import translation
 | 
					from django.utils import translation
 | 
				
			||||||
from django.utils.translation import ugettext_lazy as _
 | 
					from django.utils.translation import ugettext_lazy as _
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -131,9 +132,9 @@ def create_vm_task(self, vm_template_id, user, specs, template,
 | 
				
			||||||
            'storage': specs.get('disk_size'),
 | 
					            'storage': specs.get('disk_size'),
 | 
				
			||||||
            'price': specs.get('price'),
 | 
					            'price': specs.get('price'),
 | 
				
			||||||
            'template': template.get('name'),
 | 
					            'template': template.get('name'),
 | 
				
			||||||
            'vm.name': vm['name'],
 | 
					            'vm_name': vm.get('name'),
 | 
				
			||||||
            'vm.id': vm['vm_id'],
 | 
					            'vm_id': vm['vm_id'],
 | 
				
			||||||
            'order.id': order.id
 | 
					            'order_id': order.id
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        email_data = {
 | 
					        email_data = {
 | 
				
			||||||
            'subject': settings.DCL_TEXT + " Order from %s" % context['email'],
 | 
					            'subject': settings.DCL_TEXT + " Order from %s" % context['email'],
 | 
				
			||||||
| 
						 | 
					@ -155,13 +156,14 @@ def create_vm_task(self, vm_template_id, user, specs, template,
 | 
				
			||||||
            translation.activate(lang)
 | 
					            translation.activate(lang)
 | 
				
			||||||
            # Send notification to the user as soon as VM has been booked
 | 
					            # Send notification to the user as soon as VM has been booked
 | 
				
			||||||
            context = {
 | 
					            context = {
 | 
				
			||||||
                'vm': vm,
 | 
					 | 
				
			||||||
                'order': order,
 | 
					 | 
				
			||||||
                'base_url': "{0}://{1}".format(user.get('request_scheme'),
 | 
					                'base_url': "{0}://{1}".format(user.get('request_scheme'),
 | 
				
			||||||
                                               user.get('request_host')),
 | 
					                                               user.get('request_host')),
 | 
				
			||||||
 | 
					                'order_url': reverse('hosting:orders',
 | 
				
			||||||
 | 
					                                     kwargs={'pk': order.id}),
 | 
				
			||||||
                'page_header': _(
 | 
					                'page_header': _(
 | 
				
			||||||
                    'Your New VM %(vm_name)s at Data Center Light') % {
 | 
					                    'Your New VM %(vm_name)s at Data Center Light') % {
 | 
				
			||||||
                                   'vm_name': vm.get('name')}
 | 
					                    'vm_name': vm.get('name')},
 | 
				
			||||||
 | 
					                'vm_name': vm.get('name')
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            email_data = {
 | 
					            email_data = {
 | 
				
			||||||
                'subject': context.get('page_header'),
 | 
					                'subject': context.get('page_header'),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,24 +1,58 @@
 | 
				
			||||||
{% extends "datacenterlight/emails/base_email_datacenterlight.html" %}
 | 
					{% load static i18n %}
 | 
				
			||||||
{% load static from staticfiles %}
 | 
					<!DOCTYPE html>
 | 
				
			||||||
{% load i18n %}
 | 
					<html>
 | 
				
			||||||
{% block email_head %}
 | 
					
 | 
				
			||||||
{{dcl_text}} {% trans 'Account Activation' %}
 | 
					<head>
 | 
				
			||||||
{% endblock %}
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
{% block email_body %}
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
				
			||||||
{% blocktrans %}
 | 
					    <title>{% trans "Data Center Light Account Activation" %}</title>
 | 
				
			||||||
You can activate your Data Center Light account by <a href="{{base_url}}{{activation_link}}">clicking here</a>.<br/>
 | 
					    <link rel="shortcut icon" href="{{ base_url }}{% static 'datacenterlight/img/favicon.ico' %}" type="image/x-icon">
 | 
				
			||||||
You can also copy and paste the following link into the address bar of your browser<br/>
 | 
					    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,400">
 | 
				
			||||||
to activate your Data Center Light account.<br/>
 | 
					</head>
 | 
				
			||||||
{{base_url}}{{activation_link}}
 | 
					
 | 
				
			||||||
{% endblocktrans %}
 | 
					<body style="margin: 0; padding: 20px 0;">
 | 
				
			||||||
{% if account_details %}
 | 
					    <table style="width: 100%; border-spacing: 0; border-collapse: collapse; max-width: 560px;">
 | 
				
			||||||
{% url 'hosting:reset_password' as reset_password_url %}
 | 
					        <tr>
 | 
				
			||||||
<br/><br/>
 | 
					            <td>
 | 
				
			||||||
{% blocktrans %}Your account details are as follows:<br/><br/>
 | 
					                <img src="{{ base_url }}{% static 'datacenterlight/img/logo_black.png' %}" style="width: 200px; height: 50px;">
 | 
				
			||||||
Username : Your email address<br/>
 | 
					            </td>
 | 
				
			||||||
Password : {{account_details}}<br/><br/>
 | 
					        </tr>
 | 
				
			||||||
You can reset your password here:
 | 
					        <tr>
 | 
				
			||||||
{{base_url}}{{reset_password_url}}
 | 
					            <td style="padding-top: 15px;">
 | 
				
			||||||
{% endblocktrans %}
 | 
					                <h1 style="font-family: Lato, Arial, sans-serif; font-size: 25px; font-weight: 400; margin: 0;">{% trans "Data Center Light Account Activation" %}</h1>
 | 
				
			||||||
{% endif %}
 | 
					            </td>
 | 
				
			||||||
{% endblock %}
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 25px; font-size: 16px;">
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin-bottom: 10px; margin-top: 0;">
 | 
				
			||||||
 | 
					                    {% blocktrans %}You can activate your Data Center Light account by clicking <a href="{{base_url}}{{activation_link}}" style="text-decoration: none; color: #4382c8; font-weight: 400;">here</a>.{% endblocktrans %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin-bottom: 10px; margin-top: 0;">
 | 
				
			||||||
 | 
					                    {% blocktrans %}You can also copy and paste the following link into the address bar of your browser to activate your Data Center Light account.{% endblocktrans %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					                <p style="color: #4382c8; line-height: 1.4; font-family: Lato, Arial, sans-serif; font-weight: 300; margin: 0;">
 | 
				
			||||||
 | 
					                    {{base_url}}{{activation_link}}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					                <p>
 | 
				
			||||||
 | 
					                    {% if account_details %}
 | 
				
			||||||
 | 
					                        {% url 'hosting:reset_password' as reset_password_url %}
 | 
				
			||||||
 | 
					                        {% trans "Your account details are as follows" %}:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        {% trans "Username" %} : {% trans "Your email address" %}
 | 
				
			||||||
 | 
					                        {% trans "Password" %} : {{account_details}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        {% trans "You can reset your password here" %}:
 | 
				
			||||||
 | 
					                        {{base_url}}{{reset_password_url}}
 | 
				
			||||||
 | 
					                    {% endif %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 40px; padding-bottom: 25px;">
 | 
				
			||||||
 | 
					                <h3 style="font-family: Lato, Arial, sans-serif; margin: 0; font-weight: 400; font-size: 15px;">{% trans "Your Data Center Light Team" %}</h3>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					    </table>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,21 +1,20 @@
 | 
				
			||||||
{% extends "datacenterlight/emails/base_email_datacenterlight.txt" %}
 | 
					 | 
				
			||||||
{% load i18n %}
 | 
					{% load i18n %}
 | 
				
			||||||
{% block email_head %}{{dcl_text}} {% trans 'Account Activation' %}{% endblock %}
 | 
					
 | 
				
			||||||
{% block email_body %}
 | 
					{% trans "Data Center Light Account Activation" %}
 | 
				
			||||||
{% blocktrans %}You can activate your Data Center Light account by clicking here.
 | 
					
 | 
				
			||||||
You can also copy and paste the following link into the address bar of your browser
 | 
					{% blocktrans %}You can copy and paste the following link into the address bar of your browser to activate your Data Center Light account.{% endblocktrans %}
 | 
				
			||||||
to activate your Data Center Light account.
 | 
					
 | 
				
			||||||
{{base_url}}{{activation_link}}
 | 
					{{base_url}}{{activation_link}}
 | 
				
			||||||
{% endblocktrans %}
 | 
					
 | 
				
			||||||
{% if account_details %}
 | 
					{% if account_details %}
 | 
				
			||||||
{% url 'hosting:reset_password' as reset_password_url %}
 | 
					    {% url 'hosting:reset_password' as reset_password_url %}
 | 
				
			||||||
{% blocktrans %}Your account details are as follows:
 | 
					    {% trans "Your account details are as follows" %}:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Username : Your email address
 | 
					    {% trans "Username" %} : {% trans "Your email address" %}
 | 
				
			||||||
Password : {{account_details}}
 | 
					    {% trans "Password" %} : {{account_details}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can reset your password here:
 | 
					    {% trans "You can reset your password here" %}:
 | 
				
			||||||
{{base_url}}{{reset_password_url}}
 | 
					    {{base_url}}{{reset_password_url}}
 | 
				
			||||||
{% endblocktrans %}
 | 
					 | 
				
			||||||
{% endif %}
 | 
					{% endif %}
 | 
				
			||||||
{% endblock %}
 | 
					
 | 
				
			||||||
 | 
					{% trans "Your Data Center Light Team" %}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,48 @@
 | 
				
			||||||
 | 
					{% load static i18n %}
 | 
				
			||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
				
			||||||
 | 
					    <title>{% trans "Welcome to Data Center Light!" %}</title>
 | 
				
			||||||
 | 
					    <link rel="shortcut icon" href="{{ base_url }}{% static 'datacenterlight/img/favicon.ico' %}" type="image/x-icon">
 | 
				
			||||||
 | 
					    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,400">
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<body style="margin: 0; padding: 20px 0;">
 | 
				
			||||||
 | 
					    <table style="width: 100%; border-spacing: 0; border-collapse: collapse; max-width: 560px;">
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td>
 | 
				
			||||||
 | 
					                <img src="{{ base_url }}{% static 'datacenterlight/img/logo_black.png' %}" style="width: 200px; height: 50px;">
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 15px;">
 | 
				
			||||||
 | 
					                <h1 style="font-family: Lato, Arial, sans-serif; font-size: 25px; font-weight: 400; margin: 0;">{% trans "Welcome to Data Center Light!" %}</h1>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 25px; font-size: 16px;">
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin: 0;">
 | 
				
			||||||
 | 
					                    {% blocktrans %}Thanks for joining us! We provide the most affordable virtual machines from the heart of Switzerland.{% endblocktrans %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin: 0;">
 | 
				
			||||||
 | 
					                    {% blocktrans %}Try now, order a VM. VM price starts from only 15CHF per month.{% endblocktrans %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 30px;">
 | 
				
			||||||
 | 
					                <a class="btn" href="{{ base_url }}{% url 'hosting:create_virtual_machine' %}" style="font-family: Lato, Arial, sans-serif; text-decoration: none; background-color: #1596da; color: #fff; padding-top: 10px; padding-bottom: 10px; padding-left: 30px; padding-right: 30px; letter-spacing: 0.5px; border-radius: 3px; display: inline-block;">{% trans "ORDER VM" %}</a>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 40px; padding-bottom: 25px;">
 | 
				
			||||||
 | 
					                <h3 style="font-family: Lato, Arial, sans-serif; margin: 0; font-weight: 400; font-size: 15px;">{% trans "Your Data Center Light Team" %}</h3>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					    </table>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					{% load i18n %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% trans "Welcome to Data Center Light!" %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% blocktrans %}Thanks for joining us! We provide the most affordable virtual machines from the heart of Switzerland.{% endblocktrans %}
 | 
				
			||||||
 | 
					{% blocktrans %}Try now, order a VM. VM price starts from only 15CHF per month.{% endblocktrans %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{ base_url }}{% url 'hosting:create_virtual_machine' %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% trans "Your Data Center Light Team" %}
 | 
				
			||||||
| 
						 | 
					@ -1,38 +1,39 @@
 | 
				
			||||||
    {% load staticfiles i18n%}
 | 
					{% load staticfiles i18n%}
 | 
				
			||||||
{% get_current_language as LANGUAGE_CODE %}
 | 
					{% get_current_language as LANGUAGE_CODE %}
 | 
				
			||||||
    <footer>
 | 
					 | 
				
			||||||
        <div class="container">
 | 
					 | 
				
			||||||
            <ul class="list-inline">
 | 
					 | 
				
			||||||
                {% if request.resolver_match.url_name != "index" %}
 | 
					 | 
				
			||||||
                    <li>
 | 
					 | 
				
			||||||
                       <a href="{% url 'datacenterlight:index' %}">{% trans "Home" %}</a>
 | 
					 | 
				
			||||||
                    </li>
 | 
					 | 
				
			||||||
                    <li class="footer-menu-divider">⋅</li>
 | 
					 | 
				
			||||||
                {% endif %}
 | 
					 | 
				
			||||||
                <li>
 | 
					 | 
				
			||||||
                    <a class="url-init" href="{% url 'datacenterlight:index' %}#how">{% trans "Highlights" %}</a>
 | 
					 | 
				
			||||||
                </li>
 | 
					 | 
				
			||||||
                <li>
 | 
					 | 
				
			||||||
                    <a class="url-init" href="{% url 'datacenterlight:index' %}#your">{% trans "Scale out" %}</a>
 | 
					 | 
				
			||||||
                </li>
 | 
					 | 
				
			||||||
               <li>
 | 
					 | 
				
			||||||
                    <a class="url-init" href="{% url 'datacenterlight:index' %}#our">{% trans "Reliable and light" %}</a>
 | 
					 | 
				
			||||||
                </li>
 | 
					 | 
				
			||||||
                {% if request.resolver_match.url_name != "index" %}
 | 
					 | 
				
			||||||
                    <li>
 | 
					 | 
				
			||||||
                        <a class="url-init" href="{% url 'datacenterlight:index' %}#price">{% trans "Pricing" %}</a>
 | 
					 | 
				
			||||||
                    </li>
 | 
					 | 
				
			||||||
                    <li class="footer-menu-divider">⋅</li>
 | 
					 | 
				
			||||||
                {% else %}
 | 
					 | 
				
			||||||
                    <li>
 | 
					 | 
				
			||||||
                        <a class="url-init" href="{% url 'datacenterlight:index' %}#price">{% trans "Order VM" %}</a>
 | 
					 | 
				
			||||||
                    </li>
 | 
					 | 
				
			||||||
                {% endif %}
 | 
					 | 
				
			||||||
                <li>
 | 
					 | 
				
			||||||
                    <a class="url-init" href="{% url 'datacenterlight:index' %}#contact">{% trans "Contact" %}</a>
 | 
					 | 
				
			||||||
                </li>
 | 
					 | 
				
			||||||
            </ul>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. {% trans "All Rights Reserved" %}</p>
 | 
					<footer>
 | 
				
			||||||
        </div>
 | 
					    <div class="container">
 | 
				
			||||||
    </footer>
 | 
					        <ul class="list-inline">
 | 
				
			||||||
 | 
					            {% if request.resolver_match.url_name != "index" %}
 | 
				
			||||||
 | 
					                <li>
 | 
				
			||||||
 | 
					                   <a href="{% url 'datacenterlight:index' %}">{% trans "Home" %}</a>
 | 
				
			||||||
 | 
					                </li>
 | 
				
			||||||
 | 
					                <li class="footer-menu-divider">⋅</li>
 | 
				
			||||||
 | 
					            {% endif %}
 | 
				
			||||||
 | 
					            <li>
 | 
				
			||||||
 | 
					                <a class="url-init" href="{% url 'datacenterlight:index' %}#how">{% trans "Highlights" %}</a>
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					            <li>
 | 
				
			||||||
 | 
					                <a class="url-init" href="{% url 'datacenterlight:index' %}#your">{% trans "Scale out" %}</a>
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					           <li>
 | 
				
			||||||
 | 
					                <a class="url-init" href="{% url 'datacenterlight:index' %}#our">{% trans "Reliable and light" %}</a>
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					            {% if request.resolver_match.url_name != "index" %}
 | 
				
			||||||
 | 
					                <li>
 | 
				
			||||||
 | 
					                    <a class="url-init" href="{% url 'datacenterlight:index' %}#price">{% trans "Pricing" %}</a>
 | 
				
			||||||
 | 
					                </li>
 | 
				
			||||||
 | 
					                <li class="footer-menu-divider">⋅</li>
 | 
				
			||||||
 | 
					            {% else %}
 | 
				
			||||||
 | 
					                <li>
 | 
				
			||||||
 | 
					                    <a class="url-init" href="{% url 'datacenterlight:index' %}#price">{% trans "Order VM" %}</a>
 | 
				
			||||||
 | 
					                </li>
 | 
				
			||||||
 | 
					            {% endif %}
 | 
				
			||||||
 | 
					            <li>
 | 
				
			||||||
 | 
					                <a class="url-init" href="{% url 'datacenterlight:index' %}#contact">{% trans "Contact" %}</a>
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					        </ul>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. {% trans "All Rights Reserved" %}</p>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					</footer>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -218,6 +218,7 @@ CMS_TEMPLATES = (
 | 
				
			||||||
    ('page.html', gettext('Page')),
 | 
					    ('page.html', gettext('Page')),
 | 
				
			||||||
    # dcl
 | 
					    # dcl
 | 
				
			||||||
    ('datacenterlight/cms_page.html', gettext('Data Center Light')),
 | 
					    ('datacenterlight/cms_page.html', gettext('Data Center Light')),
 | 
				
			||||||
 | 
					    ('ungleich_page/glasfaser_cms_page.html', gettext('Glasfaser')),
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DATABASES = {
 | 
					DATABASES = {
 | 
				
			||||||
| 
						 | 
					@ -347,8 +348,6 @@ MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
 | 
				
			||||||
MEDIA_URL = APP_ROOT_ENDPOINT + 'media/'
 | 
					MEDIA_URL = APP_ROOT_ENDPOINT + 'media/'
 | 
				
			||||||
FILE_UPLOAD_PERMISSIONS = 0o644
 | 
					FILE_UPLOAD_PERMISSIONS = 0o644
 | 
				
			||||||
 | 
					
 | 
				
			||||||
META_SITE_PROTOCOL = 'http'
 | 
					 | 
				
			||||||
META_USE_SITES = True
 | 
					 | 
				
			||||||
MIGRATION_MODULES = {
 | 
					MIGRATION_MODULES = {
 | 
				
			||||||
    'cms': 'cms.migrations',
 | 
					    'cms': 'cms.migrations',
 | 
				
			||||||
    # 'filer': 'filer.migrations_django',
 | 
					    # 'filer': 'filer.migrations_django',
 | 
				
			||||||
| 
						 | 
					@ -359,9 +358,6 @@ MIGRATION_MODULES = {
 | 
				
			||||||
    'djangocms_link': 'djangocms_link.migrations_django',
 | 
					    'djangocms_link': 'djangocms_link.migrations_django',
 | 
				
			||||||
    'djangocms_teaser': 'djangocms_teaser.migrations_django',
 | 
					    'djangocms_teaser': 'djangocms_teaser.migrations_django',
 | 
				
			||||||
    'djangocms_column': 'djangocms_column.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',
 | 
					    'djangocms_style': 'djangocms_style.migrations_django',
 | 
				
			||||||
    'cmsplugin_filer_image': 'cmsplugin_filer_image.migrations_django',
 | 
					    'cmsplugin_filer_image': 'cmsplugin_filer_image.migrations_django',
 | 
				
			||||||
    'cmsplugin_filer_file': 'cmsplugin_filer_file.migrations_django',
 | 
					    'cmsplugin_filer_file': 'cmsplugin_filer_file.migrations_django',
 | 
				
			||||||
| 
						 | 
					@ -495,11 +491,10 @@ AUTH_USER_MODEL = 'membership.CustomUser'
 | 
				
			||||||
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
 | 
					STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# EMAIL MESSAGES
 | 
					# EMAIL MESSAGES
 | 
				
			||||||
REGISTRATION_MESSAGE = {'subject': "Validation mail",
 | 
					REGISTRATION_MESSAGE = {
 | 
				
			||||||
                        'message': 'Thank You for registering for account on Digital Glarus.\n'
 | 
					    'subject': "Digital Glarus registration",
 | 
				
			||||||
                                   'Please verify Your account under following link '
 | 
					    'message': 'Thank You for registering for account on Digital Glarus.'
 | 
				
			||||||
                                   'http://{host}/en-us/digitalglarus/login/validate/{slug}',
 | 
					}
 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
STRIPE_API_PRIVATE_KEY = env('STRIPE_API_PRIVATE_KEY')
 | 
					STRIPE_API_PRIVATE_KEY = env('STRIPE_API_PRIVATE_KEY')
 | 
				
			||||||
STRIPE_API_PUBLIC_KEY = env('STRIPE_API_PUBLIC_KEY')
 | 
					STRIPE_API_PUBLIC_KEY = env('STRIPE_API_PUBLIC_KEY')
 | 
				
			||||||
STRIPE_API_PRIVATE_KEY_TEST = env('STRIPE_API_PRIVATE_KEY_TEST')
 | 
					STRIPE_API_PRIVATE_KEY_TEST = env('STRIPE_API_PRIVATE_KEY_TEST')
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,5 +31,5 @@ ALLOWED_HOSTS = [
 | 
				
			||||||
    ".ipv6onlyhosting.com",
 | 
					    ".ipv6onlyhosting.com",
 | 
				
			||||||
    ".ipv6onlyhosting.net",
 | 
					    ".ipv6onlyhosting.net",
 | 
				
			||||||
    ".digitalglarus.ch",
 | 
					    ".digitalglarus.ch",
 | 
				
			||||||
    ".alplora.ch"
 | 
					    ".hack4glarus.ch"
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@ msgid ""
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
					"Project-Id-Version: PACKAGE VERSION\n"
 | 
				
			||||||
"Report-Msgid-Bugs-To: \n"
 | 
					"Report-Msgid-Bugs-To: \n"
 | 
				
			||||||
"POT-Creation-Date: 2017-10-10 21:35+0530\n"
 | 
					"POT-Creation-Date: 2017-10-16 01:06+0530\n"
 | 
				
			||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
					"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
				
			||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
					"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
				
			||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
					"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
				
			||||||
| 
						 | 
					@ -155,9 +155,6 @@ msgstr "Ich möchte einen existierenden SSH-Key nutzen"
 | 
				
			||||||
msgid "Upload"
 | 
					msgid "Upload"
 | 
				
			||||||
msgstr "Hochladen"
 | 
					msgstr "Hochladen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Your VM hosted in Switzerland"
 | 
					 | 
				
			||||||
msgstr "Deine VM in der Schweiz"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
msgid "Set your new password"
 | 
					msgid "Set your new password"
 | 
				
			||||||
msgstr "Setze Dein neues Passwort"
 | 
					msgstr "Setze Dein neues Passwort"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -195,101 +192,78 @@ msgid "Support / Contact"
 | 
				
			||||||
msgstr "Support / Kontakt"
 | 
					msgstr "Support / Kontakt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid ""
 | 
					msgid "Your New VM %(vm_name)s"
 | 
				
			||||||
"You have ordered a new virtual machine!\n"
 | 
					msgstr "Deine Neue VM %(vm_name)s"
 | 
				
			||||||
"<br/>\n"
 | 
					 | 
				
			||||||
"Your order of [%(vm_name)s] has been charged.<br/><br/>\n"
 | 
					 | 
				
			||||||
"You can view your invoice by clicking the button below.<br/><br/>\n"
 | 
					 | 
				
			||||||
msgstr ""
 | 
					 | 
				
			||||||
"Du hast eine neue virtuelle Maschine bestellt!<br/>\n"
 | 
					 | 
				
			||||||
"Deine Bestellung von [%(vm_name)s] wurde erhoben.<br/><br/>\n"
 | 
					 | 
				
			||||||
"Um die Rechnung zu sehen, klicke auf den Button unten.<br/><br/>\n"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "View Invoice"
 | 
					msgid "You have ordered a new virtual machine!"
 | 
				
			||||||
msgstr "Zur Rechnung"
 | 
					msgstr "Du hast eine neue virtuelle Maschine bestellt!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid ""
 | 
					msgid "Your order of <strong>%(vm_name)s</strong> has been charged."
 | 
				
			||||||
"You have ordered a new virtual machine!\n"
 | 
					msgstr "Deine Bestellung von <strong>%(vm_name)s</strong> wurde erhoben."
 | 
				
			||||||
"Your order of [%(vm_name)s] has been charged.\n"
 | 
					
 | 
				
			||||||
"You can view your invoice here.\n"
 | 
					msgid "You can view your VM detail by clicking the button below."
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Um die Rechnung zu sehen, klicke auf den Button unten."
 | 
				
			||||||
"Du hast eine neue virtuelle Maschine bestellt!\n"
 | 
					
 | 
				
			||||||
"Deine Bestellung von [%(vm_name)s] wurde erhoben.\n"
 | 
					msgid "View Detail"
 | 
				
			||||||
"Um die Rechnung zu sehen, klicke hier.\n"
 | 
					msgstr "Details anzeigen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Your Data Center Light Team"
 | 
				
			||||||
 | 
					msgstr "Dein Data Center Light Team"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, python-format
 | 
				
			||||||
 | 
					msgid "Your order of %(vm_name)s has been charged."
 | 
				
			||||||
 | 
					msgstr "Deine Bestellung von %(vm_name)s wurde erhoben."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "You can view your VM detail by following the link below."
 | 
				
			||||||
 | 
					msgstr "Um die Rechnung zu sehen, klicke auf den Link unten."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Password Reset"
 | 
					msgid "Password Reset"
 | 
				
			||||||
msgstr "Passwort zurücksetzen"
 | 
					msgstr "Passwort zurücksetzen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#, python-format
 | 
					msgid "We received a request to reset your password."
 | 
				
			||||||
msgid ""
 | 
					msgstr "Wir haben eine Anfrage erhalten, um Dein Passwort zurückzusetzen."
 | 
				
			||||||
"\n"
 | 
					
 | 
				
			||||||
"You're receiving this email because you requested a password reset for your "
 | 
					msgid "If you didn't make this request you can safely ignore this email."
 | 
				
			||||||
"user account at %(site_name)s.<br/>\n"
 | 
					 | 
				
			||||||
"Please go to the following page and choose a new password: %(base_url)s"
 | 
					 | 
				
			||||||
"%(password_reset_url)s<br/>\n"
 | 
					 | 
				
			||||||
"If you didn't request a new password, ignore this e-mail.<br/>\n"
 | 
					 | 
				
			||||||
"Thank you!\n"
 | 
					 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"\n"
 | 
					"Falls Du kein neues Passwort angefragt hast, kannst Du diese E-mail "
 | 
				
			||||||
"Du erhälst diese E-Mail da Du Dein Passwort für Deinen Account bei "
 | 
					"ignorieren."
 | 
				
			||||||
"%(site_name)s zurücksetzen möchtest.<br/>\n"
 | 
					
 | 
				
			||||||
"Bitte folge diesem Link und wähle ein neues Passwort: %(base_url)s"
 | 
					msgid "Otherwise, click here to reset your password."
 | 
				
			||||||
"%(password_reset_url)s Solltest Du kein neues Passwort angefordert haben, "
 | 
					msgstr "Andernfalls klicke hier, um Dein Passwort zurückzusetzen."
 | 
				
			||||||
"dann ignoriere diese E-Mail.<br/>\n"
 | 
					
 | 
				
			||||||
"Dankeschön!\n"
 | 
					msgid "Thank you!"
 | 
				
			||||||
 | 
					msgstr "Dankeschön!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Virtual Machine Cancellation"
 | 
				
			||||||
 | 
					msgstr "VM Kündigung"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"You're receiving this email because you requested a password reset for your "
 | 
					"You are receiving this email because your virutal machine <strong>"
 | 
				
			||||||
"user account at %(site_name)s.\n"
 | 
					"%(vm_name)s</strong> has been cancelled."
 | 
				
			||||||
"Please go to the following page and choose a new password: %(base_url)s"
 | 
					 | 
				
			||||||
"%(password_reset_url)s\n"
 | 
					 | 
				
			||||||
"If you didn't request a new password, ignore this e-mail.\n"
 | 
					 | 
				
			||||||
"Thank you!\n"
 | 
					 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Du erhälst diese E-Mail da Du Dein Passwort für Deinen Account bei "
 | 
					"Du erhälst diese E-Mail, da deine virtuelle Maschine <strong>%(vm_name)s</"
 | 
				
			||||||
"%(site_name)s zurücksetzen möchtest.\n"
 | 
					"strong> gekündigt wurde."
 | 
				
			||||||
"Bitte folge diesem Link und wähle ein neues Passwort: %(base_url)s"
 | 
					
 | 
				
			||||||
"%(password_reset_url)s Solltest Du kein neues Passwort angefordert haben, "
 | 
					msgid "You can always order a new VM by clicking the button below."
 | 
				
			||||||
"dann ignoriere diese E-Mail.\n"
 | 
					msgstr ""
 | 
				
			||||||
"Dankeschön!\n"
 | 
					"Du kannst einfach eine neue VM bestellen, indem Du den Knopf weiter unten "
 | 
				
			||||||
 | 
					"drückst."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "CREATE VM"
 | 
				
			||||||
 | 
					msgstr "NEUE VM"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"You're receiving this mail because your virtual machine [%(vm_name)s] has "
 | 
					"You are receiving this email because your virutal machine %(vm_name)s has "
 | 
				
			||||||
"been cancelled.<br/>\n"
 | 
					"been cancelled."
 | 
				
			||||||
"You can see your order status by clicking [my VM page] below.<br/>\n"
 | 
					 | 
				
			||||||
"If you want to order a new virtual machine, you can do it by clicking <a "
 | 
					 | 
				
			||||||
"href=\"%(base_url)s%(my_virtual_machines_url)s\">this link</a>.<br/>\n"
 | 
					 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Du erhälst diese E-Mail, Da Deine virtuelle Maschine [%(vm_name)s] gekündigt "
 | 
					"Du erhälst diese E-Mail, da deine virtuelle Maschine %(vm_name)s gekündigt "
 | 
				
			||||||
"wurde.<br/>\n"
 | 
					"wurde."
 | 
				
			||||||
"Um Deinen Auftragsstatus zu sehen, klicke auf die [my VM page] unten.<br/>\n"
 | 
					 | 
				
			||||||
"Falls Du eine neue virtuelle Maschine bestellen möchtest, kannst Du dies "
 | 
					 | 
				
			||||||
"tun, indem Du <a href=\"%(base_url)s%(my_virtual_machines_url)s\">diesen "
 | 
					 | 
				
			||||||
"Link klickst</a>.<br/>\n"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "My VM page"
 | 
					msgid "You can always order a new VM by following the link below."
 | 
				
			||||||
msgstr "Meine VM page"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#, python-format
 | 
					 | 
				
			||||||
msgid ""
 | 
					 | 
				
			||||||
"You're receiving this mail because your virtual machine [%(vm_name)s] has "
 | 
					 | 
				
			||||||
"been cancelled.\n"
 | 
					 | 
				
			||||||
"You can see your order status by clicking here\n"
 | 
					 | 
				
			||||||
"%(base_url)s%(vm_order_url)s\n"
 | 
					 | 
				
			||||||
"If you want to order a new virtual machine, you can do it by clicking this "
 | 
					 | 
				
			||||||
"link.\n"
 | 
					 | 
				
			||||||
"%(base_url)s%(my_virtual_machines_url)s\n"
 | 
					 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Du erhälst diese E-Mail, da Deine virtuelle Maschine [%(vm_name)s] gekündigt "
 | 
					 | 
				
			||||||
"wurde.\n"
 | 
					 | 
				
			||||||
"Um Deinen Auftragsstatus zu sehen, klicke hier.\n"
 | 
					 | 
				
			||||||
"%(base_url)s%(vm_order_url)s\n"
 | 
					 | 
				
			||||||
"Falls Du eine neue virtuelle Maschine bestellen möchtest, kannst Du dies "
 | 
					 | 
				
			||||||
"tun, indem Du diesen Link klickst.\n"
 | 
					 | 
				
			||||||
"%(base_url)s%(my_virtual_machines_url)s\n"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Toggle navigation"
 | 
					msgid "Toggle navigation"
 | 
				
			||||||
msgstr "Umschalten"
 | 
					msgstr "Umschalten"
 | 
				
			||||||
| 
						 | 
					@ -300,13 +274,16 @@ msgstr "Dashboard"
 | 
				
			||||||
msgid "Logout"
 | 
					msgid "Logout"
 | 
				
			||||||
msgstr "Abmelden"
 | 
					msgstr "Abmelden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Don't have an account yet ? "
 | 
					msgid "Log in"
 | 
				
			||||||
 | 
					msgstr "Anmelden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Don't have an account yet ?"
 | 
				
			||||||
msgstr "Besitzt du kein Benutzerkonto?"
 | 
					msgstr "Besitzt du kein Benutzerkonto?"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Sign up"
 | 
					msgid "Sign up"
 | 
				
			||||||
msgstr "Registrieren"
 | 
					msgstr "Registrieren"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Forgot your password ? "
 | 
					msgid "Forgot your password ?"
 | 
				
			||||||
msgstr "Passwort vergessen?"
 | 
					msgstr "Passwort vergessen?"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Resend activation link"
 | 
					msgid "Resend activation link"
 | 
				
			||||||
| 
						 | 
					@ -478,7 +455,7 @@ msgstr "Deine Kreditkartennummer"
 | 
				
			||||||
msgid "Submit"
 | 
					msgid "Submit"
 | 
				
			||||||
msgstr "Absenden"
 | 
					msgstr "Absenden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Reset your password"
 | 
					msgid "Password reset"
 | 
				
			||||||
msgstr "Passwort zurücksetzen"
 | 
					msgstr "Passwort zurücksetzen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "UPDATE"
 | 
					msgid "UPDATE"
 | 
				
			||||||
| 
						 | 
					@ -630,12 +607,6 @@ msgstr ""
 | 
				
			||||||
"Um auf Deine VM zuzugreifen, <a href=\"%(create_ssh_url)s\">füge Deinen SSH-"
 | 
					"Um auf Deine VM zuzugreifen, <a href=\"%(create_ssh_url)s\">füge Deinen SSH-"
 | 
				
			||||||
"Key hinzu</a>"
 | 
					"Key hinzu</a>"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "CREATE VM"
 | 
					 | 
				
			||||||
msgstr "NEUE VM"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
msgid "View Detail"
 | 
					 | 
				
			||||||
msgstr "Details anzeigen"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
msgid "login"
 | 
					msgid "login"
 | 
				
			||||||
msgstr "anmelden"
 | 
					msgstr "anmelden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -660,6 +631,9 @@ msgstr "Dein Account wurde aktiviert."
 | 
				
			||||||
msgid "You can now"
 | 
					msgid "You can now"
 | 
				
			||||||
msgstr "Du kannst dich nun"
 | 
					msgstr "Du kannst dich nun"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Welcome to Data Center Light!"
 | 
				
			||||||
 | 
					msgstr "Willkommen beim Data Center Light!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Sorry. Your request is invalid."
 | 
					msgid "Sorry. Your request is invalid."
 | 
				
			||||||
msgstr "Entschuldigung, deine Anfrage ist ungültig."
 | 
					msgstr "Entschuldigung, deine Anfrage ist ungültig."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -730,14 +704,21 @@ msgstr ""
 | 
				
			||||||
msgid "Error terminating VM"
 | 
					msgid "Error terminating VM"
 | 
				
			||||||
msgstr "Fehler beenden VM"
 | 
					msgstr "Fehler beenden VM"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Virtual Machine Cancellation"
 | 
					#, python-format
 | 
				
			||||||
msgstr "VM Kündigung"
 | 
					msgid "Virtual Machine %(vm_name)s Cancelled"
 | 
				
			||||||
 | 
					msgstr "Virtuelle Maschine %(vm_name)s Kündigung"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "There was an error processing your request. Please try again."
 | 
					msgid "There was an error processing your request. Please try again."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Es gab einen Fehler bei der Bearbeitung Deine Anfrage. Bitte versuche es "
 | 
					"Es gab einen Fehler bei der Bearbeitung Deine Anfrage. Bitte versuche es "
 | 
				
			||||||
"noch einmal."
 | 
					"noch einmal."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Reset your password"
 | 
				
			||||||
 | 
					#~ msgstr "Passwort zurücksetzen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "My VM page"
 | 
				
			||||||
 | 
					#~ msgstr "Meine VM page"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#~ msgid "Invoice Date"
 | 
					#~ msgid "Invoice Date"
 | 
				
			||||||
#~ msgstr "Rechnung Datum"
 | 
					#~ msgstr "Rechnung Datum"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -765,12 +746,27 @@ msgstr ""
 | 
				
			||||||
#~ msgid "Start VM"
 | 
					#~ msgid "Start VM"
 | 
				
			||||||
#~ msgstr "VM jetzt starten"
 | 
					#~ msgstr "VM jetzt starten"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "View Invoice"
 | 
				
			||||||
 | 
					#~ msgstr "Zur Rechnung"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid ""
 | 
				
			||||||
 | 
					#~ "You're receiving this mail because your virtual machine [%(vm_name)s] has "
 | 
				
			||||||
 | 
					#~ "been cancelled.<br/>\n"
 | 
				
			||||||
 | 
					#~ "You can see your order status by clicking [my VM page] below.<br/>\n"
 | 
				
			||||||
 | 
					#~ "If you want to order a new virtual machine, you can do it by clicking <a "
 | 
				
			||||||
 | 
					#~ "href=\"%(base_url)s%(my_virtual_machines_url)s\">this link</a>.<br/>\n"
 | 
				
			||||||
 | 
					#~ msgstr ""
 | 
				
			||||||
 | 
					#~ "Du erhälst diese E-Mail, da deine virtuelle Maschine [%(vm_name)s] "
 | 
				
			||||||
 | 
					#~ "gekündigt wurde.<br/>\n"
 | 
				
			||||||
 | 
					#~ "Um deinen Auftragsstatus zu sehen, klicke auf die [my VM page] unten.<br/"
 | 
				
			||||||
 | 
					#~ ">\n"
 | 
				
			||||||
 | 
					#~ "Falls du eine neue virtuelle Maschine bestellen möchtest, kannst du dies "
 | 
				
			||||||
 | 
					#~ "tun, indem du <a href=\"%(base_url)s%(my_virtual_machines_url)s\">diesen "
 | 
				
			||||||
 | 
					#~ "Link klickst</a>.<br/>\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#~ msgid "Finish Configuration"
 | 
					#~ msgid "Finish Configuration"
 | 
				
			||||||
#~ msgstr "Konfiguration beenden"
 | 
					#~ msgstr "Konfiguration beenden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#~ msgid "Your New VM %(vm_name)s at Data Center Light"
 | 
					 | 
				
			||||||
#~ msgstr "Deine neue VM %(vm_name)s bei Data Center Light"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#~ msgid "My Virtual Machines"
 | 
					#~ msgid "My Virtual Machines"
 | 
				
			||||||
#~ msgstr "Meine virtuellen Maschinen"
 | 
					#~ msgstr "Meine virtuellen Maschinen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -828,9 +824,6 @@ msgstr ""
 | 
				
			||||||
#~ msgid "Keys"
 | 
					#~ msgid "Keys"
 | 
				
			||||||
#~ msgstr "Keys"
 | 
					#~ msgstr "Keys"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#~ msgid "Log in"
 | 
					 | 
				
			||||||
#~ msgstr "Anmelden"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#~ msgid "You haven been logged out"
 | 
					#~ msgid "You haven been logged out"
 | 
				
			||||||
#~ msgstr "Du wurdest abgemeldet"
 | 
					#~ msgstr "Du wurdest abgemeldet"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,9 @@
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
import logging
 | 
					import logging
 | 
				
			||||||
 | 
					from dateutil.relativedelta import relativedelta
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from django.db import models
 | 
					from django.db import models
 | 
				
			||||||
 | 
					from django.utils import timezone
 | 
				
			||||||
from django.utils.functional import cached_property
 | 
					from django.utils.functional import cached_property
 | 
				
			||||||
from Crypto.PublicKey import RSA
 | 
					from Crypto.PublicKey import RSA
 | 
				
			||||||
from membership.models import StripeCustomer, CustomUser
 | 
					from membership.models import StripeCustomer, CustomUser
 | 
				
			||||||
| 
						 | 
					@ -172,3 +174,9 @@ class VMDetail(models.Model):
 | 
				
			||||||
    ipv6 = models.TextField(default='')
 | 
					    ipv6 = models.TextField(default='')
 | 
				
			||||||
    created_at = models.DateTimeField(auto_now_add=True)
 | 
					    created_at = models.DateTimeField(auto_now_add=True)
 | 
				
			||||||
    terminated_at = models.DateTimeField(null=True)
 | 
					    terminated_at = models.DateTimeField(null=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def end_date(self):
 | 
				
			||||||
 | 
					        end_date = self.terminated_at if self.terminated_at else timezone.now()
 | 
				
			||||||
 | 
					        months = relativedelta(end_date, self.created_at).months or 1
 | 
				
			||||||
 | 
					        end_date = self.created_at + relativedelta(months=months, days=-1)
 | 
				
			||||||
 | 
					        return end_date
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.content-dashboard{
 | 
					.content-dashboard{
 | 
				
			||||||
	min-height: calc(100vh - 70px);
 | 
						min-height: calc(100vh - 60px);
 | 
				
			||||||
	width: 80%;
 | 
						width: 80%;
 | 
				
			||||||
	margin: 0 auto;
 | 
						margin: 0 auto;
 | 
				
			||||||
	max-width: 1120px;
 | 
						max-width: 1120px;
 | 
				
			||||||
| 
						 | 
					@ -66,7 +66,9 @@
 | 
				
			||||||
      width: 280px;
 | 
					      width: 280px;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    .content-dashboard {
 | 
					    .content-dashboard {
 | 
				
			||||||
      width: 90%;
 | 
					      padding-left: 15px;
 | 
				
			||||||
 | 
					      padding-right: 15px;
 | 
				
			||||||
 | 
					      width: 100%;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.btn:focus, .btn:active:focus {
 | 
					.btn:focus, .btn:active:focus {
 | 
				
			||||||
| 
						 | 
					@ -296,10 +298,6 @@
 | 
				
			||||||
  max-width: 360px;
 | 
					  max-width: 360px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.btn-wide {
 | 
					 | 
				
			||||||
  min-width: 100px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.caps-link {
 | 
					.caps-link {
 | 
				
			||||||
  font-weight: 600;
 | 
					  font-weight: 600;
 | 
				
			||||||
  color: #8da4c0;
 | 
					  color: #8da4c0;
 | 
				
			||||||
| 
						 | 
					@ -375,4 +373,12 @@
 | 
				
			||||||
  outline: none;
 | 
					  outline: none;
 | 
				
			||||||
  color: #999;
 | 
					  color: #999;
 | 
				
			||||||
  fill: #999;
 | 
					  fill: #999;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.locale_date {
 | 
				
			||||||
 | 
					  opacity: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.locale_date.done{
 | 
				
			||||||
 | 
					  opacity: 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -17,9 +17,11 @@ h3,
 | 
				
			||||||
h4,
 | 
					h4,
 | 
				
			||||||
h5,
 | 
					h5,
 | 
				
			||||||
h6 {
 | 
					h6 {
 | 
				
			||||||
    /*font-family: 'Lato-Regular', sans-serif;*/
 | 
					 | 
				
			||||||
    font-family: 'Lato', sans-serif;
 | 
					    font-family: 'Lato', sans-serif;
 | 
				
			||||||
    /*font-weight: 300;*/
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.allcaps {
 | 
				
			||||||
 | 
					    text-transform: uppercase;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.topnav {
 | 
					.topnav {
 | 
				
			||||||
| 
						 | 
					@ -31,6 +33,11 @@ h6 {
 | 
				
			||||||
.navbar-brand {
 | 
					.navbar-brand {
 | 
				
			||||||
    padding: 10px 15px;
 | 
					    padding: 10px 15px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					@media (max-width: 767px) {
 | 
				
			||||||
 | 
					    .navbar-brand {
 | 
				
			||||||
 | 
					        padding: 10px 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.navbar-default {
 | 
					.navbar-default {
 | 
				
			||||||
    background: #fff;
 | 
					    background: #fff;
 | 
				
			||||||
| 
						 | 
					@ -46,7 +53,7 @@ h6 {
 | 
				
			||||||
.navbar-transparent {
 | 
					.navbar-transparent {
 | 
				
			||||||
    background: transparent;
 | 
					    background: transparent;
 | 
				
			||||||
    border: none;
 | 
					    border: none;
 | 
				
			||||||
    padding: 20px;
 | 
					    padding: 20px 0;
 | 
				
			||||||
    box-shadow: none;
 | 
					    box-shadow: none;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -72,7 +79,6 @@ h6 {
 | 
				
			||||||
.navbar-transparent #logoWhite{
 | 
					.navbar-transparent #logoWhite{
 | 
				
			||||||
    display: block;
 | 
					    display: block;
 | 
				
			||||||
    width: 220px;
 | 
					    width: 220px;
 | 
				
			||||||
    /* color: #fff; */
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.navbar-right .highlights-dropdown .dropdown-menu {
 | 
					.navbar-right .highlights-dropdown .dropdown-menu {
 | 
				
			||||||
| 
						 | 
					@ -92,16 +98,6 @@ h6 {
 | 
				
			||||||
        border-color: #e7e7e7;
 | 
					        border-color: #e7e7e7;
 | 
				
			||||||
        box-shadow: -8px 14px 20px -5px rgba(77, 77, 77, 0.5);
 | 
					        box-shadow: -8px 14px 20px -5px rgba(77, 77, 77, 0.5);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
/*     .navbar-right .highlights-dropdown .dropdown-menu:before {
 | 
					 | 
				
			||||||
        content: '';
 | 
					 | 
				
			||||||
        display: block;
 | 
					 | 
				
			||||||
        height: 1px;
 | 
					 | 
				
			||||||
        background: #e7e7e7;
 | 
					 | 
				
			||||||
        position: absolute;
 | 
					 | 
				
			||||||
        top: -1px;
 | 
					 | 
				
			||||||
        left: -1px;
 | 
					 | 
				
			||||||
        right: -1px;
 | 
					 | 
				
			||||||
    } */
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.navbar-right .highlights-dropdown .dropdown-menu > li > a{
 | 
					.navbar-right .highlights-dropdown .dropdown-menu > li > a{
 | 
				
			||||||
    font-size: 13px;
 | 
					    font-size: 13px;
 | 
				
			||||||
| 
						 | 
					@ -274,16 +270,15 @@ h6 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*------Auth section---------*/
 | 
					/*------Auth section---------*/
 | 
				
			||||||
.auth-container {
 | 
					.auth-container {
 | 
				
			||||||
    min-height: calc(100vh - 120px);
 | 
					    min-height: calc(100vh - 180px);
 | 
				
			||||||
    position: relative;
 | 
					    position: relative;
 | 
				
			||||||
    /* flex-grow: 1; */
 | 
					 | 
				
			||||||
    display: flex;
 | 
					    display: flex;
 | 
				
			||||||
    flex-direction: column;
 | 
					    flex-direction: column;
 | 
				
			||||||
    justify-content: center;
 | 
					    justify-content: center;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-bg {
 | 
					.auth-bg {
 | 
				
			||||||
    background: url(../img/auth-bg-sm.jpg);
 | 
					    background: url(../img/pattern.jpg) no-repeat center center;
 | 
				
			||||||
    position: fixed;
 | 
					    position: fixed;
 | 
				
			||||||
    left: 0;
 | 
					    left: 0;
 | 
				
			||||||
    top: 0;
 | 
					    top: 0;
 | 
				
			||||||
| 
						 | 
					@ -293,7 +288,6 @@ h6 {
 | 
				
			||||||
    background-position: center center;
 | 
					    background-position: center center;
 | 
				
			||||||
    background-size: cover;
 | 
					    background-size: cover;
 | 
				
			||||||
    background-attachment: fixed;
 | 
					    background-attachment: fixed;
 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-bg::before {
 | 
					.auth-bg::before {
 | 
				
			||||||
| 
						 | 
					@ -303,7 +297,7 @@ h6 {
 | 
				
			||||||
    bottom: 0;
 | 
					    bottom: 0;
 | 
				
			||||||
    left: 0;
 | 
					    left: 0;
 | 
				
			||||||
    right: 0;
 | 
					    right: 0;
 | 
				
			||||||
    background: rgba(75, 75, 101, 0.55);
 | 
					    background: rgba(90, 116, 175, 0.7);
 | 
				
			||||||
    z-index: 1;
 | 
					    z-index: 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -313,69 +307,38 @@ h6 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-container .auth-content {
 | 
					.auth-container .auth-content {
 | 
				
			||||||
    width: 100%;
 | 
					    width: 100%;
 | 
				
			||||||
    margin: 0 auto;
 | 
					    margin: 0 auto 15px;
 | 
				
			||||||
    max-width: 390px;
 | 
					    max-width: 400px;
 | 
				
			||||||
 | 
					    padding: 0 15px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-container .auth-center {
 | 
					.auth-container .auth-content.wide {
 | 
				
			||||||
    /* position: absolute; */
 | 
					    max-width: 480px;
 | 
				
			||||||
    /* left: 50%; */
 | 
					 | 
				
			||||||
    /* top: 50%; */
 | 
					 | 
				
			||||||
    /* transform: translate(-50%, -50%); */
 | 
					 | 
				
			||||||
    /* width: 100%; */
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.auth-container .auth-title {
 | 
					 | 
				
			||||||
    margin-bottom: 50px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.auth-container .auth-title h2 {
 | 
					 | 
				
			||||||
    color: #fff;
 | 
					 | 
				
			||||||
    font-size: 44px;
 | 
					 | 
				
			||||||
    text-align: center;
 | 
					 | 
				
			||||||
    width: 425px;
 | 
					 | 
				
			||||||
    margin: 0 auto;
 | 
					 | 
				
			||||||
    margin-bottom: 30px;
 | 
					 | 
				
			||||||
    position: relative;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.auth-container .auth-title h2::after {
 | 
					 | 
				
			||||||
    content: "";
 | 
					 | 
				
			||||||
    position: absolute;
 | 
					 | 
				
			||||||
    bottom: -20px;
 | 
					 | 
				
			||||||
    background: #fff;
 | 
					 | 
				
			||||||
    height: 7px;
 | 
					 | 
				
			||||||
    width: 70px;
 | 
					 | 
				
			||||||
    left: 50%;
 | 
					 | 
				
			||||||
    transform: translate(-50%, 0);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-box {
 | 
					.auth-box {
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
    background: #fff;
 | 
					    background: #fff;
 | 
				
			||||||
    padding: 0;
 | 
					    padding: 40px 20px 20px;
 | 
				
			||||||
    padding-bottom: 30px;
 | 
					 | 
				
			||||||
    box-sizing: border-box;
 | 
					    box-sizing: border-box;
 | 
				
			||||||
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
 | 
					    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.09), 0 5px 5px rgba(0, 0, 0, 0.23);
 | 
				
			||||||
    border-radius: 4px;
 | 
					 | 
				
			||||||
    z-index: 10;
 | 
					    z-index: 10;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-box .section-heading {
 | 
					.auth-box .section-heading {
 | 
				
			||||||
    color: #5a5a5a;
 | 
					    color: #5a5a5a;
 | 
				
			||||||
    padding-top: 30px;
 | 
					    font-weight: 300;
 | 
				
			||||||
    padding-bottom: 5px;
 | 
					 | 
				
			||||||
    text-align: center;
 | 
					    text-align: center;
 | 
				
			||||||
    text-transform: uppercase;
 | 
					    letter-spacing: 1px;
 | 
				
			||||||
    letter-spacing: 3px;
 | 
					    font-size: 36px;
 | 
				
			||||||
    font-size: 20px;
 | 
					 | 
				
			||||||
    border-radius: 3px 3px 0px 0px;
 | 
					    border-radius: 3px 3px 0px 0px;
 | 
				
			||||||
    margin: 0 auto;
 | 
					    margin: 0 auto 10px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-box .form {
 | 
					.auth-box .form {
 | 
				
			||||||
    padding: 20px;
 | 
					    padding: 20px;
 | 
				
			||||||
    width: 80%;
 | 
					 | 
				
			||||||
    margin: 0 auto;
 | 
					    margin: 0 auto;
 | 
				
			||||||
 | 
					    max-width: 360px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-box .form .red {
 | 
					.auth-box .form .red {
 | 
				
			||||||
| 
						 | 
					@ -383,27 +346,56 @@ h6 {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-box .form .btn {
 | 
					.auth-box .form .btn {
 | 
				
			||||||
    box-shadow: 0 0px 9px rgba(0, 0, 0, 0.19), 0 3px 5px rgba(0, 0, 0, 0.23);
 | 
					    letter-spacing: 2px;
 | 
				
			||||||
    letter-spacing: 3px;
 | 
					    font-size: 16px;
 | 
				
			||||||
    font-size: 17px;
 | 
					    padding: 6px 12px;
 | 
				
			||||||
 | 
					    min-width: 140px;
 | 
				
			||||||
 | 
					    margin-top: 15px;
 | 
				
			||||||
    text-transform: uppercase;
 | 
					    text-transform: uppercase;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-box .form .form-control {
 | 
					.auth-box .form .form-control {
 | 
				
			||||||
    height: 44px;
 | 
					    height: 48px;
 | 
				
			||||||
    font-size: 16px;
 | 
					    font-size: 14px;
 | 
				
			||||||
 | 
					    padding: 10px 17px;
 | 
				
			||||||
 | 
					    line-height: 30px;
 | 
				
			||||||
 | 
					    border-color: #aaa;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.auth-box .form .form-control:focus,
 | 
				
			||||||
 | 
					.auth-box .form .form-control:active {
 | 
				
			||||||
 | 
					    box-shadow: none;
 | 
				
			||||||
 | 
					    border-radius: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.auth-box .form-control::-webkit-input-placeholder {
 | 
				
			||||||
 | 
					    color: #aaa;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.auth-box .form-control:-moz-placeholder{
 | 
				
			||||||
 | 
					    /* Firefox 18- */
 | 
				
			||||||
 | 
					    color: #aaa;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.auth-box .form-control::-moz-placeholder{
 | 
				
			||||||
 | 
					    /* Firefox 19+ */
 | 
				
			||||||
 | 
					    color: #aaa;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.auth-box .form-control:-ms-input-placeholder {
 | 
				
			||||||
 | 
					    color: #aaa;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-box .auth-footer {
 | 
					.auth-box .auth-footer {
 | 
				
			||||||
    text-align: center;
 | 
					    text-align: center;
 | 
				
			||||||
    padding: 10px;
 | 
					    padding: 5px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-box .auth-footer .text {
 | 
					.auth-box .auth-footer {
 | 
				
			||||||
    color: #777;
 | 
					    color: #777;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-box .auth-footer .links a {
 | 
					.auth-box .auth-footer a {
 | 
				
			||||||
    color: #1e94cc;
 | 
					    color: #1e94cc;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -411,20 +403,11 @@ h6 {
 | 
				
			||||||
    color: #1e94cc;
 | 
					    color: #1e94cc;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-box.sign-up {
 | 
					 | 
				
			||||||
    padding-bottom: 5px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.auth-box.sign-up .form {
 | 
					 | 
				
			||||||
    padding: 15px 20px 0 20px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.sign-up-message {
 | 
					.sign-up-message {
 | 
				
			||||||
    padding: 25px 30px 25px 30px;
 | 
					    padding: 25px 30px 25px 30px;
 | 
				
			||||||
    text-align: center;
 | 
					    text-align: center;
 | 
				
			||||||
    font-size: 18px;
 | 
					    font-size: 18px;
 | 
				
			||||||
    line-height: 30px;
 | 
					    line-height: 30px;
 | 
				
			||||||
    /*font-family: 'Lato' !important;*/
 | 
					 | 
				
			||||||
    font-weight: 300 !important;
 | 
					    font-weight: 300 !important;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -458,16 +441,7 @@ h6 {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .auth-box .form {
 | 
					    .auth-box .form {
 | 
				
			||||||
        padding: 15px 0px 0 0;
 | 
					        padding: 15px 0 15px 0;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .auth-box.sign-up .form {
 | 
					 | 
				
			||||||
        padding: 15px 0px 0 0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .auth-box .form .form-control {
 | 
					 | 
				
			||||||
        height: 44px;
 | 
					 | 
				
			||||||
        font-size: 13px;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .auth-container .auth-title {
 | 
					    .auth-container .auth-title {
 | 
				
			||||||
| 
						 | 
					@ -476,7 +450,7 @@ h6 {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-box .msg-list {
 | 
					.auth-box .msg-list {
 | 
				
			||||||
    padding: 15px 25px 5px;
 | 
					    padding: 20px 25px 0;
 | 
				
			||||||
    text-align: center;
 | 
					    text-align: center;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -493,19 +467,14 @@ h6 {
 | 
				
			||||||
        margin-bottom: 50px;
 | 
					        margin-bottom: 50px;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .auth-box .form {
 | 
					 | 
				
			||||||
        width: 90%;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .auth-box .section-heading {
 | 
					    .auth-box .section-heading {
 | 
				
			||||||
        font-size: 15px;
 | 
					        font-size: 32px;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
footer {
 | 
					footer {
 | 
				
			||||||
    padding: 20px;
 | 
					    padding: 20px 0;
 | 
				
			||||||
    background-color: #f8f8f8;
 | 
					    background-color: #f8f8f8;
 | 
				
			||||||
/*     position: absolute */
 | 
					 | 
				
			||||||
    right: 0;
 | 
					    right: 0;
 | 
				
			||||||
    bottom: 0;
 | 
					    bottom: 0;
 | 
				
			||||||
    left: 0;
 | 
					    left: 0;
 | 
				
			||||||
| 
						 | 
					@ -537,7 +506,6 @@ a.unlink:hover {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***** DCL payment page **********/
 | 
					/***** DCL payment page **********/
 | 
				
			||||||
.dcl-order-container {
 | 
					.dcl-order-container {
 | 
				
			||||||
    /*font-family: Lato;*/
 | 
					 | 
				
			||||||
    font-weight: 300;
 | 
					    font-weight: 300;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -580,9 +548,7 @@ a.unlink:hover {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.dcl-place-order-text{
 | 
					.dcl-place-order-text{
 | 
				
			||||||
   /* font-size: 13px; */
 | 
					 | 
				
			||||||
   color: #808080;
 | 
					   color: #808080;
 | 
				
			||||||
   /* margin-bottom: 15px; */
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.dcl-order-table-total .tbl-total {
 | 
					.dcl-order-table-total .tbl-total {
 | 
				
			||||||
| 
						 | 
					@ -610,7 +576,6 @@ a.unlink:hover {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.card-warning-content {
 | 
					.card-warning-content {
 | 
				
			||||||
    /*font-family: Lato;*/
 | 
					 | 
				
			||||||
    font-weight: 300;
 | 
					    font-weight: 300;
 | 
				
			||||||
    border: 1px solid #a1a1a1;
 | 
					    border: 1px solid #a1a1a1;
 | 
				
			||||||
    border-radius: 3px;
 | 
					    border-radius: 3px;
 | 
				
			||||||
| 
						 | 
					@ -638,18 +603,6 @@ a.unlink:hover {
 | 
				
			||||||
    right: 0;
 | 
					    right: 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.brand {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.brand #brand-icon {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.card-number-element {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.card-expiry-element {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.card-cvc-element label {
 | 
					.card-cvc-element label {
 | 
				
			||||||
    padding-left: 10px;
 | 
					    padding-left: 10px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -735,9 +688,6 @@ a.unlink:hover {
 | 
				
			||||||
        margin-bottom: 30px;
 | 
					        margin-bottom: 30px;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .brand {
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .card-expiry-element {
 | 
					    .card-expiry-element {
 | 
				
			||||||
    padding-right: 10px;
 | 
					    padding-right: 10px;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -802,10 +752,23 @@ a.unlink:hover {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.footer-light {
 | 
				
			||||||
.footer-light a:hover, .footer-light a:focus, .footer-light a:active {
 | 
					    position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.footer-light footer {
 | 
				
			||||||
 | 
					    background: transparent;
 | 
				
			||||||
 | 
					    color: #eee;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.footer-light a,
 | 
				
			||||||
 | 
					.footer-light .text-muted {
 | 
				
			||||||
    color: #ddd;
 | 
					    color: #ddd;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.footer-light a:hover, .footer-light a:focus, .footer-light a:active {
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.footer-vm p.copyright {
 | 
				
			||||||
 | 
					    margin-top: 4px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.visible-mobile {
 | 
					.visible-mobile {
 | 
				
			||||||
    display: none !important;
 | 
					    display: none !important;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								hosting/static/hosting/img/pattern.jpg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								hosting/static/hosting/img/pattern.jpg
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 58 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								hosting/static/hosting/img/pattern_original.jpg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								hosting/static/hosting/img/pattern_original.jpg
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 181 KiB  | 
| 
						 | 
					@ -54,19 +54,18 @@
 | 
				
			||||||
        {% include "hosting/includes/_navbar_user.html" %}
 | 
					        {% include "hosting/includes/_navbar_user.html" %}
 | 
				
			||||||
    {% endblock navbar %}
 | 
					    {% endblock navbar %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <div class="{% if request.user.is_authenticated %}content-dashboard{% endif %}">
 | 
				
			||||||
    <div class="content-dashboard">
 | 
					 | 
				
			||||||
        {% block content %}
 | 
					        {% block content %}
 | 
				
			||||||
        {% endblock %}
 | 
					        {% endblock %}
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Footer -->
 | 
					    <!-- Footer -->
 | 
				
			||||||
    {% if request.user.is_authenticated %}
 | 
					    {% if request.user.is_authenticated %}
 | 
				
			||||||
    <footer class="footer-vm">
 | 
					        <footer class="footer-vm">
 | 
				
			||||||
        <div class="container">
 | 
					            <div class="container">
 | 
				
			||||||
            <p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. {% trans "All Rights Reserved" %}</p>
 | 
					                <p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. {% trans "All Rights Reserved" %}</p>
 | 
				
			||||||
        </div>
 | 
					            </div>
 | 
				
			||||||
    </footer>
 | 
					        </footer>
 | 
				
			||||||
    {% else %}
 | 
					    {% else %}
 | 
				
			||||||
        <div class="footer-light">
 | 
					        <div class="footer-light">
 | 
				
			||||||
            {% include "datacenterlight/includes/_footer.html" %}
 | 
					            {% include "datacenterlight/includes/_footer.html" %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,21 +1,17 @@
 | 
				
			||||||
{% extends "hosting/base_short.html" %}
 | 
					{% extends "hosting/base_short.html" %}
 | 
				
			||||||
{% load staticfiles bootstrap3%}
 | 
					{% load staticfiles bootstrap3 i18n %}
 | 
				
			||||||
{% load i18n %}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block navbar %}
 | 
					{% block navbar %}
 | 
				
			||||||
    {% include  'hosting/includes/_navbar_transparent.html' %}
 | 
					    {% include 'hosting/includes/_navbar_transparent.html' %}
 | 
				
			||||||
{% endblock navbar %}
 | 
					{% endblock navbar %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<div class="auth-container">
 | 
					    <div class="auth-container">
 | 
				
			||||||
   <div class="auth-bg"></div>
 | 
					        <div class="auth-bg"></div>
 | 
				
			||||||
        <div class="auth-center">
 | 
					        <div class="auth-center">
 | 
				
			||||||
            <div class="auth-title">
 | 
					 | 
				
			||||||
                <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
            <div class="auth-content">
 | 
					            <div class="auth-content">
 | 
				
			||||||
                <div class="intro-message auth-box sign-up">
 | 
					                <div class="auth-box sign-up">
 | 
				
			||||||
                     <h2  class="section-heading">{% trans "Set your new password"%}</h2>
 | 
					                    <h1 class="section-heading">{% trans "Set your new password" %}</h1>
 | 
				
			||||||
                    {% if messages %}
 | 
					                    {% if messages %}
 | 
				
			||||||
                        <ul class="list-unstyled msg-list">
 | 
					                        <ul class="list-unstyled msg-list">
 | 
				
			||||||
                        {% for message in messages %}
 | 
					                        {% for message in messages %}
 | 
				
			||||||
| 
						 | 
					@ -28,23 +24,18 @@
 | 
				
			||||||
                        {% for field in form %}
 | 
					                        {% for field in form %}
 | 
				
			||||||
                            {% bootstrap_field field show_label=False %}
 | 
					                            {% bootstrap_field field show_label=False %}
 | 
				
			||||||
                        {% endfor %}
 | 
					                        {% endfor %}
 | 
				
			||||||
                        {% buttons %}
 | 
					                        <div class="text-center">
 | 
				
			||||||
                            <button type="submit" class="btn btn-block btn-success">
 | 
					                            <button type="submit" class="btn choice-btn">
 | 
				
			||||||
                            {% trans "Reset"%}
 | 
					                                {% trans "Reset" %}
 | 
				
			||||||
                            </button>
 | 
					                            </button>
 | 
				
			||||||
                        {% endbuttons %}
 | 
					                        </div>
 | 
				
			||||||
                    </form>
 | 
					                    </form>
 | 
				
			||||||
                    <div class="auth-footer">
 | 
					                    <div class="auth-footer">
 | 
				
			||||||
                        <div class="text">
 | 
					                        <span>{% trans "Already have an account ?" %}</span> 
 | 
				
			||||||
                            <span>{% trans "Already have an account ?"%}</span>
 | 
					                        <a class="unlink" href="{% url 'hosting:login' %}">{% trans "Login" %}</a>
 | 
				
			||||||
                        </div>
 | 
					 | 
				
			||||||
                        <div class="links">
 | 
					 | 
				
			||||||
                           <a class="unlink" href="{% url 'hosting:login' %}">{% trans "Login"%}</a>
 | 
					 | 
				
			||||||
                        </div>
 | 
					 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
 | 
					 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
</div>
 | 
					    </div>
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,14 +1,51 @@
 | 
				
			||||||
{% extends "datacenterlight/emails/base_email_datacenterlight.html" %}
 | 
					{% load static i18n %}
 | 
				
			||||||
{% load i18n %}
 | 
					<!DOCTYPE html>
 | 
				
			||||||
{% block email_head %}{{page_header}}{% endblock %}
 | 
					<html>
 | 
				
			||||||
{% block email_body %}
 | 
					
 | 
				
			||||||
{% url 'hosting:orders' order.id as order_url %}
 | 
					<head>
 | 
				
			||||||
{% blocktrans with vm.name as vm_name %}You have ordered a new virtual machine!
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
<br/>
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
				
			||||||
Your order of [{{vm_name}}] has been charged.<br/><br/>
 | 
					    <title>{% blocktrans %}Your New VM {{vm_name}}{% endblocktrans %}</title>
 | 
				
			||||||
You can view your invoice by clicking the button below.<br/><br/>
 | 
					    <link rel="shortcut icon" href="{{ base_url }}{% static 'datacenterlight/img/favicon.ico' %}" type="image/x-icon">
 | 
				
			||||||
{% endblocktrans %}
 | 
					    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,400">
 | 
				
			||||||
<div class="button" style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 30px 0;" align="center">
 | 
					</head>
 | 
				
			||||||
    <a href="{{ base_url }}{{order_url}}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">{% trans 'View Invoice' %}</a>
 | 
					
 | 
				
			||||||
</div>
 | 
					<body style="margin: 0; padding: 20px 0;">
 | 
				
			||||||
{% endblock %}
 | 
					    <table style="width: 100%; border-spacing: 0; border-collapse: collapse; max-width: 560px;">
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td>
 | 
				
			||||||
 | 
					                <img src="{{ base_url }}{% static 'datacenterlight/img/logo_black.png' %}" style="width: 200px; height: 50px;">
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 15px;">
 | 
				
			||||||
 | 
					                <h1 style="font-family: Lato, Arial, sans-serif; font-size: 25px; font-weight: 400; margin: 0;">{% blocktrans %}Your New VM {{ vm_name }}{% endblocktrans %}</h1>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 25px; font-size: 16px;">
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin: 0;">
 | 
				
			||||||
 | 
					                    {% blocktrans %}You have ordered a new virtual machine!{% endblocktrans %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin: 0;">
 | 
				
			||||||
 | 
					                    {% blocktrans %}Your order of <strong>{{ vm_name }}</strong> has been charged.{% endblocktrans %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin: 0;">
 | 
				
			||||||
 | 
					                    {% blocktrans %}You can view your VM detail by clicking the button below.{% endblocktrans %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 30px;">
 | 
				
			||||||
 | 
					                <a class="btn" href="{{ base_url }}{{ order_url }}" style="font-family: Lato, Arial, sans-serif; text-decoration: none; background-color: #1596da; color: #fff; padding-top: 10px; padding-bottom: 10px; padding-left: 30px; padding-right: 30px; letter-spacing: 0.5px; border-radius: 3px; display: inline-block; position: relative;">{% trans "View Detail" %}</a>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 40px; padding-bottom: 25px;">
 | 
				
			||||||
 | 
					                <h3 style="font-family: Lato, Arial, sans-serif; margin: 0; font-weight: 400; font-size: 15px;">{% trans "Your Data Center Light Team" %}</h3>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					    </table>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
| 
						 | 
					@ -1,11 +1,11 @@
 | 
				
			||||||
{% extends "datacenterlight/emails/base_email_datacenterlight.txt" %}
 | 
					 | 
				
			||||||
{% load i18n %}
 | 
					{% load i18n %}
 | 
				
			||||||
{% block email_head %}{{page_header}}{% endblock %}
 | 
					
 | 
				
			||||||
{% block email_body %}
 | 
					{% blocktrans %}Your New VM {{vm_name}}{% endblocktrans %}
 | 
				
			||||||
{% url 'hosting:orders' order.id as order_url %}
 | 
					
 | 
				
			||||||
{% blocktrans with vm.name as vm_name %}You have ordered a new virtual machine!
 | 
					{% blocktrans %}You have ordered a new virtual machine!{% endblocktrans %}
 | 
				
			||||||
Your order of [{{vm_name}}] has been charged.
 | 
					{% blocktrans %}Your order of {{vm_name}} has been charged.{% endblocktrans %}
 | 
				
			||||||
You can view your invoice here.
 | 
					{% blocktrans %}You can view your VM detail by following the link below.{% endblocktrans %}
 | 
				
			||||||
{% endblocktrans %}
 | 
					
 | 
				
			||||||
{{ base_url }}{{order_url}}
 | 
					{{ base_url }}{{ order_url }}
 | 
				
			||||||
{% endblock %}
 | 
					
 | 
				
			||||||
 | 
					{% trans "Your Data Center Light Team" %}
 | 
				
			||||||
| 
						 | 
					@ -1,14 +1,52 @@
 | 
				
			||||||
{% extends "datacenterlight/emails/base_email_datacenterlight.html" %}
 | 
					{% load static i18n %}
 | 
				
			||||||
{% load i18n %}
 | 
					<!DOCTYPE html>
 | 
				
			||||||
{% block email_head %}
 | 
					<html>
 | 
				
			||||||
{% trans 'Password Reset' %}
 | 
					
 | 
				
			||||||
{% endblock %}
 | 
					<head>
 | 
				
			||||||
{% block email_body %}
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
{% url 'hosting:reset_password_confirm' uidb64=uid token=token as password_reset_url %}
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
				
			||||||
{% blocktrans %}
 | 
					    <title>{% trans "Password Reset" %}</title>
 | 
				
			||||||
You're receiving this email because you requested a password reset for your user account at {{site_name}}.<br/>
 | 
					    <link rel="shortcut icon" href="{{ base_url }}{% static 'datacenterlight/img/favicon.ico' %}" type="image/x-icon">
 | 
				
			||||||
Please go to the following page and choose a new password: {{base_url}}{{ password_reset_url }}<br/>
 | 
					    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,400">
 | 
				
			||||||
If you didn't request a new password, ignore this e-mail.<br/>
 | 
					</head>
 | 
				
			||||||
Thank you!
 | 
					
 | 
				
			||||||
{% endblocktrans %}
 | 
					<body style="margin: 0; padding: 20px 0;">
 | 
				
			||||||
{% endblock %}
 | 
					    <table style="width: 100%; border-spacing: 0; border-collapse: collapse; max-width: 560px;">
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td>
 | 
				
			||||||
 | 
					                <img src="{{base_url}}{% static 'datacenterlight/img/logo_black.png' %}" style="width: 200px; height: 50px;">
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 15px;">
 | 
				
			||||||
 | 
					                <h1 style="font-family: Lato, Arial, sans-serif; font-size: 25px; font-weight: 400; margin: 0;">{% trans "Password Reset" %}</h1>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 25px; font-size: 16px;">
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin-bottom: 10px; margin-top: 0;">
 | 
				
			||||||
 | 
					                    {% trans "We received a request to reset your password." %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin-bottom: 10px; margin-top: 0;">
 | 
				
			||||||
 | 
					                    {% trans "If you didn't make this request you can safely ignore this email." %}
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin-bottom: 10px; margin-top: 0;">
 | 
				
			||||||
 | 
					                    {% trans "Otherwise, click here to reset your password." %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					                <p style="color: #4382c8; line-height: 1.4; font-family: Lato, Arial, sans-serif; font-weight: 300; margin: 0;">
 | 
				
			||||||
 | 
					                    {% url 'hosting:reset_password_confirm' uidb64=uid token=token as password_reset_url %}
 | 
				
			||||||
 | 
					                    {{base_url}}{{ password_reset_url }}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin-bottom: 0; margin-top: 10px;">
 | 
				
			||||||
 | 
					                    {% trans "Thank you!" %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 40px; padding-bottom: 25px;">
 | 
				
			||||||
 | 
					                <h3 style="font-family: Lato, Arial, sans-serif; margin: 0; font-weight: 400; font-size: 15px;">{% trans "Your Data Center Light Team" %}</h3>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					    </table>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
| 
						 | 
					@ -1,11 +1,14 @@
 | 
				
			||||||
{% extends "datacenterlight/emails/base_email_datacenterlight.txt" %}
 | 
					 | 
				
			||||||
{% load i18n %}
 | 
					{% load i18n %}
 | 
				
			||||||
{% block email_head %}{% trans 'Password Reset' %}{% endblock %}
 | 
					
 | 
				
			||||||
{% block email_body %}
 | 
					{% trans "Password Reset" %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% trans "We received a request to reset your password." %}
 | 
				
			||||||
 | 
					{% trans "If you didn't make this request you can safely ignore this email." %}
 | 
				
			||||||
 | 
					{% trans "Otherwise, click here to reset your password." %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% url 'hosting:reset_password_confirm' uidb64=uid token=token as password_reset_url %}
 | 
					{% url 'hosting:reset_password_confirm' uidb64=uid token=token as password_reset_url %}
 | 
				
			||||||
{% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{site_name}}.
 | 
					{{base_url}}{{ password_reset_url }}
 | 
				
			||||||
Please go to the following page and choose a new password: {{base_url}}{{ password_reset_url }}
 | 
					
 | 
				
			||||||
If you didn't request a new password, ignore this e-mail.
 | 
					{% trans "Thank you!" %}
 | 
				
			||||||
Thank you!
 | 
					
 | 
				
			||||||
{% endblocktrans %}
 | 
					{% trans "Your Data Center Light Team" %}
 | 
				
			||||||
{% endblock %}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,15 +1,49 @@
 | 
				
			||||||
{% extends "datacenterlight/emails/base_email_datacenterlight.html" %}
 | 
					{% load static i18n %}
 | 
				
			||||||
{% load i18n %}
 | 
					<!DOCTYPE html>
 | 
				
			||||||
{% block email_head %}{{page_header}}{% endblock %}
 | 
					<html>
 | 
				
			||||||
{% block email_body %}
 | 
					
 | 
				
			||||||
{% url 'hosting:virtual_machines' as my_virtual_machines_url %}
 | 
					<head>
 | 
				
			||||||
{% url 'hosting:orders' as vm_orders_url %}
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
{% blocktrans with vm.name as vm_name %}You're receiving this mail because your virtual machine [{{vm_name}}] has been cancelled.<br/>
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
				
			||||||
You can see your order status by clicking [my VM page] below.<br/>
 | 
					    <title>{% trans "Virtual Machine Cancellation" %}</title>
 | 
				
			||||||
If you want to order a new virtual machine, you can do it by clicking <a href="{{base_url}}{{my_virtual_machines_url}}">this link</a>.<br/>
 | 
					    <link rel="shortcut icon" href="{{ base_url }}{% static 'datacenterlight/img/favicon.ico' %}" type="image/x-icon">
 | 
				
			||||||
{% endblocktrans %}
 | 
					    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,400">
 | 
				
			||||||
<div class="button" style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 30px 0;" align="center">
 | 
					</head>
 | 
				
			||||||
    <a href="{{ base_url }}{{vm_orders_url}}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">{% trans 'My VM page' %}</a>
 | 
					
 | 
				
			||||||
</div>
 | 
					<body style="margin: 0; padding: 20px 0;">
 | 
				
			||||||
{% endblock %}
 | 
					    <table style="width: 100%; border-spacing: 0; border-collapse: collapse; max-width: 560px;">
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td>
 | 
				
			||||||
 | 
					                <img src="{{ base_url }}{% static 'datacenterlight/img/logo_black.png' %}" style="width: 200px; height: 50px;">
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 15px;">
 | 
				
			||||||
 | 
					                <h1 style="font-family: Lato, Arial, sans-serif; font-size: 25px; font-weight: 400; margin: 0;">{% trans "Virtual Machine Cancellation" %}</h1>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 25px; font-size: 16px;">
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin: 0;">
 | 
				
			||||||
 | 
					                    {% blocktrans %}You are receiving this email because your virutal machine <strong>{{ vm_name }}</strong> has been cancelled.{% endblocktrans %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					                <p style="line-height: 1.75; font-family: Lato, Arial, sans-serif; font-weight: 300; margin: 0;">
 | 
				
			||||||
 | 
					                    {% blocktrans %}You can always order a new VM by clicking the button below.{% endblocktrans %}
 | 
				
			||||||
 | 
					                </p>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 30px;">
 | 
				
			||||||
 | 
					                <a class="btn" href="{{ base_url }}{% url 'hosting:create_virtual_machine' %}" style="font-family: Lato, Arial, sans-serif; text-decoration: none; background-color: #1596da; color: #fff; padding-top: 10px; padding-bottom: 10px; padding-left: 30px; padding-right: 30px; letter-spacing: 0.5px; border-radius: 3px; display: inline-block; position: relative;">{% trans "CREATE VM" %}</a>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					            <td style="padding-top: 40px; padding-bottom: 25px;">
 | 
				
			||||||
 | 
					                <h3 style="font-family: Lato, Arial, sans-serif; margin: 0; font-weight: 400; font-size: 15px;">{% trans "Your Data Center Light Team" %}</h3>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					    </table>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,13 +1,10 @@
 | 
				
			||||||
{% extends "datacenterlight/emails/base_email_datacenterlight.txt" %}
 | 
					 | 
				
			||||||
{% load i18n %}
 | 
					{% load i18n %}
 | 
				
			||||||
{% block email_head %}{{page_header}}{% endblock %}
 | 
					
 | 
				
			||||||
{% block email_body %}
 | 
					{% trans "Virtual Machine Cancellation" %}
 | 
				
			||||||
{% url 'hosting:virtual_machines' as my_virtual_machines_url %}
 | 
					
 | 
				
			||||||
{% url 'hosting:orders' order.id as vm_order_url %}
 | 
					{% blocktrans %}You are receiving this email because your virutal machine {{vm_name}} has been cancelled.{% endblocktrans %}
 | 
				
			||||||
{% blocktrans with vm.name as vm_name %}You're receiving this mail because your virtual machine [{{vm_name}}] has been cancelled.
 | 
					{% blocktrans %}You can always order a new VM by following the link below.{% endblocktrans %}
 | 
				
			||||||
You can see your order status by clicking here
 | 
					
 | 
				
			||||||
{{base_url}}{{vm_order_url}}
 | 
					{{ base_url }}{% url 'hosting:create_virtual_machine' %}
 | 
				
			||||||
If you want to order a new virtual machine, you can do it by clicking this link.
 | 
					
 | 
				
			||||||
{{base_url}}{{my_virtual_machines_url}}
 | 
					{% trans "Your Data Center Light Team" %}
 | 
				
			||||||
{% endblocktrans %}
 | 
					 | 
				
			||||||
{% endblock %}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,7 @@
 | 
				
			||||||
{% if messages %}
 | 
					{% if messages %}
 | 
				
			||||||
    <ul class="list-unstyled msg-list">
 | 
					    <ul class="list-unstyled msg-list">
 | 
				
			||||||
    {% for message in messages %}
 | 
					    {% for message in messages %}
 | 
				
			||||||
        <div
 | 
					        <div class="alert {% if message.tags and message.tags == 'error' %} alert-danger {% else %} alert-{{message.tags}} {% endif %}">{{ message|safe }}</div>
 | 
				
			||||||
                class="alert {% if message.tags and message.tags == 'error' %} alert-danger {% else %} alert-{{message.tags}} {% endif %}">{{ message|safe }}</div>
 | 
					 | 
				
			||||||
    {% endfor %}
 | 
					    {% endfor %}
 | 
				
			||||||
    </ul>
 | 
					    </ul>
 | 
				
			||||||
{% endif %}
 | 
					{% endif %}
 | 
				
			||||||
| 
						 | 
					@ -1,11 +1,13 @@
 | 
				
			||||||
{% load static i18n %}
 | 
					{% load static i18n %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<nav class="navbar navbar-default  topnav navbar-transparent" role="navigation">
 | 
					<nav class="navbar navbar-default  topnav navbar-transparent" role="navigation">
 | 
				
			||||||
    <div class="topnav">
 | 
					    <div class="container">
 | 
				
			||||||
        <!-- Brand and toggle get grouped for better mobile display -->
 | 
					        <div class="topnav">
 | 
				
			||||||
        <div class="navbar-header">
 | 
					            <!-- Brand and toggle get grouped for better mobile display -->
 | 
				
			||||||
            <a id="logoWhite" class="navbar-brand topnav" href="{% url 'datacenterlight:index' %}"><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a>
 | 
					            <div class="navbar-header">
 | 
				
			||||||
 | 
					                <a id="logoWhite" class="navbar-brand topnav" href="{% url 'datacenterlight:index' %}"><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					        <!-- /.container -->
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    <!-- /.container -->
 | 
					 | 
				
			||||||
</nav>
 | 
					</nav>
 | 
				
			||||||
| 
						 | 
					@ -1,49 +1,43 @@
 | 
				
			||||||
{% extends "hosting/base_short.html" %}
 | 
					{% extends "hosting/base_short.html" %}
 | 
				
			||||||
{% load i18n %}
 | 
					{% load i18n staticfiles bootstrap3%}
 | 
				
			||||||
{% load staticfiles bootstrap3%}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block navbar %}
 | 
					{% block navbar %}
 | 
				
			||||||
    {% include  'hosting/includes/_navbar_transparent.html' %}
 | 
					    {% include 'hosting/includes/_navbar_transparent.html' %}
 | 
				
			||||||
{% endblock navbar %}
 | 
					{% endblock navbar %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<div class="auth-container">
 | 
					    <div class="auth-container">
 | 
				
			||||||
    <div class="auth-bg"></div>
 | 
					        <div class="auth-bg"></div>
 | 
				
			||||||
    <div class="auth-center">
 | 
					        <div class="auth-center">
 | 
				
			||||||
        <div class="auth-title">
 | 
					            <div class="auth-content">
 | 
				
			||||||
            <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
 | 
					                <div class="auth-box">
 | 
				
			||||||
        </div>
 | 
					                    <h1 class="section-heading allcaps">{% trans "Log in" %}</h1>
 | 
				
			||||||
        <div class="auth-content">
 | 
					                    {% include 'hosting/includes/_messages.html' %}
 | 
				
			||||||
            <div class="intro-message auth-box">
 | 
					                    <form action="{% url 'hosting:login' %}" method="post" class="form" novalidated>
 | 
				
			||||||
                <h2 class="section-heading">{% trans "Login"%}</h2>
 | 
					                        {% csrf_token %}
 | 
				
			||||||
                {% include  'hosting/includes/_messages.html' %}
 | 
					                        {% for field in form %}
 | 
				
			||||||
                <form action="{% url 'hosting:login' %}" method="post" class="form" novalidated>
 | 
					                            {% bootstrap_field field show_label=False type='fields'%}
 | 
				
			||||||
                    {% csrf_token %}
 | 
					                        {% endfor %}
 | 
				
			||||||
                    {% for field in form %}
 | 
					                        <p class="red">{{form.non_field_errors|striptags}}</p>
 | 
				
			||||||
                        {% bootstrap_field field show_label=False type='fields'%}
 | 
					                        <div class="text-center">
 | 
				
			||||||
                    {% endfor %}
 | 
					                            <button type="submit" class="btn choice-btn">
 | 
				
			||||||
                    <p class="red">{{form.non_field_errors|striptags}}</p>
 | 
					                                {% trans "Log in" %}
 | 
				
			||||||
                    {% buttons %}
 | 
					                            </button>
 | 
				
			||||||
                        <button type="submit" class="btn btn-block btn-success">
 | 
					                        </div>
 | 
				
			||||||
                            {% trans "Login"%}
 | 
					    					<input type='hidden' name='next' value='{{request.GET.next}}'/>
 | 
				
			||||||
                        </button>
 | 
					                    </form>
 | 
				
			||||||
                    {% endbuttons %}
 | 
					                    <div class="auth-footer">
 | 
				
			||||||
					<input type='hidden' name='next' value='{{request.GET.next}}'/>
 | 
					                        <div>
 | 
				
			||||||
                </form>
 | 
					                            {% trans "Don't have an account yet ?" %} 
 | 
				
			||||||
                <div class="auth-footer">
 | 
					                            <a class="" href="{% url 'hosting:signup' %}">{% trans "Sign up" %}</a>
 | 
				
			||||||
                    <div class="text">
 | 
					                        </div>
 | 
				
			||||||
                        <span>{% trans "Don't have an account yet ? "%}</span>
 | 
					                        <div>
 | 
				
			||||||
                    </div>
 | 
					                            or <a href="{% url 'hosting:reset_password' %}">{% trans "Forgot your password ?" %}</a><br>
 | 
				
			||||||
                    <div class="links">
 | 
					                            or <a href="{% url 'hosting:resend_activation_link' %}">{% trans "Resend activation link" %}</a>
 | 
				
			||||||
                        <a class="unlink" href="{% url 'hosting:signup' %}">{% trans "Sign up"%}</a>
 | 
					                        </div>
 | 
				
			||||||
                        <span class="text"> or </span>
 | 
					 | 
				
			||||||
                        <a class="unlink" href="{% url 'hosting:reset_password' %}">{% trans "Forgot your password ? "%}</a>
 | 
					 | 
				
			||||||
                        <span class="text"> or </span><br/>
 | 
					 | 
				
			||||||
                        <a class="unlink" href="{% url 'hosting:resend_activation_link' %}">{% trans "Resend activation link"%}</a>
 | 
					 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,11 +32,11 @@
 | 
				
			||||||
            {% endif %}
 | 
					            {% endif %}
 | 
				
			||||||
            <p>
 | 
					            <p>
 | 
				
			||||||
                <strong>{% trans "Date" %}:</strong>
 | 
					                <strong>{% trans "Date" %}:</strong>
 | 
				
			||||||
                <span id="order-created_at">
 | 
					                <span class="locale_date">
 | 
				
			||||||
                    {% if order %}
 | 
					                    {% if order %}
 | 
				
			||||||
                        {{order.created_at|date:'Y-m-d H:i'}}
 | 
					                        {{order.created_at|date:'Y-m-d h:i a'}}
 | 
				
			||||||
                    {% else %}
 | 
					                    {% else %}
 | 
				
			||||||
                        {% now "Y-m-d H:i" %}
 | 
					                        {% now "Y-m-d h:i a" %}
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                </span>
 | 
					                </span>
 | 
				
			||||||
            </p>
 | 
					            </p>
 | 
				
			||||||
| 
						 | 
					@ -107,7 +107,9 @@
 | 
				
			||||||
                        {% if vm.created_at %}
 | 
					                        {% if vm.created_at %}
 | 
				
			||||||
                            <p>
 | 
					                            <p>
 | 
				
			||||||
                                <span>{% trans "Period" %}: </span>
 | 
					                                <span>{% trans "Period" %}: </span>
 | 
				
			||||||
                                <span>{{ vm.created_at|date:'Y/m/d' }} - {% if vm.terminated_at %}{{ vm.terminated_at|date:'Y/m/d' }}{% else %}{% now 'Y/m/d' %}{% endif %}</span>
 | 
					                                <span>
 | 
				
			||||||
 | 
					                                    <span class="locale_date" data-format="YYYY/MM/DD">{{ vm.created_at|date:'Y-m-d h:i a' }}</span> - <span class="locale_date" data-format="YYYY/MM/DD">{{ subscription_end_date|date:'Y-m-d h:i a' }}</span>
 | 
				
			||||||
 | 
					                                </span>
 | 
				
			||||||
                            </p>
 | 
					                            </p>
 | 
				
			||||||
                        {% endif %}
 | 
					                        {% endif %}
 | 
				
			||||||
                        <p>
 | 
					                        <p>
 | 
				
			||||||
| 
						 | 
					@ -194,12 +196,16 @@
 | 
				
			||||||
<script type="text/javascript">
 | 
					<script type="text/javascript">
 | 
				
			||||||
    {% trans "Some problem encountered. Please try again later." as err_msg %}
 | 
					    {% trans "Some problem encountered. Please try again later." as err_msg %}
 | 
				
			||||||
    var create_vm_error_message = '{{err_msg|safe}}';
 | 
					    var create_vm_error_message = '{{err_msg|safe}}';
 | 
				
			||||||
 | 
					 | 
				
			||||||
    window.onload = function () {
 | 
					    window.onload = function () {
 | 
				
			||||||
        var locale_date = moment.utc(document.getElementById("order-created_at").textContent, 'YYYY-MM-DD HH:mm').toDate();
 | 
					        var locale_dates = document.getElementsByClassName("locale_date");
 | 
				
			||||||
        locale_date = moment(locale_date).format("YYYY-MM-DD h:mm:ss a");
 | 
					        var formats = ['YYYY-MM-DD hh:mm a']
 | 
				
			||||||
        document.getElementById('order-created_at').innerHTML = locale_date;
 | 
					        var i;
 | 
				
			||||||
 | 
					        for (i = 0; i < locale_dates.length; i++) {
 | 
				
			||||||
 | 
					            var oldDate = moment.utc(locale_dates[i].textContent, formats);
 | 
				
			||||||
 | 
					            var outputFormat = locale_dates[i].getAttribute('data-format') || oldDate._f;
 | 
				
			||||||
 | 
					            locale_dates[i].innerHTML = oldDate.local().format(outputFormat);
 | 
				
			||||||
 | 
					            locale_dates[i].className += ' done';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
{%endblock%}
 | 
					{%endblock%}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,37 +1,40 @@
 | 
				
			||||||
{% extends "hosting/base_short.html" %}
 | 
					{% extends "hosting/base_short.html" %}
 | 
				
			||||||
{% load staticfiles bootstrap3%}
 | 
					{% load staticfiles bootstrap3 i18n %}
 | 
				
			||||||
{% load i18n %}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block navbar %}
 | 
					{% block navbar %}
 | 
				
			||||||
    {% include  'hosting/includes/_navbar_transparent.html' %}
 | 
					    {% include 'hosting/includes/_navbar_transparent.html' %}
 | 
				
			||||||
{% endblock navbar %}
 | 
					{% endblock navbar %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<div class="auth-container">
 | 
					    <div class="auth-container">
 | 
				
			||||||
   <div class="auth-bg"></div>
 | 
					       <div class="auth-bg"></div>
 | 
				
			||||||
        <div class="auth-center">
 | 
					        <div class="auth-center">
 | 
				
			||||||
            <div class="auth-title">
 | 
					            <div class="auth-content wide">
 | 
				
			||||||
                <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
 | 
					                <div class="auth-box sign-up">
 | 
				
			||||||
            </div>
 | 
					                    <h1 class="section-heading">{% trans "Resend activation link" %}</h1>
 | 
				
			||||||
            <div class="auth-content">
 | 
					                    {% include 'hosting/includes/_messages.html' %}
 | 
				
			||||||
                <div class="intro-message auth-box sign-up">
 | 
					 | 
				
			||||||
                    <h2  class="section-heading">{% trans "Resend activation link"%}</h2>
 | 
					 | 
				
			||||||
                    {% include  'hosting/includes/_messages.html' %}
 | 
					 | 
				
			||||||
                    <form action="{% url 'hosting:resend_activation_link' %}" method="post" class="form" novalidate>
 | 
					                    <form action="{% url 'hosting:resend_activation_link' %}" method="post" class="form" novalidate>
 | 
				
			||||||
                        {% csrf_token %}
 | 
					                        {% csrf_token %}
 | 
				
			||||||
                        {% for field in form %}
 | 
					                        {% for field in form %}
 | 
				
			||||||
                            {% bootstrap_field field show_label=False %}
 | 
					                            {% bootstrap_field field show_label=False %}
 | 
				
			||||||
                        {% endfor %}
 | 
					                        {% endfor %}
 | 
				
			||||||
                        {% buttons %}
 | 
					                        <div class="text-center">
 | 
				
			||||||
                            <button type="submit" class="btn btn-block btn-success">
 | 
					                            <button type="submit" class="btn choice-btn">
 | 
				
			||||||
                                {% trans "Submit"%}
 | 
					                                {% trans "Submit"%}
 | 
				
			||||||
                            </button>
 | 
					                            </button>
 | 
				
			||||||
                        {% endbuttons %}
 | 
					                        </div>
 | 
				
			||||||
                    </form>
 | 
					                    </form>
 | 
				
			||||||
 | 
					                    <div class="auth-footer">
 | 
				
			||||||
 | 
					                        <div>
 | 
				
			||||||
 | 
					                            {% trans "Don't have an account yet ?" %} 
 | 
				
			||||||
 | 
					                            <a class="" href="{% url 'hosting:signup' %}">{% trans "Sign up" %}</a>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div>
 | 
				
			||||||
 | 
					                            or <a href="{% url 'hosting:reset_password' %}">{% trans "Forgot your password ?" %}</a>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
</div>
 | 
					    </div>
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,44 +1,37 @@
 | 
				
			||||||
{% extends "hosting/base_short.html" %}
 | 
					{% extends "hosting/base_short.html" %}
 | 
				
			||||||
{% load staticfiles bootstrap3%}
 | 
					{% load i18n staticfiles bootstrap3%}
 | 
				
			||||||
{% load i18n %}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block navbar %}
 | 
					{% block navbar %}
 | 
				
			||||||
    {% include  'hosting/includes/_navbar_transparent.html' %}
 | 
					    {% include 'hosting/includes/_navbar_transparent.html' %}
 | 
				
			||||||
{% endblock navbar %}
 | 
					{% endblock navbar %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<div class="auth-container">
 | 
					    <div class="auth-container">
 | 
				
			||||||
   <div class="auth-bg"></div>
 | 
					        <div class="auth-bg"></div>
 | 
				
			||||||
        <div class="auth-center">
 | 
					        <div class="auth-center">
 | 
				
			||||||
            <div class="auth-title">
 | 
					 | 
				
			||||||
                <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
            <div class="auth-content">
 | 
					            <div class="auth-content">
 | 
				
			||||||
                <div class="intro-message auth-box sign-up">
 | 
					                <div class="auth-box sign-up">
 | 
				
			||||||
                    <h2  class="section-heading">{% trans "Reset your password"%}</h2>
 | 
					                    <h1 class="section-heading">{% trans "Password reset" %}</h1>
 | 
				
			||||||
                    {% include  'hosting/includes/_messages.html' %}
 | 
					                    {% include 'hosting/includes/_messages.html' %}
 | 
				
			||||||
                    <form action="{% url 'hosting:reset_password' %}" method="post" class="form" novalidate>
 | 
					                    <form action="{% url 'hosting:reset_password' %}" method="post" class="form" novalidate>
 | 
				
			||||||
                        {% csrf_token %}
 | 
					                        {% csrf_token %}
 | 
				
			||||||
                        {% for field in form %}
 | 
					                        {% for field in form %}
 | 
				
			||||||
                            {% bootstrap_field field show_label=False %}
 | 
					                            {% bootstrap_field field show_label=False %}
 | 
				
			||||||
                        {% endfor %}
 | 
					                        {% endfor %}
 | 
				
			||||||
                        {% buttons %}
 | 
					                        <div class="text-center">
 | 
				
			||||||
                            <button type="submit" class="btn btn-block btn-success">
 | 
					                            <button type="submit" class="btn choice-btn">
 | 
				
			||||||
                                {% trans "Reset"%}
 | 
					                                {% trans "Reset" %}
 | 
				
			||||||
                            </button>
 | 
					                            </button>
 | 
				
			||||||
                        {% endbuttons %}
 | 
					                        </div>
 | 
				
			||||||
                    </form>
 | 
					                    </form>
 | 
				
			||||||
                    <div class="auth-footer">
 | 
					                    <div class="auth-footer">
 | 
				
			||||||
                        <div class="text">
 | 
					                        <div>
 | 
				
			||||||
                            <span>{% trans "Already have an account ?"%}</span>
 | 
					                            <span>{% trans "Already have an account ?" %}</span> 
 | 
				
			||||||
                        </div>
 | 
					                            <a href="{% url 'hosting:login' %}">{% trans "Login" %}</a>
 | 
				
			||||||
                        <div class="links">
 | 
					 | 
				
			||||||
                           <a class="unlink" href="{% url 'hosting:login' %}">{% trans "Login"%}</a>
 | 
					 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
</div>
 | 
					    </div>
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,41 +2,36 @@
 | 
				
			||||||
{% load staticfiles bootstrap3 i18n %}
 | 
					{% load staticfiles bootstrap3 i18n %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block navbar %}
 | 
					{% block navbar %}
 | 
				
			||||||
    {% include  'hosting/includes/_navbar_transparent.html' %}
 | 
					    {% include 'hosting/includes/_navbar_transparent.html' %}
 | 
				
			||||||
{% endblock navbar %}
 | 
					{% endblock navbar %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<div class="auth-container auth-signup">
 | 
					    <div class="auth-container auth-signup">
 | 
				
			||||||
   <div class="auth-bg"></div>
 | 
					        <div class="auth-bg"></div>
 | 
				
			||||||
    <div class="auth-center ">
 | 
					        <div class="auth-center ">
 | 
				
			||||||
        <div class="auth-title">
 | 
					            <div class="auth-content">
 | 
				
			||||||
            <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
 | 
					                <div class="auth-box sign-up">
 | 
				
			||||||
        </div>
 | 
					                    <h1 class="section-heading allcaps">{% trans "Sign up" %}</h1>
 | 
				
			||||||
        <div class="auth-content">
 | 
					                    {% include 'hosting/includes/_messages.html' %}
 | 
				
			||||||
            <div class="intro-message auth-box sign-up">
 | 
					                    <form action="{% url 'hosting:signup' %}" method="post" class="form" novalidate>
 | 
				
			||||||
                <h2  class="section-heading">{% trans "Sign up"%}</h2>
 | 
					                        {% csrf_token %}
 | 
				
			||||||
                {% include  'hosting/includes/_messages.html' %}
 | 
					                        {% for field in form %}
 | 
				
			||||||
                <form action="{% url 'hosting:signup' %}" method="post" class="form" novalidate>
 | 
					                            {% bootstrap_field field show_label=False %}
 | 
				
			||||||
                    {% csrf_token %}
 | 
					                        {% endfor %}
 | 
				
			||||||
                    {% for field in form %}
 | 
					                        <div class="text-center">
 | 
				
			||||||
                        {% bootstrap_field field show_label=False %}
 | 
					                            <button type="submit" class="btn choice-btn">
 | 
				
			||||||
                    {% endfor %}
 | 
					                                {% trans "Sign up" %}
 | 
				
			||||||
                    {% buttons %}
 | 
					                            </button>
 | 
				
			||||||
                        <button type="submit" class="btn btn-block btn-info">
 | 
					                        </div>
 | 
				
			||||||
                            {% trans "Sign up"%}
 | 
					                    </form>
 | 
				
			||||||
                        </button>
 | 
					                    <div class="auth-footer">
 | 
				
			||||||
                    {% endbuttons %}
 | 
					                        <div>
 | 
				
			||||||
                </form>
 | 
					                            <span>{% trans "Already have an account ?" %}</span> 
 | 
				
			||||||
                <div class="auth-footer">
 | 
					                            <a href="{% url 'hosting:login' %}">{% trans "Login" %}</a>
 | 
				
			||||||
                    <div class="text">
 | 
					                        </div>
 | 
				
			||||||
                        <span>{% trans "Already have an account ?"%}</span>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="links">
 | 
					 | 
				
			||||||
                       <a class="unlink" href="{% url 'hosting:login' %}">{% trans "Login"%}</a>
 | 
					 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					             </div>
 | 
				
			||||||
         </div>
 | 
					        </div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,21 +6,17 @@
 | 
				
			||||||
{% endblock navbar %}
 | 
					{% endblock navbar %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<div class="auth-container">
 | 
					    <div class="auth-container">
 | 
				
			||||||
   <div class="auth-bg"></div>
 | 
					        <div class="auth-bg"></div>
 | 
				
			||||||
    <div class="auth-center">
 | 
					        <div class="auth-center">
 | 
				
			||||||
            <div class="auth-title">
 | 
					            <div class="auth-content wide">
 | 
				
			||||||
                <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
 | 
					 | 
				
			||||||
                {% include  'hosting/includes/_messages.html' %}
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
            <div class="auth-content">
 | 
					 | 
				
			||||||
                <div class="intro-message auth-box sign-up">
 | 
					                <div class="intro-message auth-box sign-up">
 | 
				
			||||||
                    <h2  class="section-heading">{{section_title}}</h2>
 | 
					                    <h2 class="section-heading">{{section_title}}</h2>
 | 
				
			||||||
                    <div class="sign-up-message">
 | 
					                    <div class="sign-up-message">
 | 
				
			||||||
                         {{message}}
 | 
					                        {{message}}
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -267,6 +267,8 @@ class SignupValidatedView(SignupValidateView):
 | 
				
			||||||
        login_url = '<a href="' + \
 | 
					        login_url = '<a href="' + \
 | 
				
			||||||
                    reverse('hosting:login') + '">' + str(_('login')) + '</a>'
 | 
					                    reverse('hosting:login') + '">' + str(_('login')) + '</a>'
 | 
				
			||||||
        section_title = _('Account activation')
 | 
					        section_title = _('Account activation')
 | 
				
			||||||
 | 
					        user = CustomUser.objects.filter(
 | 
				
			||||||
 | 
					            validation_slug=self.kwargs['validate_slug']).first()
 | 
				
			||||||
        if validated:
 | 
					        if validated:
 | 
				
			||||||
            message = ('{account_activation_string} <br />'
 | 
					            message = ('{account_activation_string} <br />'
 | 
				
			||||||
                       ' {login_string} {lurl}.').format(
 | 
					                       ' {login_string} {lurl}.').format(
 | 
				
			||||||
| 
						 | 
					@ -274,6 +276,21 @@ class SignupValidatedView(SignupValidateView):
 | 
				
			||||||
                    "Your account has been activated."),
 | 
					                    "Your account has been activated."),
 | 
				
			||||||
                login_string=_("You can now"),
 | 
					                login_string=_("You can now"),
 | 
				
			||||||
                lurl=login_url)
 | 
					                lurl=login_url)
 | 
				
			||||||
 | 
					            email_data = {
 | 
				
			||||||
 | 
					                'subject': _('Welcome to Data Center Light!'),
 | 
				
			||||||
 | 
					                'to': user.email,
 | 
				
			||||||
 | 
					                'context': {
 | 
				
			||||||
 | 
					                    'base_url': "{0}://{1}".format(
 | 
				
			||||||
 | 
					                        self.request.scheme,
 | 
				
			||||||
 | 
					                        self.request.get_host()
 | 
				
			||||||
 | 
					                    )
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                'template_name': 'welcome_user',
 | 
				
			||||||
 | 
					                'template_path': 'datacenterlight/emails/',
 | 
				
			||||||
 | 
					                'from_address': settings.DCL_SUPPORT_FROM_ADDRESS,
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            email = BaseEmail(**email_data)
 | 
				
			||||||
 | 
					            email.send()
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            home_url = '<a href="' + \
 | 
					            home_url = '<a href="' + \
 | 
				
			||||||
                       reverse('datacenterlight:index') + \
 | 
					                       reverse('datacenterlight:index') + \
 | 
				
			||||||
| 
						 | 
					@ -686,6 +703,7 @@ class OrdersHostingDetailView(LoginRequiredMixin,
 | 
				
			||||||
                    disk_size=context['vm']['disk_size'],
 | 
					                    disk_size=context['vm']['disk_size'],
 | 
				
			||||||
                    memory=context['vm']['memory']
 | 
					                    memory=context['vm']['memory']
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 | 
					                context['subscription_end_date'] = vm_detail.end_date()
 | 
				
			||||||
            except VMDetail.DoesNotExist:
 | 
					            except VMDetail.DoesNotExist:
 | 
				
			||||||
                try:
 | 
					                try:
 | 
				
			||||||
                    manager = OpenNebulaManager(
 | 
					                    manager = OpenNebulaManager(
 | 
				
			||||||
| 
						 | 
					@ -1048,6 +1066,7 @@ class VirtualMachineView(LoginRequiredMixin, View):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            vm_data = VirtualMachineSerializer(manager.get_vm(vm.id)).data
 | 
					            vm_data = VirtualMachineSerializer(manager.get_vm(vm.id)).data
 | 
				
			||||||
 | 
					            vm_name = vm_data.get('name')
 | 
				
			||||||
        except WrongIdError:
 | 
					        except WrongIdError:
 | 
				
			||||||
            return redirect(reverse('hosting:virtual_machines'))
 | 
					            return redirect(reverse('hosting:virtual_machines'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1073,10 +1092,11 @@ class VirtualMachineView(LoginRequiredMixin, View):
 | 
				
			||||||
                else:
 | 
					                else:
 | 
				
			||||||
                    sleep(2)
 | 
					                    sleep(2)
 | 
				
			||||||
            context = {
 | 
					            context = {
 | 
				
			||||||
                'vm': vm_data,
 | 
					                'vm_name': vm_name,
 | 
				
			||||||
                'base_url': "{0}://{1}".format(self.request.scheme,
 | 
					                'base_url': "{0}://{1}".format(self.request.scheme,
 | 
				
			||||||
                                               self.request.get_host()),
 | 
					                                               self.request.get_host()),
 | 
				
			||||||
                'page_header': _('Virtual Machine Cancellation')
 | 
					                'page_header': _('Virtual Machine %(vm_name)s Cancelled') % {
 | 
				
			||||||
 | 
					                    'vm_name': vm_name}
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            email_data = {
 | 
					            email_data = {
 | 
				
			||||||
                'subject': context['page_header'],
 | 
					                'subject': context['page_header'],
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										62
									
								
								ungleich_page/cms_menus.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								ungleich_page/cms_menus.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,62 @@
 | 
				
			||||||
 | 
					from menus.base import NavigationNode
 | 
				
			||||||
 | 
					from menus.menu_pool import menu_pool
 | 
				
			||||||
 | 
					from django.utils.translation import ugettext_lazy as _
 | 
				
			||||||
 | 
					from cms.menu_bases import CMSAttachMenu
 | 
				
			||||||
 | 
					from cms.templatetags.cms_tags import _get_placeholder
 | 
				
			||||||
 | 
					from cms.utils.plugins import get_plugins
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class GlasfaserMenu(CMSAttachMenu):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    name = _("Glasfaser menu")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_nodes(self, request):
 | 
				
			||||||
 | 
					        nodes = []
 | 
				
			||||||
 | 
					        glasfaser_cms = 'ungleich_page/glasfaser_cms_page.html'
 | 
				
			||||||
 | 
					        if request and request.current_page.get_template() == glasfaser_cms:
 | 
				
			||||||
 | 
					            template_context = {
 | 
				
			||||||
 | 
					                "request": request,
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            placeholder_name_list = [
 | 
				
			||||||
 | 
					                'Top Section', 'Middle Section',  'Glasfaser Services',
 | 
				
			||||||
 | 
					                'Glasfaser About', 'Contact Section'
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					            plugins_list = [
 | 
				
			||||||
 | 
					                'SectionWithImage', 'UngelichContactUsSection',
 | 
				
			||||||
 | 
					                'UngelichTextSection', 'Service', 'About'
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					            for placeholder_name in placeholder_name_list:
 | 
				
			||||||
 | 
					                placeholder = _get_placeholder(
 | 
				
			||||||
 | 
					                    request.current_page, request.current_page,
 | 
				
			||||||
 | 
					                    template_context, placeholder_name
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					                plugins = get_plugins(
 | 
				
			||||||
 | 
					                    request, placeholder, request.current_page.get_template()
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					                for plugin in plugins:
 | 
				
			||||||
 | 
					                    if type(plugin).__name__ in plugins_list:
 | 
				
			||||||
 | 
					                        section_hash = request.build_absolute_uri()
 | 
				
			||||||
 | 
					                        if hasattr(plugin, 'menu_text'):
 | 
				
			||||||
 | 
					                            menu_text = plugin.menu_text
 | 
				
			||||||
 | 
					                            if menu_text.strip() == '':
 | 
				
			||||||
 | 
					                                continue
 | 
				
			||||||
 | 
					                            menu_words = menu_text.split()
 | 
				
			||||||
 | 
					                            if len(menu_words) > 0:
 | 
				
			||||||
 | 
					                                section_hash = '{}#{}'.format(
 | 
				
			||||||
 | 
					                                    section_hash,
 | 
				
			||||||
 | 
					                                    menu_words[0]
 | 
				
			||||||
 | 
					                                )
 | 
				
			||||||
 | 
					                        else:
 | 
				
			||||||
 | 
					                            continue
 | 
				
			||||||
 | 
					                        newnode = NavigationNode(
 | 
				
			||||||
 | 
					                            menu_text,
 | 
				
			||||||
 | 
					                            url=section_hash,
 | 
				
			||||||
 | 
					                            id="{}-{}".format(
 | 
				
			||||||
 | 
					                                request.current_page.id, plugin.id
 | 
				
			||||||
 | 
					                            )
 | 
				
			||||||
 | 
					                        )
 | 
				
			||||||
 | 
					                        nodes.append(newnode)
 | 
				
			||||||
 | 
					        return nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					menu_pool.register_menu(GlasfaserMenu)
 | 
				
			||||||
							
								
								
									
										147
									
								
								ungleich_page/cms_plugins.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								ungleich_page/cms_plugins.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,147 @@
 | 
				
			||||||
 | 
					from cms.plugin_base import CMSPluginBase
 | 
				
			||||||
 | 
					from cms.plugin_pool import plugin_pool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from .models import (
 | 
				
			||||||
 | 
					    UngelichContactUsSection, UngelichTextSection, Service, ServiceItem,
 | 
				
			||||||
 | 
					    About, AboutItem, SectionWithImage
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_section_id(plugin_instance, default):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    A helper function to get the section id from a given menu text
 | 
				
			||||||
 | 
					    :param plugin_instance:
 | 
				
			||||||
 | 
					    :param default: The default section id to return in case a section id
 | 
				
			||||||
 | 
					                    is not found
 | 
				
			||||||
 | 
					    :return: The section id for the plugin_instance
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    section_id = default
 | 
				
			||||||
 | 
					    if hasattr(plugin_instance, 'menu_text'):
 | 
				
			||||||
 | 
					        menu_words = plugin_instance.menu_text.split()
 | 
				
			||||||
 | 
					        if len(menu_words) > 0:
 | 
				
			||||||
 | 
					            section_id = menu_words[0]
 | 
				
			||||||
 | 
					    return section_id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@plugin_pool.register_plugin
 | 
				
			||||||
 | 
					class SectionWithImagePlugin(CMSPluginBase):
 | 
				
			||||||
 | 
					    model = SectionWithImage
 | 
				
			||||||
 | 
					    render_template = "ungleich_page/glasfaser/section_with_image.html"
 | 
				
			||||||
 | 
					    cache = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def render(self, context, instance, placeholder):
 | 
				
			||||||
 | 
					        context.update({
 | 
				
			||||||
 | 
					            'image': instance.image,
 | 
				
			||||||
 | 
					            'object': instance,
 | 
				
			||||||
 | 
					            'placeholder': placeholder
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@plugin_pool.register_plugin
 | 
				
			||||||
 | 
					class SectionContact(CMSPluginBase):
 | 
				
			||||||
 | 
					    model = UngelichContactUsSection
 | 
				
			||||||
 | 
					    render_template = "ungleich_page/glasfaser/section_contact.html"
 | 
				
			||||||
 | 
					    cache = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def render(self, context, instance, placeholder):
 | 
				
			||||||
 | 
					        context = super(SectionContact, self).render(
 | 
				
			||||||
 | 
					            context, instance, placeholder
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        context['instance'] = instance
 | 
				
			||||||
 | 
					        context['section_id'] = get_section_id(instance, 'contact')
 | 
				
			||||||
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@plugin_pool.register_plugin
 | 
				
			||||||
 | 
					class SectionTextParagraphDCL(CMSPluginBase):
 | 
				
			||||||
 | 
					    model = UngelichTextSection
 | 
				
			||||||
 | 
					    render_template = "ungleich_page/glasfaser/section_text_dcl.html"
 | 
				
			||||||
 | 
					    cache = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def render(self, context, instance, placeholder):
 | 
				
			||||||
 | 
					        context = super(SectionTextParagraphDCL, self).render(
 | 
				
			||||||
 | 
					            context, instance, placeholder
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        context['instance'] = instance
 | 
				
			||||||
 | 
					        context['section_id'] = get_section_id(instance, 'your')
 | 
				
			||||||
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@plugin_pool.register_plugin
 | 
				
			||||||
 | 
					class SectionTextParagraphGlasfaser(CMSPluginBase):
 | 
				
			||||||
 | 
					    model = UngelichTextSection
 | 
				
			||||||
 | 
					    render_template = "ungleich_page/glasfaser/section_text_glasfaser.html"
 | 
				
			||||||
 | 
					    cache = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def render(self, context, instance, placeholder):
 | 
				
			||||||
 | 
					        context = super(SectionTextParagraphGlasfaser, self).render(
 | 
				
			||||||
 | 
					            context, instance, placeholder
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        context['instance'] = instance
 | 
				
			||||||
 | 
					        context['section_id'] = get_section_id(instance, 'our')
 | 
				
			||||||
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@plugin_pool.register_plugin
 | 
				
			||||||
 | 
					class GlasfaserServicesPlugin(CMSPluginBase):
 | 
				
			||||||
 | 
					    name = "Glasfaser Services Plugin"
 | 
				
			||||||
 | 
					    model = Service
 | 
				
			||||||
 | 
					    render_template = "ungleich_page/glasfaser/section_services.html"
 | 
				
			||||||
 | 
					    cache = False
 | 
				
			||||||
 | 
					    allow_children = True
 | 
				
			||||||
 | 
					    child_classes = ['GlasfaserServicesItemPlugin']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def render(self, context, instance, placeholder):
 | 
				
			||||||
 | 
					        context['service_instance'] = instance
 | 
				
			||||||
 | 
					        context['section_id'] = get_section_id(instance, 'services')
 | 
				
			||||||
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@plugin_pool.register_plugin
 | 
				
			||||||
 | 
					class GlasfaserServicesItemPlugin(CMSPluginBase):
 | 
				
			||||||
 | 
					    name = "Glasfaser Service Item Plugin"
 | 
				
			||||||
 | 
					    model = ServiceItem
 | 
				
			||||||
 | 
					    render_template = "ungleich_page/glasfaser/_services_item.html"
 | 
				
			||||||
 | 
					    cache = False
 | 
				
			||||||
 | 
					    require_parent = True
 | 
				
			||||||
 | 
					    parent_classes = ['GlasfaserServicesPlugin']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def render(self, context, instance, placeholder):
 | 
				
			||||||
 | 
					        context = super(GlasfaserServicesItemPlugin, self).render(
 | 
				
			||||||
 | 
					            context, instance, placeholder
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        context['instance'] = instance
 | 
				
			||||||
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@plugin_pool.register_plugin
 | 
				
			||||||
 | 
					class GlasfaserAboutPlugin(CMSPluginBase):
 | 
				
			||||||
 | 
					    name = "Glasfaser About Plugin"
 | 
				
			||||||
 | 
					    model = About
 | 
				
			||||||
 | 
					    render_template = "ungleich_page/glasfaser/section_about.html"
 | 
				
			||||||
 | 
					    cache = False
 | 
				
			||||||
 | 
					    allow_children = True
 | 
				
			||||||
 | 
					    child_classes = ['GlasfaserAboutItemPlugin']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def render(self, context, instance, placeholder):
 | 
				
			||||||
 | 
					        context['about_instance'] = instance
 | 
				
			||||||
 | 
					        context['section_id'] = get_section_id(instance, 'about')
 | 
				
			||||||
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@plugin_pool.register_plugin
 | 
				
			||||||
 | 
					class GlasfaserAboutItemPlugin(CMSPluginBase):
 | 
				
			||||||
 | 
					    name = "Glasfaser About Item Plugin"
 | 
				
			||||||
 | 
					    model = AboutItem
 | 
				
			||||||
 | 
					    render_template = "ungleich_page/glasfaser/_about_item.html"
 | 
				
			||||||
 | 
					    cache = False
 | 
				
			||||||
 | 
					    require_parent = True
 | 
				
			||||||
 | 
					    parent_classes = ['GlasfaserAboutPlugin']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def render(self, context, instance, placeholder):
 | 
				
			||||||
 | 
					        context = super(GlasfaserAboutItemPlugin, self).render(
 | 
				
			||||||
 | 
					            context, instance, placeholder
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        context['instance'] = instance
 | 
				
			||||||
 | 
					        return context
 | 
				
			||||||
							
								
								
									
										106
									
								
								ungleich_page/migrations/0001_initial.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								ungleich_page/migrations/0001_initial.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,106 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2017-10-18 18:23
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					import django.db.models.deletion
 | 
				
			||||||
 | 
					import djangocms_text_ckeditor.fields
 | 
				
			||||||
 | 
					import filer.fields.image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    initial = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('filer', '0004_auto_20160328_1434'),
 | 
				
			||||||
 | 
					        ('cms', '0014_auto_20160404_1908'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.CreateModel(
 | 
				
			||||||
 | 
					            name='Service',
 | 
				
			||||||
 | 
					            fields=[
 | 
				
			||||||
 | 
					                ('cmsplugin_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='cms.CMSPlugin')),
 | 
				
			||||||
 | 
					                ('title', models.CharField(max_length=200)),
 | 
				
			||||||
 | 
					                ('sub_title', models.CharField(max_length=200)),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            options={
 | 
				
			||||||
 | 
					                'abstract': False,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            bases=('cms.cmsplugin',),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.CreateModel(
 | 
				
			||||||
 | 
					            name='ServiceItem',
 | 
				
			||||||
 | 
					            fields=[
 | 
				
			||||||
 | 
					                ('cmsplugin_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='cms.CMSPlugin')),
 | 
				
			||||||
 | 
					                ('title', models.CharField(max_length=200)),
 | 
				
			||||||
 | 
					                ('description', djangocms_text_ckeditor.fields.HTMLField()),
 | 
				
			||||||
 | 
					                ('image', filer.fields.image.FilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='service_item_image', to='filer.Image')),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            options={
 | 
				
			||||||
 | 
					                'abstract': False,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            bases=('cms.cmsplugin',),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.CreateModel(
 | 
				
			||||||
 | 
					            name='UngelichContactUsSection',
 | 
				
			||||||
 | 
					            fields=[
 | 
				
			||||||
 | 
					                ('cmsplugin_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='cms.CMSPlugin')),
 | 
				
			||||||
 | 
					                ('email', models.EmailField(max_length=200)),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            options={
 | 
				
			||||||
 | 
					                'abstract': False,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            bases=('cms.cmsplugin',),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.CreateModel(
 | 
				
			||||||
 | 
					            name='UngelichPicture',
 | 
				
			||||||
 | 
					            fields=[
 | 
				
			||||||
 | 
					                ('cmsplugin_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='cms.CMSPlugin')),
 | 
				
			||||||
 | 
					                ('title', models.CharField(max_length=400)),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            options={
 | 
				
			||||||
 | 
					                'abstract': False,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            bases=('cms.cmsplugin',),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.CreateModel(
 | 
				
			||||||
 | 
					            name='UngelichTextSection',
 | 
				
			||||||
 | 
					            fields=[
 | 
				
			||||||
 | 
					                ('cmsplugin_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='cms.CMSPlugin')),
 | 
				
			||||||
 | 
					                ('title', models.CharField(max_length=200)),
 | 
				
			||||||
 | 
					                ('description', djangocms_text_ckeditor.fields.HTMLField()),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            options={
 | 
				
			||||||
 | 
					                'abstract': False,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            bases=('cms.cmsplugin',),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.CreateModel(
 | 
				
			||||||
 | 
					            name='About',
 | 
				
			||||||
 | 
					            fields=[
 | 
				
			||||||
 | 
					                ('service_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ungleich_page.Service')),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            options={
 | 
				
			||||||
 | 
					                'abstract': False,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            bases=('ungleich_page.service',),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.CreateModel(
 | 
				
			||||||
 | 
					            name='AboutItem',
 | 
				
			||||||
 | 
					            fields=[
 | 
				
			||||||
 | 
					                ('ungelichpicture_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ungleich_page.UngelichPicture')),
 | 
				
			||||||
 | 
					                ('inverted', models.BooleanField(default=False)),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            options={
 | 
				
			||||||
 | 
					                'abstract': False,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            bases=('ungleich_page.ungelichpicture',),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='ungelichpicture',
 | 
				
			||||||
 | 
					            name='image',
 | 
				
			||||||
 | 
					            field=filer.fields.image.FilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='image', to='filer.Image'),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
							
								
								
									
										30
									
								
								ungleich_page/migrations/0002_sectionwithimage.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								ungleich_page/migrations/0002_sectionwithimage.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,30 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2017-10-18 22:02
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					import django.db.models.deletion
 | 
				
			||||||
 | 
					import filer.fields.image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('filer', '0004_auto_20160328_1434'),
 | 
				
			||||||
 | 
					        ('ungleich_page', '0001_initial'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.CreateModel(
 | 
				
			||||||
 | 
					            name='SectionWithImage',
 | 
				
			||||||
 | 
					            fields=[
 | 
				
			||||||
 | 
					                ('ungelichpicture_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ungleich_page.UngelichPicture')),
 | 
				
			||||||
 | 
					                ('price_tag_url', models.URLField(default='', max_length=300)),
 | 
				
			||||||
 | 
					                ('price_tag_image', filer.fields.image.FilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='price_tag_image', to='filer.Image')),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            options={
 | 
				
			||||||
 | 
					                'abstract': False,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            bases=('ungleich_page.ungelichpicture',),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
							
								
								
									
										35
									
								
								ungleich_page/migrations/0003_auto_20171019_1007.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								ungleich_page/migrations/0003_auto_20171019_1007.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,35 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2017-10-19 10:07
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('ungleich_page', '0002_sectionwithimage'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='sectionwithimage',
 | 
				
			||||||
 | 
					            name='menu_text',
 | 
				
			||||||
 | 
					            field=models.CharField(default='', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='service',
 | 
				
			||||||
 | 
					            name='menu_text',
 | 
				
			||||||
 | 
					            field=models.CharField(default='', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='ungelichcontactussection',
 | 
				
			||||||
 | 
					            name='menu_text',
 | 
				
			||||||
 | 
					            field=models.CharField(default='', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='ungelichtextsection',
 | 
				
			||||||
 | 
					            name='menu_text',
 | 
				
			||||||
 | 
					            field=models.CharField(default='', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
							
								
								
									
										40
									
								
								ungleich_page/migrations/0004_auto_20171019_1113.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								ungleich_page/migrations/0004_auto_20171019_1113.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,40 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2017-10-19 11:13
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('ungleich_page', '0003_auto_20171019_1007'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.AlterField(
 | 
				
			||||||
 | 
					            model_name='sectionwithimage',
 | 
				
			||||||
 | 
					            name='menu_text',
 | 
				
			||||||
 | 
					            field=models.CharField(blank=True, default='', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AlterField(
 | 
				
			||||||
 | 
					            model_name='sectionwithimage',
 | 
				
			||||||
 | 
					            name='price_tag_url',
 | 
				
			||||||
 | 
					            field=models.URLField(blank=True, default='', max_length=300),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AlterField(
 | 
				
			||||||
 | 
					            model_name='service',
 | 
				
			||||||
 | 
					            name='menu_text',
 | 
				
			||||||
 | 
					            field=models.CharField(blank=True, default='', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AlterField(
 | 
				
			||||||
 | 
					            model_name='ungelichcontactussection',
 | 
				
			||||||
 | 
					            name='menu_text',
 | 
				
			||||||
 | 
					            field=models.CharField(blank=True, default='', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AlterField(
 | 
				
			||||||
 | 
					            model_name='ungelichtextsection',
 | 
				
			||||||
 | 
					            name='menu_text',
 | 
				
			||||||
 | 
					            field=models.CharField(blank=True, default='', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
							
								
								
									
										45
									
								
								ungleich_page/migrations/0005_auto_20171019_1517.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								ungleich_page/migrations/0005_auto_20171019_1517.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,45 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2017-10-19 15:17
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('ungleich_page', '0004_auto_20171019_1113'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='ungelichcontactussection',
 | 
				
			||||||
 | 
					            name='address',
 | 
				
			||||||
 | 
					            field=models.CharField(blank=True, default='In der Au 7, Schwanden 8762', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='ungelichcontactussection',
 | 
				
			||||||
 | 
					            name='contact_form_header_text',
 | 
				
			||||||
 | 
					            field=models.CharField(blank=True, default='Send us a message.', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='ungelichcontactussection',
 | 
				
			||||||
 | 
					            name='contact_text',
 | 
				
			||||||
 | 
					            field=models.CharField(blank=True, default='Contact', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='ungelichcontactussection',
 | 
				
			||||||
 | 
					            name='country',
 | 
				
			||||||
 | 
					            field=models.CharField(blank=True, default='Switzerland', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='ungelichcontactussection',
 | 
				
			||||||
 | 
					            name='organization_name',
 | 
				
			||||||
 | 
					            field=models.CharField(blank=True, default='ungleich GmbH', max_length=100),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AlterField(
 | 
				
			||||||
 | 
					            model_name='ungelichcontactussection',
 | 
				
			||||||
 | 
					            name='email',
 | 
				
			||||||
 | 
					            field=models.EmailField(default='info@ungleich.ch', max_length=200),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
							
								
								
									
										20
									
								
								ungleich_page/migrations/0006_aboutitem_link_url.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								ungleich_page/migrations/0006_aboutitem_link_url.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2017-10-20 06:42
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('ungleich_page', '0005_auto_20171019_1517'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='aboutitem',
 | 
				
			||||||
 | 
					            name='link_url',
 | 
				
			||||||
 | 
					            field=models.URLField(blank=True, default='', max_length=300),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,89 @@
 | 
				
			||||||
# from django.db import models
 | 
					from cms.models.pluginmodel import CMSPlugin
 | 
				
			||||||
 | 
					from django.db import models
 | 
				
			||||||
 | 
					from djangocms_text_ckeditor.fields import HTMLField
 | 
				
			||||||
 | 
					from filer.fields.image import FilerImageField
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Create your models here.
 | 
					
 | 
				
			||||||
 | 
					class UngelichPicture(CMSPlugin):
 | 
				
			||||||
 | 
					    image = FilerImageField(
 | 
				
			||||||
 | 
					        null=True,
 | 
				
			||||||
 | 
					        blank=True,
 | 
				
			||||||
 | 
					        related_name="image",
 | 
				
			||||||
 | 
					        on_delete=models.SET_NULL
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    title = models.CharField(max_length=400)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SectionWithImage(UngelichPicture):
 | 
				
			||||||
 | 
					    menu_text = models.CharField(max_length=100, default="", blank=True)
 | 
				
			||||||
 | 
					    price_tag_image = FilerImageField(
 | 
				
			||||||
 | 
					        null=True,
 | 
				
			||||||
 | 
					        blank=True,
 | 
				
			||||||
 | 
					        related_name="price_tag_image",
 | 
				
			||||||
 | 
					        on_delete=models.SET_NULL
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    price_tag_url = models.URLField(max_length=300, default="", blank=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class UngelichContactUsSection(CMSPlugin):
 | 
				
			||||||
 | 
					    menu_text = models.CharField(max_length=100, default="", blank=True)
 | 
				
			||||||
 | 
					    email = models.EmailField(max_length=200, default="info@ungleich.ch")
 | 
				
			||||||
 | 
					    contact_text = models.CharField(
 | 
				
			||||||
 | 
					        max_length=100, default="Contact", blank=True
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    organization_name = models.CharField(
 | 
				
			||||||
 | 
					        max_length=100, default="ungleich GmbH", blank=True
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    address = models.CharField(
 | 
				
			||||||
 | 
					        max_length=100, default="In der Au 7, Schwanden 8762", blank=True
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    country = models.CharField(
 | 
				
			||||||
 | 
					        max_length=100, default="Switzerland", blank=True
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    contact_form_header_text = models.CharField(
 | 
				
			||||||
 | 
					        max_length=100, default="Send us a message.", blank=True
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class UngelichTextSection(CMSPlugin):
 | 
				
			||||||
 | 
					    menu_text = models.CharField(max_length=100, default="", blank=True)
 | 
				
			||||||
 | 
					    title = models.CharField(max_length=200)
 | 
				
			||||||
 | 
					    description = HTMLField()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Service(CMSPlugin):
 | 
				
			||||||
 | 
					    menu_text = models.CharField(max_length=100, default="", blank=True)
 | 
				
			||||||
 | 
					    title = models.CharField(max_length=200)
 | 
				
			||||||
 | 
					    sub_title = models.CharField(max_length=200)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __str__(self):
 | 
				
			||||||
 | 
					        return self.title
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ServiceItem(CMSPlugin):
 | 
				
			||||||
 | 
					    image = FilerImageField(
 | 
				
			||||||
 | 
					        null=True,
 | 
				
			||||||
 | 
					        blank=True,
 | 
				
			||||||
 | 
					        related_name="service_item_image",
 | 
				
			||||||
 | 
					        on_delete=models.SET_NULL
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    title = models.CharField(max_length=200)
 | 
				
			||||||
 | 
					    description = HTMLField()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __str__(self):
 | 
				
			||||||
 | 
					        return self.title
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class About(Service):
 | 
				
			||||||
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class AboutItem(UngelichPicture):
 | 
				
			||||||
 | 
					    inverted = models.BooleanField(default=False)
 | 
				
			||||||
 | 
					    link_url = models.URLField(max_length=300, default="", blank=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __str__(self):
 | 
				
			||||||
 | 
					        alignment = "Right" if self.inverted else "Left"
 | 
				
			||||||
 | 
					        return "{alignment} - {title}".format(
 | 
				
			||||||
 | 
					            alignment=alignment, title=self.title
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										12
									
								
								ungleich_page/static/ungleich_page/css/cms.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								ungleich_page/static/ungleich_page/css/cms.css
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					.lead, .split-description.wow.fadeInUp p{
 | 
				
			||||||
 | 
					    font-family: "Raleway" , "Helvetica Neue", Helvetica, Arial, sans-serif;
 | 
				
			||||||
 | 
					    font-size: 21px;
 | 
				
			||||||
 | 
					    color: #3a3a3a;
 | 
				
			||||||
 | 
					    font-weight: 300 !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@media(min-width: 768px) {
 | 
				
			||||||
 | 
					    .custom-padding-bottom{
 | 
				
			||||||
 | 
					        padding-bottom: 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					<li {% if instance.inverted %}class="timeline-inverted"{% endif %}>
 | 
				
			||||||
 | 
					    {% if instance.link_url %}<a href="{{ instance.link_url }}" target="_blank">{% endif %}
 | 
				
			||||||
 | 
					    <div class="timeline-image">
 | 
				
			||||||
 | 
					      <img class="img-circle img-responsive" src="{{ instance.image.url }}" alt="">
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    {% if instance.link_url %}</a>{% endif %}
 | 
				
			||||||
 | 
					    <div class="timeline-panel wow {% if instance.inverted %}slideInRight{% else %}slideInLeft{% endif %}">
 | 
				
			||||||
 | 
					      <div class="timeline-body">
 | 
				
			||||||
 | 
					        <p>{{ instance.title }}</p>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					</li>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					<div class="team-member wow fadeInUp" data-wow-delay="0.25s">
 | 
				
			||||||
 | 
					  <img src="{{ instance.image.url }}" class="img-responsive img-circle" alt="">
 | 
				
			||||||
 | 
					  <div class="team-member-caption inline-block">
 | 
				
			||||||
 | 
					    <h4 class="portfolio-caption">{{ instance.title }}</h4>
 | 
				
			||||||
 | 
					    <p class="text-muted">{{ instance.description }}</p>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
							
								
								
									
										12
									
								
								ungleich_page/templates/ungleich_page/glasfaser/menus.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								ungleich_page/templates/ungleich_page/glasfaser/menus.html
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					{% load menu_tags %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% for child in children %}
 | 
				
			||||||
 | 
					<li class="child{% if child.selected %} selected{% endif %}{% if child.ancestor %} ancestor{% endif %}{% if child.sibling %} sibling{% endif %}{% if child.descendant %} descendant{% endif %}">
 | 
				
			||||||
 | 
						<a href="{{ child.attr.redirect_url|default:child.get_absolute_url }}" class="page-scroll">{{ child.get_menu_title }}</a>
 | 
				
			||||||
 | 
						{% if child.children %}
 | 
				
			||||||
 | 
						<ul>
 | 
				
			||||||
 | 
							{% show_menu from_level to_level extra_inactive extra_active template "" "" child %}
 | 
				
			||||||
 | 
						</ul>
 | 
				
			||||||
 | 
						{% endif %}
 | 
				
			||||||
 | 
					</li>
 | 
				
			||||||
 | 
					{% endfor %}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					{% load cms_tags %}
 | 
				
			||||||
 | 
					<section id="{{section_id}}">
 | 
				
			||||||
 | 
					  <div class="container">
 | 
				
			||||||
 | 
					    <div class="text-center wow fadeInDown">
 | 
				
			||||||
 | 
					      <h2 class="section-heading">{{ about_instance.title }}</h2>
 | 
				
			||||||
 | 
					      <h3 class="section-subheading text-muted">{{ about_instance.sub_title }}</h3>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class="row">
 | 
				
			||||||
 | 
					      <div class="col-lg-12">
 | 
				
			||||||
 | 
					        <ul class="timeline">
 | 
				
			||||||
 | 
					        {% for plugin in about_instance.child_plugin_instances %}
 | 
				
			||||||
 | 
					            {% render_plugin plugin %}
 | 
				
			||||||
 | 
					        {% endfor %}
 | 
				
			||||||
 | 
					        </ul>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</section>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,83 @@
 | 
				
			||||||
 | 
					{% load i18n %}
 | 
				
			||||||
 | 
					<!-- / contact section -->
 | 
				
			||||||
 | 
					<div id="contact_section" class="full-contact-section">
 | 
				
			||||||
 | 
					  <div class="intro-header-2 contact-section" id="{{section_id}}">
 | 
				
			||||||
 | 
					    <div class="container">
 | 
				
			||||||
 | 
					      <div class="row">
 | 
				
			||||||
 | 
					        <div class="col-sm-6">
 | 
				
			||||||
 | 
					          <div class="title">
 | 
				
			||||||
 | 
					            <h2>{{instance.contact_text}}</h2>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          <div class="contact-details">
 | 
				
			||||||
 | 
					            <div class="subtitle">
 | 
				
			||||||
 | 
					              <h3>{{instance.organization_name}}</h3>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="description">
 | 
				
			||||||
 | 
					              <p>{{instance.email}}</p>
 | 
				
			||||||
 | 
					              <p>{{instance.address}}</p>
 | 
				
			||||||
 | 
					              <p>{{instance.country}}</p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          <div class="social">
 | 
				
			||||||
 | 
					            <a target="_blank" class="" href="https://twitter.com/datacenterlight"><i class="fa fa-twitter fa-fw"></i></a>
 | 
				
			||||||
 | 
					            <a target="_blank"  class=""  href="https://github.com/ungleich"><i class="fa fa-github fa-fw"></i></a>
 | 
				
			||||||
 | 
					            <a target="_blank"  class=""  href="https://www.facebook.com/ungleich.ch/"><i class="fa fa-facebook"></i></a>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div class="col-sm-6">
 | 
				
			||||||
 | 
					          <div id="contact-form" class="contact-form">
 | 
				
			||||||
 | 
					            {% if success %}
 | 
				
			||||||
 | 
					                <div class="contact-form-success">
 | 
				
			||||||
 | 
					                    <div class="subtitle text-center">
 | 
				
			||||||
 | 
					                        <h3>{% trans "Thank you for contacting us." %}</h3>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <p>
 | 
				
			||||||
 | 
					                        {% trans "Your message was successfully sent to our team." %}
 | 
				
			||||||
 | 
					                    </p>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					            {% else %}
 | 
				
			||||||
 | 
					                <div class="row">
 | 
				
			||||||
 | 
					                    <div class="col-sm-offset-2 col-sm-10">
 | 
				
			||||||
 | 
					                        <div class="subtitle">
 | 
				
			||||||
 | 
					                            <h3>{{instance.contact_form_header_text}}</h3>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <form class="form-horizontal ajax-form" method="POST" action="{% url 'datacenterlight:contact_us' %}" data-toggle="validator" data-response="#contact-form">
 | 
				
			||||||
 | 
					                    {% csrf_token %}
 | 
				
			||||||
 | 
					                    <input type="hidden" value="glasfaser" name="from_page">
 | 
				
			||||||
 | 
					                    <div class="form-group">
 | 
				
			||||||
 | 
					                        <label class="control-label col-sm-2" for="name">{% trans "Name" %}</label>
 | 
				
			||||||
 | 
					                        <div class="col-sm-10">
 | 
				
			||||||
 | 
					                            <input id = "name" type="text" name="name" class="form-control" data-minlength="3" data-error="{% trans 'Please enter your name.' %}" required>
 | 
				
			||||||
 | 
					                            {{contact_form.name.errors}}
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="form-group">
 | 
				
			||||||
 | 
					                        <label class="control-label col-sm-2" for="email">{% trans "Email" %}</label>
 | 
				
			||||||
 | 
					                        <div class="col-sm-10">
 | 
				
			||||||
 | 
					                            <input id = "email" name="email" type="email" pattern="^[^@\s]+@([^@\s]+\.)+[^@\s]+$" class="form-control" data-error="{% trans 'Please enter a valid email address.' %}" required>
 | 
				
			||||||
 | 
					                            {{contact_form.email.errors}}
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="form-group">
 | 
				
			||||||
 | 
					                        <label class="control-label col-sm-2" for="message">{% trans "Message" %}</label>
 | 
				
			||||||
 | 
					                        <div class="col-sm-10">
 | 
				
			||||||
 | 
					                            <textarea class="form-control" name="message" id="message" rows="6" required></textarea>
 | 
				
			||||||
 | 
					                            {{contact_form.message.errors}}
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="form-group">
 | 
				
			||||||
 | 
					                        <div class="col-sm-offset-2 col-sm-10 text-right">
 | 
				
			||||||
 | 
					                            <div class="form-error hide">{% trans "Sorry, there was an unexpected error. Kindly retry." %}</div>
 | 
				
			||||||
 | 
					                            <button type="submit" class="btn btn-default">{% trans "SUBMIT" %}</button>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </form>
 | 
				
			||||||
 | 
					            {% endif %}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					{% load static i18n cms_tags %}
 | 
				
			||||||
 | 
					<section id="{{section_id}}" class="custom-padding-bottom">
 | 
				
			||||||
 | 
					  <div class="container">
 | 
				
			||||||
 | 
					    <div class="text-center wow fadeInDown">
 | 
				
			||||||
 | 
					      <h2 class="section-heading">{{ service_instance.title }}</h2>
 | 
				
			||||||
 | 
					      <h3 class="section-subheading text-muted">{{ service_instance.sub_title }}</h3>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class="row text-center">
 | 
				
			||||||
 | 
					        {% for plugin in service_instance.child_plugin_instances %}
 | 
				
			||||||
 | 
					            <div class="col-sm-4">
 | 
				
			||||||
 | 
					            {% render_plugin plugin %}
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        {% endfor %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</section>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					<div class="split-section left" id="{{section_id}}">
 | 
				
			||||||
 | 
					  <div class="container">
 | 
				
			||||||
 | 
					    <div class="split-text">
 | 
				
			||||||
 | 
					      <div class="split-title">
 | 
				
			||||||
 | 
					        <h2>{{instance.title}}</h2>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					      <div class="split-description wow fadeInUp">
 | 
				
			||||||
 | 
					        <p class="lead">{{instance.description}}</p>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,13 @@
 | 
				
			||||||
 | 
					<section class="split-section right" id="{{section_id}}">
 | 
				
			||||||
 | 
					  <div class="container">
 | 
				
			||||||
 | 
					    <div class="split-text text-center">
 | 
				
			||||||
 | 
					      <div class="wow fadeInDown">
 | 
				
			||||||
 | 
					        <h2 class="section-heading text-center">{{instance.title}}</h2>
 | 
				
			||||||
 | 
					        <h3 class="section-subheading text-muted"></h3>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					      <div class="split-description text-center wow fadeInUp">
 | 
				
			||||||
 | 
					        <p class="lead">{{instance.description}}</p>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</section>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					<div class="intro-header" style="background:url({{ image.url }}) no-repeat center center; background-size: cover; background-position: left; background-color: rgb(118, 140, 163); background-attachment: fixed; flex-direction: column; align-items: flex-end; justify-content: space-between; padding-top: 70px;" id="home">
 | 
				
			||||||
 | 
					  <div class="price-tag-container">
 | 
				
			||||||
 | 
					    {% if object.price_tag_url %}<a href="{{ object.price_tag_url }}" target="_blank">{% endif %}{% if object.price_tag_image %}<div style="background:url({{ object.price_tag_image.url }}) no-repeat center center; background-size: cover;" class="price-tag"></div>{% endif %}{% if object.price_tag_url %}</a>{% endif %}
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  <div class="high-speed">
 | 
				
			||||||
 | 
					    <div class="high-speed-border"></div>
 | 
				
			||||||
 | 
					      <h1>{{ object.title }}</h1>
 | 
				
			||||||
 | 
					    <div class="high-speed-border"></div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
							
								
								
									
										107
									
								
								ungleich_page/templates/ungleich_page/glasfaser_cms_page.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								ungleich_page/templates/ungleich_page/glasfaser_cms_page.html
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,107 @@
 | 
				
			||||||
 | 
					{% load static bootstrap3 i18n cms_tags sekizai_tags menu_tags %}
 | 
				
			||||||
 | 
					{% get_current_language as LANGUAGE_CODE %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html lang="{{LANGUAGE_CODE}}">
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					    <meta charset="utf-8">
 | 
				
			||||||
 | 
					    <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
				
			||||||
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
				
			||||||
 | 
					    <meta name="author" content="ungleich GmbH">
 | 
				
			||||||
 | 
					    <meta name="description" content="{% page_attribute 'meta_description' %}">
 | 
				
			||||||
 | 
					    <title>{% page_attribute "page_title" %}</title>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Bootstrap Core CSS -->
 | 
				
			||||||
 | 
					    <link href="{% static 'ungleich_page/css/bootstrap.min.css' %}" rel="stylesheet">
 | 
				
			||||||
 | 
					    <link href="{% static 'ungleich_page/css/lib/animate.min.css' %}" rel="stylesheet">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 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:// -->
 | 
				
			||||||
 | 
					    <!--[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/respond.js/1.4.2/respond.min.js"></script>
 | 
				
			||||||
 | 
					    <![endif]-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <link href="//fonts.googleapis.com/css?family=Open+Sans+Condensed:700|Lato:300,400,700|Montserrat:400,700" rel="stylesheet" type="text/css">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Custom CSS -->
 | 
				
			||||||
 | 
					    <link href="{% static 'ungleich_page/css/agency.css' %}" rel="stylesheet">
 | 
				
			||||||
 | 
					    <link href="{% static 'ungleich_page/css/ungleich.css' %}" rel="stylesheet">
 | 
				
			||||||
 | 
					    <link href="{% static 'datacenterlight/css/landing-page.css' %}" rel="stylesheet">
 | 
				
			||||||
 | 
					    <link href="{% static 'ungleich_page/css/glasfaser.css' %}" rel="stylesheet">
 | 
				
			||||||
 | 
					    {% addtoblock "css" %}
 | 
				
			||||||
 | 
					    <link href="{% static 'ungleich_page/css/cms.css' %}" media="screen" rel="stylesheet" type="text/css"/>
 | 
				
			||||||
 | 
					    {% endaddtoblock %}
 | 
				
			||||||
 | 
					    {% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
 | 
				
			||||||
 | 
					    {% render_block "js" postprocessor "compressor.contrib.sekizai.compress" %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Google analytics -->
 | 
				
			||||||
 | 
					    {% include "google_analytics.html" %}
 | 
				
			||||||
 | 
					    <!-- End Google Analytics -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <link rel="shortcut icon" href="{% static 'ungleich_page/img/favicon.ico' %}" type="image/x-icon">
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<body id="page-top" class="index">
 | 
				
			||||||
 | 
					{% cms_toolbar %}
 | 
				
			||||||
 | 
					    <nav class="navbar navbar-default navbar-fixed-top topnav navbar-transparent">
 | 
				
			||||||
 | 
					      <div class="topnav">
 | 
				
			||||||
 | 
					        <!-- Brand and toggle get grouped for better mobile display -->
 | 
				
			||||||
 | 
					        <div class="navbar-header">
 | 
				
			||||||
 | 
					            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
 | 
				
			||||||
 | 
					              <span class="sr-only">{% trans "Toggle navigation" %}</span>
 | 
				
			||||||
 | 
					              <span class="icon-bar"></span>
 | 
				
			||||||
 | 
					              <span class="icon-bar"></span>
 | 
				
			||||||
 | 
					              <span class="icon-bar"></span>
 | 
				
			||||||
 | 
					            </button>
 | 
				
			||||||
 | 
					            <a href="{% url 'ungleich_page:landing' %}" id="logoBlack" class="navbar-brand topnav"><img src="{% static 'ungleich_page/img/logo_black.svg' %}"></a>
 | 
				
			||||||
 | 
					            <a href="{% url 'ungleich_page:landing' %}" id="logoWhite" class="navbar-brand topnav"><img src="{% static 'ungleich_page/img/logo_white.svg' %}"></a>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
 | 
				
			||||||
 | 
					          <!-- Start Navbar collapse-->
 | 
				
			||||||
 | 
					          <ul class="nav navbar-nav navbar-right">
 | 
				
			||||||
 | 
					              {% show_sub_menu 1 None 100 "ungleich_page/glasfaser/menus.html" %}
 | 
				
			||||||
 | 
					          </ul>
 | 
				
			||||||
 | 
					          <!-- /.navbar-collapse -->
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </nav>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {% placeholder 'Top Section' %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {% placeholder 'Middle Section' %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {% placeholder 'Glasfaser Services' %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {% placeholder 'Glasfaser About' %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {% placeholder 'Contact Section' %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Footer -->
 | 
				
			||||||
 | 
					    {% include "ungleich_page/includes/_footer.html" %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- jQuery -->
 | 
				
			||||||
 | 
					    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js" type="text/javascript"></script>
 | 
				
			||||||
 | 
					    <script type="text/javascript">
 | 
				
			||||||
 | 
					        $(document).ready(function () {
 | 
				
			||||||
 | 
					            if ($(".has-error").length != 0) {
 | 
				
			||||||
 | 
					                window.location = window.location.pathname + "#contact_section"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    </script>
 | 
				
			||||||
 | 
					    <script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" type="text/javascript"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Plugin JavaScript -->
 | 
				
			||||||
 | 
					    <script src="//cdnjs.cloudflare.com/ajax/libs/1000hz-bootstrap-validator/0.11.9/validator.min.js"></script>
 | 
				
			||||||
 | 
					    <script src="//cdnjs.cloudflare.com/ajax/libs/classie/1.0.1/classie.min.js" type="text/javascript"></script>
 | 
				
			||||||
 | 
					    <script src="//cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js" type="text/javascript"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Custom Theme JavaScript -->
 | 
				
			||||||
 | 
					    <script src="{% static 'ungleich_page/js/ungleich.js' %}" type="text/javascript"></script>
 | 
				
			||||||
 | 
					    <script src="{% static 'datacenterlight/js/main.js' %}"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Custom Fonts -->
 | 
				
			||||||
 | 
					    <link href="//fonts.googleapis.com/css?family=Raleway" rel="stylesheet" type="text/css">
 | 
				
			||||||
 | 
					    <link href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
| 
						 | 
					@ -795,7 +795,7 @@ msgstr "Es wurde eine E-Mail mit dem Aktivierungslink an Dich gesendet."
 | 
				
			||||||
msgid "Account Activation"
 | 
					msgid "Account Activation"
 | 
				
			||||||
msgstr "Accountaktivierung"
 | 
					msgstr "Accountaktivierung"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "The link to reset your email has been sent to your email"
 | 
					msgid "The link to reset your password has been sent to your email"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Der Link zum Zurücksetzen deines Passwortes wurde an deine E-Mail gesendet"
 | 
					"Der Link zum Zurücksetzen deines Passwortes wurde an deine E-Mail gesendet"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -104,7 +104,7 @@ class ResendActivationLinkViewMixin(FormView):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PasswordResetViewMixin(FormView):
 | 
					class PasswordResetViewMixin(FormView):
 | 
				
			||||||
    success_message = _(
 | 
					    success_message = _(
 | 
				
			||||||
        "The link to reset your email has been sent to your email")
 | 
					        "The link to reset your password has been sent to your email")
 | 
				
			||||||
    site = ''
 | 
					    site = ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_generate_email_context(self, user):
 | 
					    def test_generate_email_context(self, user):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue