Merge branch 'master' into task/4150/ungleich_mobile_font
This commit is contained in:
		
				commit
				
					
						58491c60da
					
				
			
		
					 47 changed files with 443 additions and 1554 deletions
				
			
		| 
						 | 
					@ -4,7 +4,7 @@ python:
 | 
				
			||||||
#   - "3.6"
 | 
					#   - "3.6"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
env:
 | 
					env:
 | 
				
			||||||
    - DJANGO_SECRET_KEY=0 OPENNEBULA_USERNAME='test' OPENNEBULA_PASSWORD='test' OPENNEBULA_PROTOCOL='http' OPENNEBULA_DOMAIN='test_domain' OPENNEBULA_PORT='2633' OPENNEBULA_ENDPOINT='/RPC2' DCL_TEXT='Data Center Light' CELERY_MAX_RETRIES=0
 | 
					    - DJANGO_SECRET_KEY=0 OPENNEBULA_USERNAME='test' OPENNEBULA_PASSWORD='test' OPENNEBULA_PROTOCOL='http' OPENNEBULA_DOMAIN='test_domain' OPENNEBULA_PORT='2633' OPENNEBULA_ENDPOINT='/RPC2' DCL_TEXT='Data Center Light' CELERY_MAX_RETRIES=0 UNGLEICH_SITE_CONFIGS='{"localhost":{"MULTISITE_CMS_URL":"dynamicweb.urls"}}'
 | 
				
			||||||
# install dependencies
 | 
					# install dependencies
 | 
				
			||||||
install: "pip install -r requirements.txt"
 | 
					install: "pip install -r requirements.txt"
 | 
				
			||||||
script:
 | 
					script:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,12 @@
 | 
				
			||||||
Next:
 | 
					Next:
 | 
				
			||||||
 | 
					    * #3798: [dg] Redirect user to digital glarus on clicking logo in the email
 | 
				
			||||||
 | 
					    * #3554: [dcl] Remove beta access resources
 | 
				
			||||||
 | 
					    * #4166: [glasfaser] heading text not to be blocked by topnav on mobile after navbar menu click
 | 
				
			||||||
 | 
					1.4: 2018-02-22
 | 
				
			||||||
 | 
					    * #4104: [cms, nuglarus] Multisite and access control of cms pages per user
 | 
				
			||||||
 | 
					1.3.3: 2018-02-21
 | 
				
			||||||
 | 
					    * Add ALLOWED_HOST nüglarus.ch IDN
 | 
				
			||||||
 | 
					    * #4105: [cms] Add cms footer plugin
 | 
				
			||||||
    * #4049: [blog] Replace header background image
 | 
					    * #4049: [blog] Replace header background image
 | 
				
			||||||
    * #3670: [hosting] Shorten ssh key name
 | 
					    * #3670: [hosting] Shorten ssh key name
 | 
				
			||||||
    * #4046: [hosting] Add sdd_size, hdd_size to VirtualMachineSerializer (No visual change)
 | 
					    * #4046: [hosting] Add sdd_size, hdd_size to VirtualMachineSerializer (No visual change)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +0,0 @@
 | 
				
			||||||
from django.contrib import admin
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from .models import BetaAccess, BetaAccessVMType, BetaAccessVM
 | 
					 | 
				
			||||||
# Register your models here.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
admin.site.register(BetaAccess)
 | 
					 | 
				
			||||||
admin.site.register(BetaAccessVMType)
 | 
					 | 
				
			||||||
admin.site.register(BetaAccessVM)
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,26 +1,9 @@
 | 
				
			||||||
from django import forms
 | 
					from django import forms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .models import BetaAccess, ContactUs
 | 
					from .models import ContactUs
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class BetaAccessForm(forms.ModelForm):
 | 
					 | 
				
			||||||
    email = forms.CharField(widget=forms.EmailInput())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    class Meta:
 | 
					 | 
				
			||||||
        fields = ['name', 'email']
 | 
					 | 
				
			||||||
        model = BetaAccess
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ContactForm(forms.ModelForm):
 | 
					class ContactForm(forms.ModelForm):
 | 
				
			||||||
 | 
					 | 
				
			||||||
    class Meta:
 | 
					    class Meta:
 | 
				
			||||||
        fields = ['name', 'email', 'message']
 | 
					        fields = ['name', 'email', 'message']
 | 
				
			||||||
        model = ContactUs
 | 
					        model = ContactUs
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# class BetaAccessVMForm(forms.ModelForm):
 | 
					 | 
				
			||||||
#     type = forms.CharField(widget=forms.EmailInput())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#     class Meta:
 | 
					 | 
				
			||||||
#         fields = ['email']
 | 
					 | 
				
			||||||
#         model = BetaAccessVM
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										32
									
								
								datacenterlight/migrations/0011_auto_20180220_1423.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								datacenterlight/migrations/0011_auto_20180220_1423.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,32 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2018-02-20 14:23
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('datacenterlight', '0010_merge'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.RemoveField(
 | 
				
			||||||
 | 
					            model_name='betaaccessvm',
 | 
				
			||||||
 | 
					            name='access',
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.RemoveField(
 | 
				
			||||||
 | 
					            model_name='betaaccessvm',
 | 
				
			||||||
 | 
					            name='type',
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.DeleteModel(
 | 
				
			||||||
 | 
					            name='BetaAccess',
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.DeleteModel(
 | 
				
			||||||
 | 
					            name='BetaAccessVM',
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.DeleteModel(
 | 
				
			||||||
 | 
					            name='BetaAccessVMType',
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -1,56 +1,6 @@
 | 
				
			||||||
from django.db import models
 | 
					from django.db import models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BetaAccessVMType(models.Model):
 | 
					 | 
				
			||||||
    ssd = models.IntegerField()
 | 
					 | 
				
			||||||
    ram = models.IntegerField()
 | 
					 | 
				
			||||||
    cpu = models.IntegerField()
 | 
					 | 
				
			||||||
    price = models.FloatField()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def __str__(self):
 | 
					 | 
				
			||||||
        return "ID: %s - SSD %s - RAM %s - CPU %s - Price %s " % \
 | 
					 | 
				
			||||||
               (self.id, str(self.ssd), self.ram, self.cpu, self.price)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class BetaAccess(models.Model):
 | 
					 | 
				
			||||||
    email = models.CharField(max_length=250)
 | 
					 | 
				
			||||||
    name = models.CharField(max_length=250)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # vm = models.ForeignKey(BetaAccessVM)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def __str__(self):
 | 
					 | 
				
			||||||
        vms = self.betaaccessvm_set.all()
 | 
					 | 
				
			||||||
        rep = "Email: %s " % self.email
 | 
					 | 
				
			||||||
        for vm in vms:
 | 
					 | 
				
			||||||
            rep += "(vm:%s - amount:%s) - " % (vm.type.id, vm.amount)
 | 
					 | 
				
			||||||
        return rep
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class BetaAccessVM(models.Model):
 | 
					 | 
				
			||||||
    type = models.ForeignKey(BetaAccessVMType)
 | 
					 | 
				
			||||||
    access = models.ForeignKey(BetaAccess)
 | 
					 | 
				
			||||||
    amount = models.IntegerField()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @classmethod
 | 
					 | 
				
			||||||
    def create(cls, data):
 | 
					 | 
				
			||||||
        VM_KEY_ID = 0
 | 
					 | 
				
			||||||
        VM_AMOUNT = 1
 | 
					 | 
				
			||||||
        ZERO = 0
 | 
					 | 
				
			||||||
        email = data.get('email')
 | 
					 | 
				
			||||||
        beta_access = BetaAccess.objects.create(email=email)
 | 
					 | 
				
			||||||
        vm_data = [(key, value) for key, value in data.items() if 'vm' in key]
 | 
					 | 
				
			||||||
        created_vms = []
 | 
					 | 
				
			||||||
        for vm in vm_data:
 | 
					 | 
				
			||||||
            if int(vm[VM_AMOUNT]) == ZERO:
 | 
					 | 
				
			||||||
                continue
 | 
					 | 
				
			||||||
            vm_id = vm[VM_KEY_ID].split('-').pop()
 | 
					 | 
				
			||||||
            vm_type = BetaAccessVMType.objects.get(id=vm_id)
 | 
					 | 
				
			||||||
            created_vms.append(cls.objects.create(access=beta_access,
 | 
					 | 
				
			||||||
                                                  amount=vm[VM_AMOUNT], type=vm_type))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return created_vms
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class VMTemplate(models.Model):
 | 
					class VMTemplate(models.Model):
 | 
				
			||||||
    name = models.CharField(max_length=50)
 | 
					    name = models.CharField(max_length=50)
 | 
				
			||||||
    opennebula_vm_template_id = models.IntegerField()
 | 
					    opennebula_vm_template_id = models.IntegerField()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 9 KiB  | 
| 
						 | 
					@ -1,55 +0,0 @@
 | 
				
			||||||
(function($){
 | 
					 | 
				
			||||||
    'use strict'; // Start of use strict
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $(document).ready(function(){
 | 
					 | 
				
			||||||
        verifiedUrl();
 | 
					 | 
				
			||||||
        init_options_interested();
 | 
					 | 
				
			||||||
        init_nav();
 | 
					 | 
				
			||||||
        change_values();
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function verifiedUrl(){
 | 
					 | 
				
			||||||
        if(window.location.href.indexOf('#success') > -1){
 | 
					 | 
				
			||||||
            form_success();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function init_options_interested(){
 | 
					 | 
				
			||||||
        $('.row-vms').click(function(){
 | 
					 | 
				
			||||||
            $('.row-vms').removeClass('row-vms__active');
 | 
					 | 
				
			||||||
            $(this).addClass('row-vms__active');
 | 
					 | 
				
			||||||
            var number = $('.row-vms__active input').val();
 | 
					 | 
				
			||||||
            var price = $('.row-vms__active input').data('price');
 | 
					 | 
				
			||||||
            _calculate(number, price);
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function init_nav(){
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $('.nav-local').click(function(){
 | 
					 | 
				
			||||||
            $('html, body').animate({
 | 
					 | 
				
			||||||
                 scrollTop: $('#'+$(this).data('href')).offset().top
 | 
					 | 
				
			||||||
             });
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function change_values(){
 | 
					 | 
				
			||||||
        $('.number-vms').keyup(function () {
 | 
					 | 
				
			||||||
            var number = $(this).val();
 | 
					 | 
				
			||||||
            var price =  $(this).data('price');
 | 
					 | 
				
			||||||
            _calculate(number, price);
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    function form_success(){
 | 
					 | 
				
			||||||
        $('#sucessModal').modal('show');
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    function _calculate(numbers, price){
 | 
					 | 
				
			||||||
        $('#valueTotal').text(numbers*price*31);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
})(jQuery); // End of use strict
 | 
					 | 
				
			||||||
| 
						 | 
					@ -107,7 +107,7 @@
 | 
				
			||||||
            $('.navbar-collapse').addClass('collapsing');
 | 
					            $('.navbar-collapse').addClass('collapsing');
 | 
				
			||||||
            if ($(href).length) {
 | 
					            if ($(href).length) {
 | 
				
			||||||
                $('html, body').animate({
 | 
					                $('html, body').animate({
 | 
				
			||||||
                    scrollTop: $(href).offset().top
 | 
					                    scrollTop: $(href).offset().top - 50
 | 
				
			||||||
                }, 1000);
 | 
					                }, 1000);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,27 +0,0 @@
 | 
				
			||||||
{% load i18n %}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<form novalidate id ="beta_access" class="form-beta" method="POST" action="{% url 'datacenterlight:beta_access'%}">
 | 
					 | 
				
			||||||
  {% csrf_token %}
 | 
					 | 
				
			||||||
  {{ form.non_field_errors }}
 | 
					 | 
				
			||||||
  <div>
 | 
					 | 
				
			||||||
	{% for message in messages %}
 | 
					 | 
				
			||||||
		<strong>{{ message }}</strong>
 | 
					 | 
				
			||||||
	{% endfor %}
 | 
					 | 
				
			||||||
  </div>
 | 
					 | 
				
			||||||
 <div class="inputs">
 | 
					 | 
				
			||||||
	 <div class="form-group">
 | 
					 | 
				
			||||||
		<input type="text" name="name" class="form-control" id="name" placeholder="{% trans 'Enter name' %}">
 | 
					 | 
				
			||||||
		<span style="color: white">{{ form.name.errors|striptags}}</span>
 | 
					 | 
				
			||||||
	  </div>
 | 
					 | 
				
			||||||
	  <div class="form-group">
 | 
					 | 
				
			||||||
		<input type="email" name="email" class="form-control" id="email" placeholder="{% trans 'Enter email' %}">
 | 
					 | 
				
			||||||
		<span style="color: white">{{ form.email.errors|striptags}}</span>
 | 
					 | 
				
			||||||
	  </div>
 | 
					 | 
				
			||||||
 </div>
 | 
					 | 
				
			||||||
  <button type="submit" class="btn btn-default btn-transparent btn-lg">{% trans "Request Beta Access" %}</button>
 | 
					 | 
				
			||||||
</form>
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	$('#beta_access').ajaxForm({
 | 
					 | 
				
			||||||
		target: '#beta_access_form', success: function(response) { }
 | 
					 | 
				
			||||||
	});
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,47 +0,0 @@
 | 
				
			||||||
 | 
					 | 
				
			||||||
{% load i18n %}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<div class="modal fade bs-example-modal-sm" style="color:black;"  id="successModal" tabindex="-1" role="dialog">
 | 
					 | 
				
			||||||
    <div class="modal-dialog">
 | 
					 | 
				
			||||||
        <div class="modal-content">
 | 
					 | 
				
			||||||
            <div class="modal-header">
 | 
					 | 
				
			||||||
              <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
            <div class="modal-body">
 | 
					 | 
				
			||||||
              <div class="modal-icon"><i class="checkmark" aria-hidden="true"></i></div>
 | 
					 | 
				
			||||||
              <h4 class="modal-title">{% trans "Request Sent" %}</h4>
 | 
					 | 
				
			||||||
              <p class="modal-text">{% trans "Thank you for your subscription! You will receive a confirmation mail from our team" %}</p>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
        </div><!-- /.modal-content -->
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
</div><!-- /.modal -->
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	// Show modal
 | 
					 | 
				
			||||||
	$('#successModal').modal('show');
 | 
					 | 
				
			||||||
	// close the modal after 3 seconds
 | 
					 | 
				
			||||||
	setTimeout(function() {
 | 
					 | 
				
			||||||
	    $('#successModal').modal('hide');
 | 
					 | 
				
			||||||
	}, 5000);
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
<style>
 | 
					 | 
				
			||||||
.vertical-alignment-helper {
 | 
					 | 
				
			||||||
    display:table;
 | 
					 | 
				
			||||||
    height: 100%;
 | 
					 | 
				
			||||||
    width: 100%;
 | 
					 | 
				
			||||||
    pointer-events:none; /* This makes sure that we can still click outside of the modal to close it */
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.vertical-align-center {
 | 
					 | 
				
			||||||
    /* To center vertically */
 | 
					 | 
				
			||||||
    display: table-cell;
 | 
					 | 
				
			||||||
    vertical-align: middle;
 | 
					 | 
				
			||||||
    pointer-events:none;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.modal-content {
 | 
					 | 
				
			||||||
    /* Bootstrap sets the size of the modal in the modal-dialog class, we need to inherit it */
 | 
					 | 
				
			||||||
    width:inherit;
 | 
					 | 
				
			||||||
    height:inherit;
 | 
					 | 
				
			||||||
    /* To center horizontally */
 | 
					 | 
				
			||||||
    margin: 0 auto;
 | 
					 | 
				
			||||||
    pointer-events: all;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,176 +0,0 @@
 | 
				
			||||||
{% load static from staticfiles %}
 | 
					 | 
				
			||||||
{% load i18n %}
 | 
					 | 
				
			||||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
					 | 
				
			||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 | 
					 | 
				
			||||||
<html xmlns="http://www.w3.org/1999/xhtml"
 | 
					 | 
				
			||||||
      style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<head>
 | 
					 | 
				
			||||||
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 | 
					 | 
				
			||||||
    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
					 | 
				
			||||||
    <title>{{dcl_text}}</title>
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
<body bgcolor="#ffffff"
 | 
					 | 
				
			||||||
      style="font-family: 'Lato', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
 | 
					 | 
				
			||||||
<style type="text/css">
 | 
					 | 
				
			||||||
@media only screen and (max-width: 480px) {
 | 
					 | 
				
			||||||
  table[class*="container-for-gmail-android"] {
 | 
					 | 
				
			||||||
    min-width: 290px !important; width: 100% !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  img[class="force-width-gmail"] {
 | 
					 | 
				
			||||||
    display: none !important; width: 0 !important; height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  table[class="w320"] {
 | 
					 | 
				
			||||||
    width: 320px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-left"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-left: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-right"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-right: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="header-lg"] {
 | 
					 | 
				
			||||||
    font-size: 24px !important; padding-bottom: 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="content-padding"] {
 | 
					 | 
				
			||||||
    padding: 5px 0 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="button"] {
 | 
					 | 
				
			||||||
    padding: 5px 5px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="free-text"] {
 | 
					 | 
				
			||||||
    padding: 10px 18px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="mobile-hide-img"] {
 | 
					 | 
				
			||||||
    display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="item"] {
 | 
					 | 
				
			||||||
    width: 140px !important; vertical-align: top !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="quantity"] {
 | 
					 | 
				
			||||||
    width: 50px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="price"] {
 | 
					 | 
				
			||||||
    width: 90px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="item-table"] {
 | 
					 | 
				
			||||||
    padding: 30px 20px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-left"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-right"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
<table align="center" cellpadding="0" cellspacing="0"
 | 
					 | 
				
			||||||
       class="container-for-gmail-android" width="100%"
 | 
					 | 
				
			||||||
       style="border-collapse: collapse !important; min-width: 600px; font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
    <tr style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <td align="left" valign="top" width="100%"
 | 
					 | 
				
			||||||
            style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;"
 | 
					 | 
				
			||||||
            bgcolor="#ffffff">
 | 
					 | 
				
			||||||
            <center style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                <table cellspacing="0" cellpadding="0" width="100%"
 | 
					 | 
				
			||||||
                       bgcolor="#ffffff"
 | 
					 | 
				
			||||||
                       background="{{base_url}}{% static 'datacenterlight/img/dcl-email-bg.jpg' %}"
 | 
					 | 
				
			||||||
                       style="border-collapse: collapse !important; font-family: 'Lato', 'sans-serif' !important; background: transparent;">
 | 
					 | 
				
			||||||
                    <tr style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                        <td width="100%" height="80" valign="top"
 | 
					 | 
				
			||||||
                            style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px; background-color: #ffffff"
 | 
					 | 
				
			||||||
                            align="center">
 | 
					 | 
				
			||||||
                            <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
                            <v:rect xmlns:v="urn:schemas-microsoft-com:vml"
 | 
					 | 
				
			||||||
                                    fill="true" stroke="false"
 | 
					 | 
				
			||||||
                                    style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
 | 
					 | 
				
			||||||
                                <v:fill type="tile"
 | 
					 | 
				
			||||||
                                        src="{{base_url}}{% static 'datacenterlight/img/dcl-email-bg.jpg' %}"
 | 
					 | 
				
			||||||
                                        color="#ffffff"/>
 | 
					 | 
				
			||||||
                                <v:textbox inset="0,0,0,0">
 | 
					 | 
				
			||||||
                            <![endif]-->
 | 
					 | 
				
			||||||
                            <center style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                                <table cellpadding="0" cellspacing="0"
 | 
					 | 
				
			||||||
                                       width="600" class="w320"
 | 
					 | 
				
			||||||
                                       style="border-collapse: collapse !important; font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                                    <tr style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                                        <td class="pull-left mobile-header-padding-left"
 | 
					 | 
				
			||||||
                                            style="vertical-align: middle; border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 0px;"
 | 
					 | 
				
			||||||
                                            align="left" valign="middle">
 | 
					 | 
				
			||||||
                                            <a href="{{base_url}}"
 | 
					 | 
				
			||||||
                                               style="font-family: 'Lato', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img
 | 
					 | 
				
			||||||
                                                    width="137"
 | 
					 | 
				
			||||||
                                                    src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}"
 | 
					 | 
				
			||||||
                                                    alt="logo"
 | 
					 | 
				
			||||||
                                                    style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Lato', 'sans-serif' !important; border: none;"></a>
 | 
					 | 
				
			||||||
                                        </td>
 | 
					 | 
				
			||||||
                                        <td class="pull-right mobile-header-padding-right"
 | 
					 | 
				
			||||||
                                            style="color: #4d4d4d; border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;"
 | 
					 | 
				
			||||||
                                            align="right">
 | 
					 | 
				
			||||||
                                        </td>
 | 
					 | 
				
			||||||
                                    </tr>
 | 
					 | 
				
			||||||
                                </table>
 | 
					 | 
				
			||||||
                            </center>
 | 
					 | 
				
			||||||
                            <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
                            </v:textbox>
 | 
					 | 
				
			||||||
                            </v:rect>
 | 
					 | 
				
			||||||
                            <![endif]-->
 | 
					 | 
				
			||||||
                        </td>
 | 
					 | 
				
			||||||
                    </tr>
 | 
					 | 
				
			||||||
                </table>
 | 
					 | 
				
			||||||
            </center>
 | 
					 | 
				
			||||||
        </td>
 | 
					 | 
				
			||||||
    </tr>
 | 
					 | 
				
			||||||
    <tr style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <td align="center" valign="top" width="100%"
 | 
					 | 
				
			||||||
            style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff; padding: 20px 0 5px;"
 | 
					 | 
				
			||||||
            class="content-padding" bgcolor="#f7f7f7">
 | 
					 | 
				
			||||||
            <center style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                <table cellspacing="0" cellpadding="0" width="600" class="w320"
 | 
					 | 
				
			||||||
                       style="border-collapse: collapse !important; font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                    <tr style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                        <td class="header-lg"
 | 
					 | 
				
			||||||
                            style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5px 0px;"
 | 
					 | 
				
			||||||
                            align="center">
 | 
					 | 
				
			||||||
                            {% block email_head %}
 | 
					 | 
				
			||||||
                            {% endblock %}
 | 
					 | 
				
			||||||
                        </td>
 | 
					 | 
				
			||||||
                    </tr>
 | 
					 | 
				
			||||||
                    <tr style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                        <td class="free-text"
 | 
					 | 
				
			||||||
                            style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 5px 20px;"
 | 
					 | 
				
			||||||
                            align="center">
 | 
					 | 
				
			||||||
                            <p>
 | 
					 | 
				
			||||||
                                {% block email_body %}
 | 
					 | 
				
			||||||
                                {% endblock %}
 | 
					 | 
				
			||||||
                            </p></td>
 | 
					 | 
				
			||||||
                    </tr>
 | 
					 | 
				
			||||||
                    <tr style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                        <td class="button"
 | 
					 | 
				
			||||||
                            style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 0;"
 | 
					 | 
				
			||||||
                            align="center"> 
 | 
					 | 
				
			||||||
                        </td>
 | 
					 | 
				
			||||||
                    </tr>
 | 
					 | 
				
			||||||
                </table>
 | 
					 | 
				
			||||||
            </center>
 | 
					 | 
				
			||||||
        </td>
 | 
					 | 
				
			||||||
    </tr>
 | 
					 | 
				
			||||||
    <tr style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <td align="center" valign="top" width="100%"
 | 
					 | 
				
			||||||
            style="height: 100px; border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;"
 | 
					 | 
				
			||||||
            bgcolor="#ffffff">
 | 
					 | 
				
			||||||
            <center style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                <table cellspacing="0" cellpadding="0" width="600" class="w320"
 | 
					 | 
				
			||||||
                       style="border-collapse: collapse !important; font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                    <tr style="font-family: 'Lato', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                        <td style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 5px 0px;text-align: left; line-height: 21px;;"
 | 
					 | 
				
			||||||
                            align="left">{% trans 'Your Data Center Light Team' %}
 | 
					 | 
				
			||||||
                        </td>
 | 
					 | 
				
			||||||
                    </tr>
 | 
					 | 
				
			||||||
                </table>
 | 
					 | 
				
			||||||
            </center>
 | 
					 | 
				
			||||||
        </td>
 | 
					 | 
				
			||||||
    </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,7 +0,0 @@
 | 
				
			||||||
{% load static from staticfiles %}
 | 
					 | 
				
			||||||
{% load i18n %}
 | 
					 | 
				
			||||||
{% block email_head %}
 | 
					 | 
				
			||||||
{% endblock %}
 | 
					 | 
				
			||||||
{% block email_body %}
 | 
					 | 
				
			||||||
{% endblock %}
 | 
					 | 
				
			||||||
{% trans 'Your Data Center Light Team' %}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,129 +0,0 @@
 | 
				
			||||||
{% load static from staticfiles %}
 | 
					 | 
				
			||||||
{% load i18n%}
 | 
					 | 
				
			||||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
					 | 
				
			||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 | 
					 | 
				
			||||||
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<head>
 | 
					 | 
				
			||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 | 
					 | 
				
			||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
 | 
					 | 
				
			||||||
<title>Oxygen Invoice</title>
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
<body bgcolor="#ffffff" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
 | 
					 | 
				
			||||||
<style type="text/css">
 | 
					 | 
				
			||||||
@media only screen and (max-width: 480px) {
 | 
					 | 
				
			||||||
  table[class*="container-for-gmail-android"] {
 | 
					 | 
				
			||||||
    min-width: 290px !important; width: 100% !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  img[class="force-width-gmail"] {
 | 
					 | 
				
			||||||
    display: none !important; width: 0 !important; height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  table[class="w320"] {
 | 
					 | 
				
			||||||
    width: 320px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-left"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-left: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-right"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-right: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="header-lg"] {
 | 
					 | 
				
			||||||
    font-size: 24px !important; padding-bottom: 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="content-padding"] {
 | 
					 | 
				
			||||||
    padding: 5px 0 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="button"] {
 | 
					 | 
				
			||||||
    padding: 5px 5px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="free-text"] {
 | 
					 | 
				
			||||||
    padding: 10px 18px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="mobile-hide-img"] {
 | 
					 | 
				
			||||||
    display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="item"] {
 | 
					 | 
				
			||||||
    width: 140px !important; vertical-align: top !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="quantity"] {
 | 
					 | 
				
			||||||
    width: 50px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="price"] {
 | 
					 | 
				
			||||||
    width: 90px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="item-table"] {
 | 
					 | 
				
			||||||
    padding: 30px 20px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-left"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-right"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
      <table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px; background-color: #ffffff" align="center">
 | 
					 | 
				
			||||||
            <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
            <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
 | 
					 | 
				
			||||||
              <v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
 | 
					 | 
				
			||||||
              <v:textbox inset="0,0,0,0">
 | 
					 | 
				
			||||||
            <![endif]-->
 | 
					 | 
				
			||||||
              <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                <table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 0px;" align="left" valign="middle">
 | 
					 | 
				
			||||||
                      <a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
 | 
					 | 
				
			||||||
                    </td>
 | 
					 | 
				
			||||||
                    <td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
 | 
					 | 
				
			||||||
                    </td>
 | 
					 | 
				
			||||||
                  </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
              <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
              </v:textbox>
 | 
					 | 
				
			||||||
            </v:rect>
 | 
					 | 
				
			||||||
            <![endif]-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
          </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5px 0px;" align="center">
 | 
					 | 
				
			||||||
              {% trans "Thank you for your request." %}
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 5px 20px;" align="center">
 | 
					 | 
				
			||||||
             <p>{% trans "You are one step away from being our beta tester!" %}  <br/><br/> 
 | 
					 | 
				
			||||||
               {% trans "Currently we are running our tests to make sure everything runs perfectly." %}<br/>
 | 
					 | 
				
			||||||
             {% trans "In the meantime, we would like to ask you a little patience<br/> until our team contacts you with beta access." %}<br/>
 | 
					 | 
				
			||||||
             {% trans "Thank you!" %}           </p></td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="button" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 0;" align="center"> </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 5px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
</td>
 | 
					 | 
				
			||||||
          </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,129 +0,0 @@
 | 
				
			||||||
{% load static from staticfiles %}
 | 
					 | 
				
			||||||
{% load i18n%}
 | 
					 | 
				
			||||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
					 | 
				
			||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 | 
					 | 
				
			||||||
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<head>
 | 
					 | 
				
			||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 | 
					 | 
				
			||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
 | 
					 | 
				
			||||||
<title>Oxygen Invoice</title>
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
<body bgcolor="#ffffff" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
 | 
					 | 
				
			||||||
<style type="text/css">
 | 
					 | 
				
			||||||
@media only screen and (max-width: 480px) {
 | 
					 | 
				
			||||||
  table[class*="container-for-gmail-android"] {
 | 
					 | 
				
			||||||
    min-width: 290px !important; width: 100% !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  img[class="force-width-gmail"] {
 | 
					 | 
				
			||||||
    display: none !important; width: 0 !important; height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  table[class="w320"] {
 | 
					 | 
				
			||||||
    width: 320px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-left"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-left: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-right"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-right: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="header-lg"] {
 | 
					 | 
				
			||||||
    font-size: 24px !important; padding-bottom: 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="content-padding"] {
 | 
					 | 
				
			||||||
    padding: 5px 0 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="button"] {
 | 
					 | 
				
			||||||
    padding: 5px 5px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="free-text"] {
 | 
					 | 
				
			||||||
    padding: 10px 18px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="mobile-hide-img"] {
 | 
					 | 
				
			||||||
    display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="item"] {
 | 
					 | 
				
			||||||
    width: 140px !important; vertical-align: top !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="quantity"] {
 | 
					 | 
				
			||||||
    width: 50px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="price"] {
 | 
					 | 
				
			||||||
    width: 90px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="item-table"] {
 | 
					 | 
				
			||||||
    padding: 30px 20px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-left"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-right"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
      <table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px; background-color: #ffffff" align="center">
 | 
					 | 
				
			||||||
            <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
            <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
 | 
					 | 
				
			||||||
              <v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
 | 
					 | 
				
			||||||
              <v:textbox inset="0,0,0,0">
 | 
					 | 
				
			||||||
            <![endif]-->
 | 
					 | 
				
			||||||
              <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                <table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
 | 
					 | 
				
			||||||
                      <a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
 | 
					 | 
				
			||||||
                    </td>
 | 
					 | 
				
			||||||
                    <td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
 | 
					 | 
				
			||||||
                    </td>
 | 
					 | 
				
			||||||
                  </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
              <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
              </v:textbox>
 | 
					 | 
				
			||||||
            </v:rect>
 | 
					 | 
				
			||||||
            <![endif]-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
          </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5 0;" align="center">
 | 
					 | 
				
			||||||
              {% trans "Thank you for your request." %}
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 7px 20px;" align="center">
 | 
					 | 
				
			||||||
             <p>{% trans "You are one step away from being our beta tester!" %}  <br/><br/> 
 | 
					 | 
				
			||||||
               {% trans "Currently we are running our tests to make sure everything runs perfectly." %}<br/>
 | 
					 | 
				
			||||||
             {% trans "In the meantime, we would like to ask you a little patience<br/> until our team contacts you with beta access." %}<br/>
 | 
					 | 
				
			||||||
             {% trans "Thank you!" %}           </p></td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="button" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 0;" align="center"> </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 9px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
</td>
 | 
					 | 
				
			||||||
          </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,125 +0,0 @@
 | 
				
			||||||
{% load static from staticfiles %}
 | 
					 | 
				
			||||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
					 | 
				
			||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 | 
					 | 
				
			||||||
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<head>
 | 
					 | 
				
			||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 | 
					 | 
				
			||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
 | 
					 | 
				
			||||||
<title>Oxygen Invoice</title>
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
<body bgcolor="#ffffff" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
 | 
					 | 
				
			||||||
<style type="text/css">
 | 
					 | 
				
			||||||
@media only screen and (max-width: 480px) {
 | 
					 | 
				
			||||||
  table[class*="container-for-gmail-android"] {
 | 
					 | 
				
			||||||
    min-width: 290px !important; width: 100% !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  img[class="force-width-gmail"] {
 | 
					 | 
				
			||||||
    display: none !important; width: 0 !important; height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  table[class="w320"] {
 | 
					 | 
				
			||||||
    width: 320px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-left"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-left: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-right"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-right: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="header-lg"] {
 | 
					 | 
				
			||||||
    font-size: 24px !important; padding-bottom: 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="content-padding"] {
 | 
					 | 
				
			||||||
    padding: 5px 0 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="button"] {
 | 
					 | 
				
			||||||
    padding: 5px 5px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="free-text"] {
 | 
					 | 
				
			||||||
    padding: 10px 18px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="mobile-hide-img"] {
 | 
					 | 
				
			||||||
    display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="item"] {
 | 
					 | 
				
			||||||
    width: 140px !important; vertical-align: top !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="quantity"] {
 | 
					 | 
				
			||||||
    width: 50px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="price"] {
 | 
					 | 
				
			||||||
    width: 90px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="item-table"] {
 | 
					 | 
				
			||||||
    padding: 30px 20px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-left"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-right"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
      <table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px; background-color: #ffffff" align="center">
 | 
					 | 
				
			||||||
            <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
            <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
 | 
					 | 
				
			||||||
              <v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
 | 
					 | 
				
			||||||
              <v:textbox inset="0,0,0,0">
 | 
					 | 
				
			||||||
            <![endif]-->
 | 
					 | 
				
			||||||
              <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                <table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 0px;" align="left" valign="middle">
 | 
					 | 
				
			||||||
                      <a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
 | 
					 | 
				
			||||||
                    </td>
 | 
					 | 
				
			||||||
                    <td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
 | 
					 | 
				
			||||||
                    </td>
 | 
					 | 
				
			||||||
                  </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
              <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
              </v:textbox>
 | 
					 | 
				
			||||||
            </v:rect>
 | 
					 | 
				
			||||||
            <![endif]-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
          </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5px 0px;" align="center">
 | 
					 | 
				
			||||||
              An user requested a beta access
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 5px 20px;" align="center">
 | 
					 | 
				
			||||||
             <p>User {{email}} requested beta access         </p></td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="button" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 0;" align="center"> </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 5px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
</td>
 | 
					 | 
				
			||||||
          </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,125 +0,0 @@
 | 
				
			||||||
{% load static from staticfiles %}
 | 
					 | 
				
			||||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
					 | 
				
			||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 | 
					 | 
				
			||||||
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<head>
 | 
					 | 
				
			||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 | 
					 | 
				
			||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
 | 
					 | 
				
			||||||
<title>Oxygen Invoice</title>
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
<body bgcolor="#ffffff" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
 | 
					 | 
				
			||||||
<style type="text/css">
 | 
					 | 
				
			||||||
@media only screen and (max-width: 480px) {
 | 
					 | 
				
			||||||
  table[class*="container-for-gmail-android"] {
 | 
					 | 
				
			||||||
    min-width: 290px !important; width: 100% !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  img[class="force-width-gmail"] {
 | 
					 | 
				
			||||||
    display: none !important; width: 0 !important; height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  table[class="w320"] {
 | 
					 | 
				
			||||||
    width: 320px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-left"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-left: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-right"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-right: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="header-lg"] {
 | 
					 | 
				
			||||||
    font-size: 24px !important; padding-bottom: 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="content-padding"] {
 | 
					 | 
				
			||||||
    padding: 5px 0 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="button"] {
 | 
					 | 
				
			||||||
    padding: 5px 5px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="free-text"] {
 | 
					 | 
				
			||||||
    padding: 10px 18px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="mobile-hide-img"] {
 | 
					 | 
				
			||||||
    display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="item"] {
 | 
					 | 
				
			||||||
    width: 140px !important; vertical-align: top !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="quantity"] {
 | 
					 | 
				
			||||||
    width: 50px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="price"] {
 | 
					 | 
				
			||||||
    width: 90px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="item-table"] {
 | 
					 | 
				
			||||||
    padding: 30px 20px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-left"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-right"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
      <table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px; background-color: #ffffff" align="center">
 | 
					 | 
				
			||||||
            <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
            <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
 | 
					 | 
				
			||||||
              <v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
 | 
					 | 
				
			||||||
              <v:textbox inset="0,0,0,0">
 | 
					 | 
				
			||||||
            <![endif]-->
 | 
					 | 
				
			||||||
              <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                <table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
 | 
					 | 
				
			||||||
                      <a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
 | 
					 | 
				
			||||||
                    </td>
 | 
					 | 
				
			||||||
                    <td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
 | 
					 | 
				
			||||||
                    </td>
 | 
					 | 
				
			||||||
                  </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
              <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
              </v:textbox>
 | 
					 | 
				
			||||||
            </v:rect>
 | 
					 | 
				
			||||||
            <![endif]-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
          </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5 0;" align="center">
 | 
					 | 
				
			||||||
              An user requested a beta access
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 7px 20px;" align="center">
 | 
					 | 
				
			||||||
             <p>User {{email}} requested beta access         </p></td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="button" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 0;" align="center"> </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 9px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
</td>
 | 
					 | 
				
			||||||
          </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,131 +0,0 @@
 | 
				
			||||||
{% load static from staticfiles %}
 | 
					 | 
				
			||||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
					 | 
				
			||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 | 
					 | 
				
			||||||
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<head>
 | 
					 | 
				
			||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 | 
					 | 
				
			||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
 | 
					 | 
				
			||||||
<title>Oxygen Invoice</title>
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
<body bgcolor="#ffffff" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
 | 
					 | 
				
			||||||
<style type="text/css">
 | 
					 | 
				
			||||||
@media only screen and (max-width: 480px) {
 | 
					 | 
				
			||||||
  table[class*="container-for-gmail-android"] {
 | 
					 | 
				
			||||||
    min-width: 290px !important; width: 100% !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  img[class="force-width-gmail"] {
 | 
					 | 
				
			||||||
    display: none !important; width: 0 !important; height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  table[class="w320"] {
 | 
					 | 
				
			||||||
    width: 320px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-left"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-left: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-right"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-right: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="header-lg"] {
 | 
					 | 
				
			||||||
    font-size: 24px !important; padding-bottom: 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="content-padding"] {
 | 
					 | 
				
			||||||
    padding: 5px 0 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="button"] {
 | 
					 | 
				
			||||||
    padding: 5px 5px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="free-text"] {
 | 
					 | 
				
			||||||
    padding: 10px 18px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="mobile-hide-img"] {
 | 
					 | 
				
			||||||
    display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="item"] {
 | 
					 | 
				
			||||||
    width: 140px !important; vertical-align: top !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="quantity"] {
 | 
					 | 
				
			||||||
    width: 50px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="price"] {
 | 
					 | 
				
			||||||
    width: 90px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="item-table"] {
 | 
					 | 
				
			||||||
    padding: 30px 20px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-left"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-right"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
      <table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px; background-color: #ffffff" align="center">
 | 
					 | 
				
			||||||
            <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
            <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
 | 
					 | 
				
			||||||
              <v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
 | 
					 | 
				
			||||||
              <v:textbox inset="0,0,0,0">
 | 
					 | 
				
			||||||
            <![endif]-->
 | 
					 | 
				
			||||||
              <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                <table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 0px;" align="left" valign="middle">
 | 
					 | 
				
			||||||
                      <a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
 | 
					 | 
				
			||||||
                    </td>
 | 
					 | 
				
			||||||
                    <td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
 | 
					 | 
				
			||||||
                    </td>
 | 
					 | 
				
			||||||
                  </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
              <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
              </v:textbox>
 | 
					 | 
				
			||||||
            </v:rect>
 | 
					 | 
				
			||||||
            <![endif]-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
          </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5px 0px;" align="center">
 | 
					 | 
				
			||||||
              An user requested a beta access
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 5px 20px;" align="center">
 | 
					 | 
				
			||||||
             <p>User {{email}} requested beta access         </p>
 | 
					 | 
				
			||||||
             {% for vm in vms %}
 | 
					 | 
				
			||||||
                Type: {{vm.type}} - Amount: {{vm.amount}}
 | 
					 | 
				
			||||||
             {% endfor %}
 | 
					 | 
				
			||||||
             </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="button" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 0;" align="center"> </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 5px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
</td>
 | 
					 | 
				
			||||||
          </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,131 +0,0 @@
 | 
				
			||||||
{% load static from staticfiles %}
 | 
					 | 
				
			||||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
					 | 
				
			||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 | 
					 | 
				
			||||||
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<head>
 | 
					 | 
				
			||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 | 
					 | 
				
			||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
 | 
					 | 
				
			||||||
<title>Oxygen Invoice</title>
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
<body bgcolor="#ffffff" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
 | 
					 | 
				
			||||||
<style type="text/css">
 | 
					 | 
				
			||||||
@media only screen and (max-width: 480px) {
 | 
					 | 
				
			||||||
  table[class*="container-for-gmail-android"] {
 | 
					 | 
				
			||||||
    min-width: 290px !important; width: 100% !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  img[class="force-width-gmail"] {
 | 
					 | 
				
			||||||
    display: none !important; width: 0 !important; height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  table[class="w320"] {
 | 
					 | 
				
			||||||
    width: 320px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-left"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-left: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="mobile-header-padding-right"] {
 | 
					 | 
				
			||||||
    width: 160px !important; padding-right: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="header-lg"] {
 | 
					 | 
				
			||||||
    font-size: 24px !important; padding-bottom: 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="content-padding"] {
 | 
					 | 
				
			||||||
    padding: 5px 0 5px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="button"] {
 | 
					 | 
				
			||||||
    padding: 5px 5px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class*="free-text"] {
 | 
					 | 
				
			||||||
    padding: 10px 18px 30px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="mobile-hide-img"] {
 | 
					 | 
				
			||||||
    display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="item"] {
 | 
					 | 
				
			||||||
    width: 140px !important; vertical-align: top !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="quantity"] {
 | 
					 | 
				
			||||||
    width: 50px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class~="price"] {
 | 
					 | 
				
			||||||
    width: 90px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="item-table"] {
 | 
					 | 
				
			||||||
    padding: 30px 20px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-left"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  td[class="mini-container-right"] {
 | 
					 | 
				
			||||||
    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
      <table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px; background-color: #ffffff" align="center">
 | 
					 | 
				
			||||||
            <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
            <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
 | 
					 | 
				
			||||||
              <v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
 | 
					 | 
				
			||||||
              <v:textbox inset="0,0,0,0">
 | 
					 | 
				
			||||||
            <![endif]-->
 | 
					 | 
				
			||||||
              <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
                <table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
 | 
					 | 
				
			||||||
                      <a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
 | 
					 | 
				
			||||||
                    </td>
 | 
					 | 
				
			||||||
                    <td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
 | 
					 | 
				
			||||||
                    </td>
 | 
					 | 
				
			||||||
                  </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
              <!--[if gte mso 9]>
 | 
					 | 
				
			||||||
              </v:textbox>
 | 
					 | 
				
			||||||
            </v:rect>
 | 
					 | 
				
			||||||
            <![endif]-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
          </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5 0;" align="center">
 | 
					 | 
				
			||||||
              An user requested a beta access
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 7px 20px;" align="center">
 | 
					 | 
				
			||||||
             <p>User {{email}} requested beta access         </p>
 | 
					 | 
				
			||||||
             {% for vm in vms %}
 | 
					 | 
				
			||||||
                Type: {{vm.type}}
 | 
					 | 
				
			||||||
             {% endfor %}
 | 
					 | 
				
			||||||
             </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td class="button" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 0;" align="center"> </td>
 | 
					 | 
				
			||||||
          </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
 | 
					 | 
				
			||||||
      <center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 9px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					 | 
				
			||||||
</td>
 | 
					 | 
				
			||||||
          </tr></table>
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
    </td>
 | 
					 | 
				
			||||||
  </tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -136,7 +136,6 @@
 | 
				
			||||||
                <div class="col-xs-12 col-md-6 hero-feature">
 | 
					                <div class="col-xs-12 col-md-6 hero-feature">
 | 
				
			||||||
                    <div class="price-calc-section no-padding">
 | 
					                    <div class="price-calc-section no-padding">
 | 
				
			||||||
                        <div class="landing card">
 | 
					                        <div class="landing card">
 | 
				
			||||||
                            <img class="img-beta" src="{% static 'datacenterlight/img/beta-img.png' %}" alt="">
 | 
					 | 
				
			||||||
                            <div class="caption">
 | 
					                            <div class="caption">
 | 
				
			||||||
                            {% include "datacenterlight/calculator_form.html" %}
 | 
					                            {% include "datacenterlight/calculator_form.html" %}
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,32 +0,0 @@
 | 
				
			||||||
{% extends "datacenterlight/base.html" %}
 | 
					 | 
				
			||||||
{% load staticfiles i18n %}
 | 
					 | 
				
			||||||
{% block content %}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<div class="intro-pricing success-pricing">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		<div class="intro-message">
 | 
					 | 
				
			||||||
			<h2 class="section-heading">{% trans "Thank you for order! Our team will contact you via email" %}</h2>
 | 
					 | 
				
			||||||
			{% if LANGUAGE_CODE == 'en-us'%}
 | 
					 | 
				
			||||||
			<h2 class="section-heading">{% trans "as soon as possible!" %}</h2>
 | 
					 | 
				
			||||||
			{% endif %}
 | 
					 | 
				
			||||||
		</div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	</div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<script type="text/javascript">
 | 
					 | 
				
			||||||
		  window.onload=function(){
 | 
					 | 
				
			||||||
			$('.selectpicker').selectpicker({
 | 
					 | 
				
			||||||
				 style: 'btn-link',
 | 
					 | 
				
			||||||
				 windowPadding: 10,
 | 
					 | 
				
			||||||
			});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			var hash = window.location.hash.substr(1);
 | 
					 | 
				
			||||||
			console.log(hash);
 | 
					 | 
				
			||||||
			if (hash == 'requestform'){
 | 
					 | 
				
			||||||
				$('#reques-success-message').modal('show');
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		   };
 | 
					 | 
				
			||||||
	</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{% endblock %}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -135,7 +135,6 @@
 | 
				
			||||||
                <div class="col-xs-12 col-md-6 hero-feature">
 | 
					                <div class="col-xs-12 col-md-6 hero-feature">
 | 
				
			||||||
                    <div class="price-calc-section no-padding">
 | 
					                    <div class="price-calc-section no-padding">
 | 
				
			||||||
                        <div class="landing card">
 | 
					                        <div class="landing card">
 | 
				
			||||||
                            <img class="img-beta" src="{% static 'datacenterlight/img/beta-img.png' %}" alt="">
 | 
					 | 
				
			||||||
                            <div class="caption">
 | 
					                            <div class="caption">
 | 
				
			||||||
                            {% include "datacenterlight/calculator_form.html" %}
 | 
					                            {% include "datacenterlight/calculator_form.html" %}
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,13 +1,10 @@
 | 
				
			||||||
from django.conf.urls import url
 | 
					from django.conf.urls import url
 | 
				
			||||||
 | 
					 | 
				
			||||||
from .views import (
 | 
					 | 
				
			||||||
    IndexView, BetaProgramView, LandingProgramView, BetaAccessView,
 | 
					 | 
				
			||||||
    SuccessView, PaymentOrderView, OrderConfirmationView,
 | 
					 | 
				
			||||||
    WhyDataCenterLightView, ContactUsView
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from django.views.generic import TemplateView
 | 
					from django.views.generic import TemplateView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from .views import (
 | 
				
			||||||
 | 
					    IndexView, LandingProgramView, PaymentOrderView, OrderConfirmationView,
 | 
				
			||||||
 | 
					    WhyDataCenterLightView, ContactUsView
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
urlpatterns = [
 | 
					urlpatterns = [
 | 
				
			||||||
    url(r'^$', IndexView.as_view(), name='index'),
 | 
					    url(r'^$', IndexView.as_view(), name='index'),
 | 
				
			||||||
| 
						 | 
					@ -17,15 +14,11 @@ urlpatterns = [
 | 
				
			||||||
    url(r'^l/$', IndexView.as_view(), name='index_l'),
 | 
					    url(r'^l/$', IndexView.as_view(), name='index_l'),
 | 
				
			||||||
    url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(),
 | 
					    url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(),
 | 
				
			||||||
        name='whydatacenterlight'),
 | 
					        name='whydatacenterlight'),
 | 
				
			||||||
    url(r'^beta-program/?$', BetaProgramView.as_view(), name='beta'),
 | 
					 | 
				
			||||||
    url(r'^landing/?$', LandingProgramView.as_view(), name='landing'),
 | 
					    url(r'^landing/?$', LandingProgramView.as_view(), name='landing'),
 | 
				
			||||||
    url(r'^payment/?$', PaymentOrderView.as_view(), name='payment'),
 | 
					    url(r'^payment/?$', PaymentOrderView.as_view(), name='payment'),
 | 
				
			||||||
    url(r'^order-confirmation/?$', OrderConfirmationView.as_view(),
 | 
					    url(r'^order-confirmation/?$', OrderConfirmationView.as_view(),
 | 
				
			||||||
        name='order_confirmation'),
 | 
					        name='order_confirmation'),
 | 
				
			||||||
    url(r'^order-success/?$', SuccessView.as_view(), name='order_success'),
 | 
					 | 
				
			||||||
    url(r'^beta_access?$', BetaAccessView.as_view(), name='beta_access'),
 | 
					 | 
				
			||||||
    url(r'^contact/?$', ContactUsView.as_view(), name='contact_us'),
 | 
					    url(r'^contact/?$', ContactUsView.as_view(), name='contact_us'),
 | 
				
			||||||
 | 
					 | 
				
			||||||
    url(r'glasfaser/?$',
 | 
					    url(r'glasfaser/?$',
 | 
				
			||||||
        TemplateView.as_view(template_name='ungleich_page/glasfaser.html'),
 | 
					        TemplateView.as_view(template_name='ungleich_page/glasfaser.html'),
 | 
				
			||||||
        name='glasfaser'),
 | 
					        name='glasfaser'),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
import logging
 | 
					 | 
				
			||||||
import json
 | 
					import json
 | 
				
			||||||
 | 
					import logging
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from django import forms
 | 
					from django import forms
 | 
				
			||||||
from django.conf import settings
 | 
					from django.conf import settings
 | 
				
			||||||
| 
						 | 
					@ -14,19 +14,18 @@ from django.views.decorators.cache import cache_control
 | 
				
			||||||
from django.views.generic import FormView, CreateView, TemplateView, DetailView
 | 
					from django.views.generic import FormView, CreateView, TemplateView, DetailView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from datacenterlight.tasks import create_vm_task
 | 
					from datacenterlight.tasks import create_vm_task
 | 
				
			||||||
from hosting.models import HostingOrder
 | 
					 | 
				
			||||||
from hosting.forms import HostingUserLoginForm
 | 
					from hosting.forms import HostingUserLoginForm
 | 
				
			||||||
 | 
					from hosting.models import HostingOrder
 | 
				
			||||||
from membership.models import CustomUser, StripeCustomer
 | 
					from membership.models import CustomUser, StripeCustomer
 | 
				
			||||||
from opennebula_api.serializers import VMTemplateSerializer
 | 
					from opennebula_api.serializers import VMTemplateSerializer
 | 
				
			||||||
from utils.forms import (
 | 
					from utils.forms import (
 | 
				
			||||||
    BillingAddressForm, BillingAddressFormSignup
 | 
					    BillingAddressForm, BillingAddressFormSignup
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from utils.hosting_utils import get_vm_price
 | 
					from utils.hosting_utils import get_vm_price
 | 
				
			||||||
from utils.mailer import BaseEmail
 | 
					 | 
				
			||||||
from utils.stripe_utils import StripeUtils
 | 
					from utils.stripe_utils import StripeUtils
 | 
				
			||||||
from utils.tasks import send_plain_email_task
 | 
					from utils.tasks import send_plain_email_task
 | 
				
			||||||
from .forms import BetaAccessForm, ContactForm
 | 
					from .forms import ContactForm
 | 
				
			||||||
from .models import BetaAccess, BetaAccessVMType, BetaAccessVM, VMTemplate
 | 
					from .models import VMTemplate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
logger = logging.getLogger(__name__)
 | 
					logger = logging.getLogger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,128 +78,8 @@ class LandingProgramView(TemplateView):
 | 
				
			||||||
    template_name = "datacenterlight/landing.html"
 | 
					    template_name = "datacenterlight/landing.html"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SuccessView(TemplateView):
 | 
					 | 
				
			||||||
    template_name = "datacenterlight/success.html"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get(self, request, *args, **kwargs):
 | 
					 | 
				
			||||||
        if 'specs' not in request.session or 'user' not in request.session:
 | 
					 | 
				
			||||||
            return HttpResponseRedirect(reverse('datacenterlight:index'))
 | 
					 | 
				
			||||||
        elif 'token' not in request.session:
 | 
					 | 
				
			||||||
            return HttpResponseRedirect(reverse('datacenterlight:payment'))
 | 
					 | 
				
			||||||
        elif 'order_confirmation' not in request.session:
 | 
					 | 
				
			||||||
            return HttpResponseRedirect(
 | 
					 | 
				
			||||||
                reverse('datacenterlight:order_confirmation'))
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            for session_var in ['specs', 'user', 'template', 'billing_address',
 | 
					 | 
				
			||||||
                                'billing_address_data',
 | 
					 | 
				
			||||||
                                'token', 'customer']:
 | 
					 | 
				
			||||||
                if session_var in request.session:
 | 
					 | 
				
			||||||
                    del request.session[session_var]
 | 
					 | 
				
			||||||
        return render(request, self.template_name)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class BetaAccessView(FormView):
 | 
					 | 
				
			||||||
    template_name = "datacenterlight/beta_access.html"
 | 
					 | 
				
			||||||
    form_class = BetaAccessForm
 | 
					 | 
				
			||||||
    success_message = "Thank you, we will contact you as soon as possible"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def form_valid(self, form):
 | 
					 | 
				
			||||||
        context = {
 | 
					 | 
				
			||||||
            'base_url': "{0}://{1}".format(self.request.scheme,
 | 
					 | 
				
			||||||
                                           self.request.get_host())
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        email_data = {
 | 
					 | 
				
			||||||
            'subject': 'DatacenterLight Beta Access Request',
 | 
					 | 
				
			||||||
            'from_address': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>',
 | 
					 | 
				
			||||||
            'to': form.cleaned_data.get('email'),
 | 
					 | 
				
			||||||
            'from': '(datacenterlight) DatacenterLight Support support@datacenterlight.ch',
 | 
					 | 
				
			||||||
            'context': context,
 | 
					 | 
				
			||||||
            'template_name': 'request_access_confirmation',
 | 
					 | 
				
			||||||
            'template_path': 'datacenterlight/emails/'
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        email = BaseEmail(**email_data)
 | 
					 | 
				
			||||||
        email.send()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        context.update({
 | 
					 | 
				
			||||||
            'email': form.cleaned_data.get('email')
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        email_data = {
 | 
					 | 
				
			||||||
            'subject': 'DatacenterLight Beta Access Request',
 | 
					 | 
				
			||||||
            'from_address': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>',
 | 
					 | 
				
			||||||
            'to': 'info@ungleich.ch',
 | 
					 | 
				
			||||||
            'context': context,
 | 
					 | 
				
			||||||
            'template_name': 'request_access_notification',
 | 
					 | 
				
			||||||
            'template_path': 'datacenterlight/emails/'
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        email = BaseEmail(**email_data)
 | 
					 | 
				
			||||||
        email.send()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        messages.add_message(self.request, messages.SUCCESS,
 | 
					 | 
				
			||||||
                             self.success_message)
 | 
					 | 
				
			||||||
        return render(self.request, 'datacenterlight/beta_success.html', {})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class BetaProgramView(CreateView):
 | 
					 | 
				
			||||||
    template_name = "datacenterlight/beta.html"
 | 
					 | 
				
			||||||
    model = BetaAccessVM
 | 
					 | 
				
			||||||
    fields = '__all__'
 | 
					 | 
				
			||||||
    # form_class = BetaAccessForm
 | 
					 | 
				
			||||||
    # success_url = "/datacenterlight#requestform"
 | 
					 | 
				
			||||||
    success_message = "Thank you, we will contact you as soon as possible"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get_success_url(self):
 | 
					 | 
				
			||||||
        success_url = reverse('datacenterlight:beta')
 | 
					 | 
				
			||||||
        success_url += "#success"
 | 
					 | 
				
			||||||
        return success_url
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get_context_data(self, **kwargs):
 | 
					 | 
				
			||||||
        vms = BetaAccessVMType.objects.all()
 | 
					 | 
				
			||||||
        context = super(BetaProgramView, self).get_context_data(**kwargs)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # templates = OpenNebulaManager().get_templates()
 | 
					 | 
				
			||||||
        # data = VirtualMachineTemplateSerializer(templates, many=True).data
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        context.update({
 | 
					 | 
				
			||||||
            'base_url': "{0}://{1}".format(self.request.scheme,
 | 
					 | 
				
			||||||
                                           self.request.get_host()),
 | 
					 | 
				
			||||||
            'vms': vms
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
        return context
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def post(self, request, *args, **kwargs):
 | 
					 | 
				
			||||||
        data = request.POST
 | 
					 | 
				
			||||||
        vms = BetaAccessVM.create(data)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        context = {
 | 
					 | 
				
			||||||
            'base_url': "{0}://{1}".format(self.request.scheme,
 | 
					 | 
				
			||||||
                                           self.request.get_host()),
 | 
					 | 
				
			||||||
            'email': data.get('email'),
 | 
					 | 
				
			||||||
            'name': data.get('name'),
 | 
					 | 
				
			||||||
            'vms': vms
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        email_data = {
 | 
					 | 
				
			||||||
            'subject': 'DatacenterLight Beta Access Request',
 | 
					 | 
				
			||||||
            'from_address': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>',
 | 
					 | 
				
			||||||
            'to': 'info@ungleich.ch',
 | 
					 | 
				
			||||||
            'context': context,
 | 
					 | 
				
			||||||
            'template_name': 'request_beta_access_notification',
 | 
					 | 
				
			||||||
            'template_path': 'datacenterlight/emails/'
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        email = BaseEmail(**email_data)
 | 
					 | 
				
			||||||
        email.send()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        messages.add_message(self.request, messages.SUCCESS,
 | 
					 | 
				
			||||||
                             self.success_message)
 | 
					 | 
				
			||||||
        return HttpResponseRedirect(self.get_success_url())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class IndexView(CreateView):
 | 
					class IndexView(CreateView):
 | 
				
			||||||
    template_name = "datacenterlight/index.html"
 | 
					    template_name = "datacenterlight/index.html"
 | 
				
			||||||
    model = BetaAccess
 | 
					 | 
				
			||||||
    form_class = BetaAccessForm
 | 
					 | 
				
			||||||
    success_url = "/datacenterlight#requestform"
 | 
					    success_url = "/datacenterlight#requestform"
 | 
				
			||||||
    success_message = "Thank you, we will contact you as soon as possible"
 | 
					    success_message = "Thank you, we will contact you as soon as possible"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -292,48 +171,9 @@ class IndexView(CreateView):
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
        return context
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def form_valid(self, form):
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        context = {
 | 
					 | 
				
			||||||
            'base_url': "{0}://{1}".format(self.request.scheme,
 | 
					 | 
				
			||||||
                                           self.request.get_host())
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        email_data = {
 | 
					 | 
				
			||||||
            'subject': 'DatacenterLight Beta Access Request',
 | 
					 | 
				
			||||||
            'from_address': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>',
 | 
					 | 
				
			||||||
            'to': form.cleaned_data.get('email'),
 | 
					 | 
				
			||||||
            'from': '(datacenterlight) DatacenterLight Support support@datacenterlight.ch',
 | 
					 | 
				
			||||||
            'context': context,
 | 
					 | 
				
			||||||
            'template_name': 'request_access_confirmation',
 | 
					 | 
				
			||||||
            'template_path': 'datacenterlight/emails/'
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        email = BaseEmail(**email_data)
 | 
					 | 
				
			||||||
        email.send()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        context.update({
 | 
					 | 
				
			||||||
            'email': form.cleaned_data.get('email')
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        email_data = {
 | 
					 | 
				
			||||||
            'subject': 'DatacenterLight Beta Access Request',
 | 
					 | 
				
			||||||
            'from_address': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>',
 | 
					 | 
				
			||||||
            'to': 'info@ungleich.ch',
 | 
					 | 
				
			||||||
            'context': context,
 | 
					 | 
				
			||||||
            'template_name': 'request_access_notification',
 | 
					 | 
				
			||||||
            'template_path': 'datacenterlight/emails/'
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        email = BaseEmail(**email_data)
 | 
					 | 
				
			||||||
        email.send()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        messages.add_message(self.request, messages.SUCCESS,
 | 
					 | 
				
			||||||
                             self.success_message)
 | 
					 | 
				
			||||||
        return super(IndexView, self).form_valid(form)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WhyDataCenterLightView(IndexView):
 | 
					class WhyDataCenterLightView(IndexView):
 | 
				
			||||||
    template_name = "datacenterlight/whydatacenterlight.html"
 | 
					    template_name = "datacenterlight/whydatacenterlight.html"
 | 
				
			||||||
    model = BetaAccess
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PaymentOrderView(FormView):
 | 
					class PaymentOrderView(FormView):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,7 +74,7 @@
 | 
				
			||||||
              <center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					              <center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
                <table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					                <table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
 | 
					<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
 | 
				
			||||||
                      <a href="{{base_url}}" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'digitalglarus/img/digitalgalrus_logo_white.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
 | 
					                      <a href="https://www.digitalglarus.ch" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'digitalglarus/img/digitalgalrus_logo_white.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
 | 
				
			||||||
                    </td>
 | 
					                    </td>
 | 
				
			||||||
                    <td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
 | 
					                    <td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
 | 
				
			||||||
                    </td>
 | 
					                    </td>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,7 +74,7 @@
 | 
				
			||||||
              <center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					              <center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
                <table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
					                <table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
 | 
					<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
 | 
				
			||||||
                      <a href="{{base_url}}" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static "hosting/img/logo_black.png" %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
 | 
					                      <a href="https://www.digitalglarus.ch" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static "hosting/img/logo_black.png" %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
 | 
				
			||||||
                    </td>
 | 
					                    </td>
 | 
				
			||||||
                    <td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
 | 
					                    <td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
 | 
				
			||||||
                    </td>
 | 
					                    </td>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,8 @@ from .views import ContactView, IndexView, HistoryView, LoginView, SignupView,\
 | 
				
			||||||
# from membership.views import LoginRegistrationView
 | 
					# from membership.views import LoginRegistrationView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
urlpatterns = [
 | 
					urlpatterns = [
 | 
				
			||||||
    url(_(r'booking/payment/edit/?$'), EditCreditCardView.as_view(), name='edit_credit_card'),
 | 
					    url(_(r'booking/payment/edit/?$'),
 | 
				
			||||||
 | 
					        EditCreditCardView.as_view(), name='edit_credit_card'),
 | 
				
			||||||
    url(_(r'^$'), IndexView.as_view(), name='landing'),
 | 
					    url(_(r'^$'), IndexView.as_view(), name='landing'),
 | 
				
			||||||
    # url(_(r'new_credit_card/?$'), TermsAndConditions, name='TermsAndConditions'),
 | 
					    # url(_(r'new_credit_card/?$'), TermsAndConditions, name='TermsAndConditions'),
 | 
				
			||||||
    url(_(r'support-us/?$'), SupportusView.as_view(), name='supportus'),
 | 
					    url(_(r'support-us/?$'), SupportusView.as_view(), name='supportus'),
 | 
				
			||||||
| 
						 | 
					@ -30,14 +31,16 @@ urlpatterns = [
 | 
				
			||||||
    url(_(r'users/billing_address/?$'), UserBillingAddressView.as_view(),
 | 
					    url(_(r'users/billing_address/?$'), UserBillingAddressView.as_view(),
 | 
				
			||||||
        name='user_billing_address'),
 | 
					        name='user_billing_address'),
 | 
				
			||||||
    url(_(r'booking/?$'), BookingSelectDatesView.as_view(), name='booking'),
 | 
					    url(_(r'booking/?$'), BookingSelectDatesView.as_view(), name='booking'),
 | 
				
			||||||
    url(_(r'booking/payment/?$'), BookingPaymentView.as_view(), name='booking_payment'),
 | 
					    url(_(r'booking/payment/?$'),
 | 
				
			||||||
 | 
					        BookingPaymentView.as_view(), name='booking_payment'),
 | 
				
			||||||
    url(_(r'booking/orders/(?P<pk>\d+)/?$'), OrdersBookingDetailView.as_view(),
 | 
					    url(_(r'booking/orders/(?P<pk>\d+)/?$'), OrdersBookingDetailView.as_view(),
 | 
				
			||||||
        name='booking_orders_detail'),
 | 
					        name='booking_orders_detail'),
 | 
				
			||||||
    # url(_(r'booking/orders/(?P<pk>\d+)/cancel/?$'), BookingCancelView.as_view(),
 | 
					    # url(_(r'booking/orders/(?P<pk>\d+)/cancel/?$'), BookingCancelView.as_view(),
 | 
				
			||||||
    #     name='booking_orders_cancel'),
 | 
					    #     name='booking_orders_cancel'),
 | 
				
			||||||
    url(_(r'booking/orders/?$'), BookingOrdersListView.as_view(),
 | 
					    url(_(r'booking/orders/?$'), BookingOrdersListView.as_view(),
 | 
				
			||||||
        name='booking_orders_list'),
 | 
					        name='booking_orders_list'),
 | 
				
			||||||
    url(_(r'membership/payment/?$'), MembershipPaymentView.as_view(), name='membership_payment'),
 | 
					    url(_(r'membership/payment/?$'),
 | 
				
			||||||
 | 
					        MembershipPaymentView.as_view(), name='membership_payment'),
 | 
				
			||||||
    url(_(r'membership/activated/?$'), MembershipActivatedView.as_view(),
 | 
					    url(_(r'membership/activated/?$'), MembershipActivatedView.as_view(),
 | 
				
			||||||
        name='membership_activated'),
 | 
					        name='membership_activated'),
 | 
				
			||||||
    url(_(r'membership/deactivate/?$'), MembershipDeactivateView.as_view(),
 | 
					    url(_(r'membership/deactivate/?$'), MembershipDeactivateView.as_view(),
 | 
				
			||||||
| 
						 | 
					@ -53,7 +56,7 @@ urlpatterns = [
 | 
				
			||||||
    url(_(r'membership/orders/?$'), MembershipOrdersListView.as_view(),
 | 
					    url(_(r'membership/orders/?$'), MembershipOrdersListView.as_view(),
 | 
				
			||||||
        name='membership_orders_list'),
 | 
					        name='membership_orders_list'),
 | 
				
			||||||
    url(_(r'supporters/?$'), views.supporters, name='supporters'),
 | 
					    url(_(r'supporters/?$'), views.supporters, name='supporters'),
 | 
				
			||||||
    # url(_(r'support-us/?$'), views.support, name='support'),
 | 
					    url(_(r'support-us/?$'), views.support, name='support'),
 | 
				
			||||||
    url(r'^blog/(?P<slug>\w[-\w]*)/$', views.blog_detail, name='blog-detail'),
 | 
					    url(r'^blog/(?P<slug>\w[-\w]*)/$', views.blog_detail, name='blog-detail'),
 | 
				
			||||||
    url(r'blog/$', views.blog, name='blog'),
 | 
					    url(r'blog/$', views.blog, name='blog'),
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@ Copyright 2015 ungleich.
 | 
				
			||||||
# -*- coding: utf-8 -*-
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
 | 
					# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
 | 
					import json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from django.utils.translation import ugettext_lazy as _
 | 
					from django.utils.translation import ugettext_lazy as _
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,7 +55,8 @@ PROJECT_DIR = os.path.abspath(
 | 
				
			||||||
# load .env file
 | 
					# load .env file
 | 
				
			||||||
dotenv.read_dotenv("{0}/.env".format(PROJECT_DIR))
 | 
					dotenv.read_dotenv("{0}/.env".format(PROJECT_DIR))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SITE_ID = 1
 | 
					from multisite import SiteID
 | 
				
			||||||
 | 
					SITE_ID = SiteID(default=1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
APP_ROOT_ENDPOINT = "/"
 | 
					APP_ROOT_ENDPOINT = "/"
 | 
				
			||||||
APPEND_SLASH = True
 | 
					APPEND_SLASH = True
 | 
				
			||||||
| 
						 | 
					@ -76,6 +78,7 @@ SECRET_KEY = env('DJANGO_SECRET_KEY')
 | 
				
			||||||
INSTALLED_APPS = (
 | 
					INSTALLED_APPS = (
 | 
				
			||||||
    # 1st migrate
 | 
					    # 1st migrate
 | 
				
			||||||
    'membership',
 | 
					    'membership',
 | 
				
			||||||
 | 
					    'djangocms_admin_style',
 | 
				
			||||||
    'django.contrib.admin',
 | 
					    'django.contrib.admin',
 | 
				
			||||||
    'django.contrib.auth',
 | 
					    'django.contrib.auth',
 | 
				
			||||||
    'django.contrib.contenttypes',
 | 
					    'django.contrib.contenttypes',
 | 
				
			||||||
| 
						 | 
					@ -83,6 +86,8 @@ INSTALLED_APPS = (
 | 
				
			||||||
    'django.contrib.messages',
 | 
					    'django.contrib.messages',
 | 
				
			||||||
    'django.contrib.staticfiles',
 | 
					    'django.contrib.staticfiles',
 | 
				
			||||||
    'django.contrib.sites',
 | 
					    'django.contrib.sites',
 | 
				
			||||||
 | 
					    'multisite',
 | 
				
			||||||
 | 
					    'djangocms_multisite',
 | 
				
			||||||
    'easy_thumbnails',
 | 
					    'easy_thumbnails',
 | 
				
			||||||
    'utils',
 | 
					    'utils',
 | 
				
			||||||
    'stored_messages',
 | 
					    'stored_messages',
 | 
				
			||||||
| 
						 | 
					@ -124,7 +129,6 @@ INSTALLED_APPS = (
 | 
				
			||||||
    # 'djangocms_teaser',
 | 
					    # 'djangocms_teaser',
 | 
				
			||||||
    'djangocms_page_meta',
 | 
					    'djangocms_page_meta',
 | 
				
			||||||
    'djangocms_text_ckeditor',
 | 
					    'djangocms_text_ckeditor',
 | 
				
			||||||
    'djangocms_admin_style',
 | 
					 | 
				
			||||||
    'cmsplugin_filer_file',
 | 
					    'cmsplugin_filer_file',
 | 
				
			||||||
    'cmsplugin_filer_folder',
 | 
					    'cmsplugin_filer_folder',
 | 
				
			||||||
    'cmsplugin_filer_link',
 | 
					    'cmsplugin_filer_link',
 | 
				
			||||||
| 
						 | 
					@ -163,6 +167,8 @@ MIDDLEWARE_CLASSES = (
 | 
				
			||||||
    'cms.middleware.page.CurrentPageMiddleware',
 | 
					    'cms.middleware.page.CurrentPageMiddleware',
 | 
				
			||||||
    'cms.middleware.toolbar.ToolbarMiddleware',
 | 
					    'cms.middleware.toolbar.ToolbarMiddleware',
 | 
				
			||||||
    'cms.middleware.language.LanguageCookieMiddleware',
 | 
					    'cms.middleware.language.LanguageCookieMiddleware',
 | 
				
			||||||
 | 
					    'multisite.middleware.DynamicSiteMiddleware',
 | 
				
			||||||
 | 
					    'djangocms_multisite.middleware.CMSMultiSiteMiddleware',
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CSRF_FAILURE_VIEW = 'hosting.views.forbidden_view'
 | 
					CSRF_FAILURE_VIEW = 'hosting.views.forbidden_view'
 | 
				
			||||||
| 
						 | 
					@ -328,6 +334,8 @@ CMS_PLACEHOLDER_CONF = {
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CMS_PERMISSION=True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CACHES = {
 | 
					CACHES = {
 | 
				
			||||||
    'default': {
 | 
					    'default': {
 | 
				
			||||||
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
 | 
					        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
 | 
				
			||||||
| 
						 | 
					@ -507,6 +515,36 @@ STRIPE_API_PRIVATE_KEY_TEST = env('STRIPE_API_PRIVATE_KEY_TEST')
 | 
				
			||||||
ANONYMOUS_USER_NAME = 'anonymous@ungleich.ch'
 | 
					ANONYMOUS_USER_NAME = 'anonymous@ungleich.ch'
 | 
				
			||||||
GUARDIAN_GET_INIT_ANONYMOUS_USER = 'membership.models.get_anonymous_user_instance'
 | 
					GUARDIAN_GET_INIT_ANONYMOUS_USER = 'membership.models.get_anonymous_user_instance'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					UNGLEICH_SITE_CONFIGS = env('UNGLEICH_SITE_CONFIGS')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MULTISITE_CMS_URLS = {}
 | 
				
			||||||
 | 
					if UNGLEICH_SITE_CONFIGS == "":
 | 
				
			||||||
 | 
					    raise Exception("Please define UNGLEICH_SITE_CONFIGS in your .env")
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        configs_dict=json.loads(UNGLEICH_SITE_CONFIGS)
 | 
				
			||||||
 | 
					    except ValueError as verr:
 | 
				
			||||||
 | 
					        raise Exception("UNGLEICH_SITE_CONFIGS is not a valid JSON: {}".format(
 | 
				
			||||||
 | 
					            str(verr)
 | 
				
			||||||
 | 
					        ))
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        MULTISITE_CMS_URLS = {
 | 
				
			||||||
 | 
					            k:v['MULTISITE_CMS_URL'] for (k,v) in configs_dict.items()
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MULTISITE_CMS_ALIASES = {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					MULTISITE_CMS_FALLBACK = env('MULTISITE_CMS_FALLBACK')
 | 
				
			||||||
 | 
					if MULTISITE_CMS_FALLBACK == '':
 | 
				
			||||||
 | 
					    MULTISITE_CMS_FALLBACK = 'datacenterlight.ch'
 | 
				
			||||||
 | 
					MULTISITE_FALLBACK = 'django.views.generic.base.RedirectView'
 | 
				
			||||||
 | 
					MULTISITE_FALLBACK_KWARGS = {
 | 
				
			||||||
 | 
					    'url': 'https://{}/'.format(MULTISITE_CMS_FALLBACK), 'permanent': False
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FILER_ENABLE_PERMISSIONS = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#############################################
 | 
					#############################################
 | 
				
			||||||
# configurations for opennebula-integration #
 | 
					# configurations for opennebula-integration #
 | 
				
			||||||
#############################################
 | 
					#############################################
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,5 +19,6 @@ MIDDLEWARE_CLASSES += ("debug_toolbar.middleware.DebugToolbarMiddleware",)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
INSTALLED_APPS += (
 | 
					INSTALLED_APPS += (
 | 
				
			||||||
    'django_extensions',
 | 
					    'django_extensions',
 | 
				
			||||||
    'debug_toolbar'
 | 
					    # debug_toolbar seems to conflict with multisite (and djangocms_multisite)
 | 
				
			||||||
 | 
					    #   'debug_toolbar'
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,5 +31,6 @@ ALLOWED_HOSTS = [
 | 
				
			||||||
    ".ipv6onlyhosting.com",
 | 
					    ".ipv6onlyhosting.com",
 | 
				
			||||||
    ".ipv6onlyhosting.net",
 | 
					    ".ipv6onlyhosting.net",
 | 
				
			||||||
    ".digitalglarus.ch",
 | 
					    ".digitalglarus.ch",
 | 
				
			||||||
    ".hack4glarus.ch"
 | 
					    ".hack4glarus.ch",
 | 
				
			||||||
 | 
					    ".xn--nglarus-n2a.ch"
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										17
									
								
								dynamicweb/urls_multi.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								dynamicweb/urls_multi.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					from django.conf import settings
 | 
				
			||||||
 | 
					from django.conf.urls import include, url
 | 
				
			||||||
 | 
					from django.conf.urls.i18n import i18n_patterns
 | 
				
			||||||
 | 
					from django.contrib import admin
 | 
				
			||||||
 | 
					from django.views import static as static_view
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					urlpatterns = i18n_patterns(
 | 
				
			||||||
 | 
					    url(r'^admin/', include(admin.site.urls)),
 | 
				
			||||||
 | 
					    url(r'^cms/', include('cms.urls')),
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					urlpatterns += [
 | 
				
			||||||
 | 
					    url(r'^media/(?P<path>.*)$',
 | 
				
			||||||
 | 
					        static_view.serve, {
 | 
				
			||||||
 | 
					            'document_root': settings.MEDIA_ROOT,
 | 
				
			||||||
 | 
					        }),
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 9 KiB  | 
| 
						 | 
					@ -1,147 +0,0 @@
 | 
				
			||||||
{% load staticfiles %}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<!DOCTYPE html>
 | 
					 | 
				
			||||||
<html lang="en">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<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="description" content="">
 | 
					 | 
				
			||||||
    <meta name="author" content="">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <title>Rails Hosting.ch - Ruby on Rails as easy as possible</title>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- Bootstrap Core CSS -->
 | 
					 | 
				
			||||||
    <link href="{% static 'hosting/css/bootstrap.min.css' %}" rel="stylesheet">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- Custom CSS -->
 | 
					 | 
				
			||||||
    <link href="{% static 'hosting/css/landing-page.css' %}" rel="stylesheet">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- Custom Fonts -->
 | 
					 | 
				
			||||||
    <link href='http://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
 | 
					 | 
				
			||||||
    <link href="{% static 'hosting/font-awesome/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css">
 | 
					 | 
				
			||||||
    <link href="http://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
 | 
					 | 
				
			||||||
    <link rel="shortcut icon" href="{% static 'hosting/img/favicon.ico' %}" type="image/x-icon" />
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- 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]-->
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- Google analytics -->
 | 
					 | 
				
			||||||
    {% include 'google_analytics.html' %}
 | 
					 | 
				
			||||||
    <!-- End Google Analytics -->
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<body>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- Navigation -->
 | 
					 | 
				
			||||||
    <nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
 | 
					 | 
				
			||||||
        <div class="container 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">Toggle navigation</span>
 | 
					 | 
				
			||||||
                    <span class="icon-bar"></span>
 | 
					 | 
				
			||||||
                    <span class="icon-bar"></span>
 | 
					 | 
				
			||||||
                    <span class="icon-bar"></span>
 | 
					 | 
				
			||||||
                </button>
 | 
					 | 
				
			||||||
                <a class="navbar-brand topnav" href="#"><img src="{% static 'hosting/img/logo_black.svg' %}"></a>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
            <!-- Collect the nav links, forms, and other content for toggling -->
 | 
					 | 
				
			||||||
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
 | 
					 | 
				
			||||||
                <ul class="nav navbar-nav navbar-right">
 | 
					 | 
				
			||||||
                    <li>
 | 
					 | 
				
			||||||
                        <a href="{% url 'hosting:index' %}#how">How it works</a>
 | 
					 | 
				
			||||||
                    </li>
 | 
					 | 
				
			||||||
                    <li>
 | 
					 | 
				
			||||||
                        <a href="{% url 'hosting:index' %}#your">Your infrastructure</a>
 | 
					 | 
				
			||||||
                    </li>
 | 
					 | 
				
			||||||
                   <li>
 | 
					 | 
				
			||||||
                        <a href="{% url 'hosting:index' %}#our">Our inftrastructure</a>
 | 
					 | 
				
			||||||
                    </li>
 | 
					 | 
				
			||||||
                    <li>
 | 
					 | 
				
			||||||
                        <a href="{% url 'hosting:index' %}#price">Pricing</a>
 | 
					 | 
				
			||||||
                    </li>
 | 
					 | 
				
			||||||
                    <li>
 | 
					 | 
				
			||||||
                        <a href="{% url 'hosting:index' %}#contact">Contact</a>
 | 
					 | 
				
			||||||
                    </li>
 | 
					 | 
				
			||||||
                </ul>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
            <!-- /.navbar-collapse -->
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
        <!-- /.container -->
 | 
					 | 
				
			||||||
    </nav>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- Header -->
 | 
					 | 
				
			||||||
    <a name="about"></a>
 | 
					 | 
				
			||||||
    <div class="intro-header">
 | 
					 | 
				
			||||||
        <div class="container">
 | 
					 | 
				
			||||||
          <div class=".col-md-6">
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
                    <div class="intro-message"><img src="{% static 'hosting/img/checkmark.png' %}" class="responsive">
 | 
					 | 
				
			||||||
                      <p>Thank you  for your interest in joining Rails-Hosting Beta.<br>
 | 
					 | 
				
			||||||
                            We will come back to you shortly to give you access to our  infrastructure.
 | 
					 | 
				
			||||||
                      </p>
 | 
					 | 
				
			||||||
                    <hr class="intro-divider">
 | 
					 | 
				
			||||||
                        <ul class="list-inline intro-social-buttons">
 | 
					 | 
				
			||||||
                            
 | 
					 | 
				
			||||||
                        </ul>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
        <!-- /.container -->
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
    <!-- /.intro-header -->
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- Footer -->
 | 
					 | 
				
			||||||
    <footer>
 | 
					 | 
				
			||||||
        <div class="container">
 | 
					 | 
				
			||||||
            <div class="row">
 | 
					 | 
				
			||||||
                <div class="col-lg-12">
 | 
					 | 
				
			||||||
                    <ul class="list-inline">
 | 
					 | 
				
			||||||
                        <li>
 | 
					 | 
				
			||||||
                            <a href="{% url 'hosting:index' %}">Home</a>
 | 
					 | 
				
			||||||
                        </li>
 | 
					 | 
				
			||||||
                        <li class="footer-menu-divider">⋅</li>
 | 
					 | 
				
			||||||
                        <li>
 | 
					 | 
				
			||||||
                            <a href="{% url 'hosting:index' %}#how">How it works</a></li>
 | 
					 | 
				
			||||||
                        <li class="footer-menu-divider">⋅</li>
 | 
					 | 
				
			||||||
                        <li>
 | 
					 | 
				
			||||||
                            <a href="{% url 'hosting:index' %}#your">Your infrastructure</a></li>
 | 
					 | 
				
			||||||
                        <li>⋅</li>
 | 
					 | 
				
			||||||
                        <li>
 | 
					 | 
				
			||||||
                            <a href="{% url 'hosting:index' %}#our">Our infrastructure</a></li>
 | 
					 | 
				
			||||||
                        <li class="footer-menu-divider">⋅</li>
 | 
					 | 
				
			||||||
                        <li>
 | 
					 | 
				
			||||||
                            <a href="{% url 'hosting:index' %}#price">Pricing</a>
 | 
					 | 
				
			||||||
                        </li>
 | 
					 | 
				
			||||||
                        <li class="footer-menu-divider">⋅</li>
 | 
					 | 
				
			||||||
                        <li>
 | 
					 | 
				
			||||||
                            <a href="{% url 'hosting:index' %}#contact">Contact</a>
 | 
					 | 
				
			||||||
                        </li>
 | 
					 | 
				
			||||||
                    </ul>
 | 
					 | 
				
			||||||
                    <p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
    </footer>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- jQuery -->
 | 
					 | 
				
			||||||
    <script src="{% static 'hosting/js/jquery.js' %}"></script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- Bootstrap Core JavaScript -->
 | 
					 | 
				
			||||||
    <script src="{% static 'hosting/js/bootstrap.min.js' %}"></script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,6 @@
 | 
				
			||||||
            <div class="col-lg-12">
 | 
					            <div class="col-lg-12">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <div class="intro-message">
 | 
					                <div class="intro-message">
 | 
				
			||||||
                <img class="responsive" src="{% static 'hosting/img/Beta.png' %}">
 | 
					 | 
				
			||||||
                    <h1>{{ domain }}</h1>
 | 
					                    <h1>{{ domain }}</h1>
 | 
				
			||||||
                    <h3>{{ hosting_long }} as easy as possible</h3>
 | 
					                    <h3>{{ hosting_long }} as easy as possible</h3>
 | 
				
			||||||
                    <hr class="intro-divider">
 | 
					                    <hr class="intro-divider">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,20 +1,103 @@
 | 
				
			||||||
 | 
					from django import forms
 | 
				
			||||||
from django.contrib import admin
 | 
					from django.contrib import admin
 | 
				
			||||||
 | 
					from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
 | 
				
			||||||
 | 
					from django.contrib.auth.forms import ReadOnlyPasswordHashField
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .models import CustomUser, StripeCustomer
 | 
					from .models import CustomUser, StripeCustomer
 | 
				
			||||||
from django.contrib.auth.hashers import make_password
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CustomUserAdmin(admin.ModelAdmin):
 | 
					# Refer https://docs.djangoproject.com/en/2.0/topics/auth/customizing/
 | 
				
			||||||
    fields = ('password', 'user_permissions', 'email', 'is_admin')
 | 
					# for understanding custom auth user model
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def save_model(self, request, obj, form, change):
 | 
					 | 
				
			||||||
        password = form.cleaned_data.get('password')
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if not change:
 | 
					class UserCreationForm(forms.ModelForm):
 | 
				
			||||||
            obj.validation_slug = make_password(None)
 | 
					    """A form for creating new users. Includes all the required
 | 
				
			||||||
 | 
					    fields, plus a repeated password."""
 | 
				
			||||||
 | 
					    password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
 | 
				
			||||||
 | 
					    password2 = forms.CharField(label='Password confirmation',
 | 
				
			||||||
 | 
					                                widget=forms.PasswordInput)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        obj.set_password(password)
 | 
					    class Meta:
 | 
				
			||||||
        obj.save()
 | 
					        model = CustomUser
 | 
				
			||||||
        return obj
 | 
					        fields = ('email', 'user_permissions', 'email', 'is_admin')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def clean_password2(self):
 | 
				
			||||||
 | 
					        # Check that the two password entries match
 | 
				
			||||||
 | 
					        password1 = self.cleaned_data.get("password1")
 | 
				
			||||||
 | 
					        password2 = self.cleaned_data.get("password2")
 | 
				
			||||||
 | 
					        if password1 and password2 and password1 != password2:
 | 
				
			||||||
 | 
					            raise forms.ValidationError("Passwords don't match")
 | 
				
			||||||
 | 
					        return password2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def save(self, commit=True):
 | 
				
			||||||
 | 
					        # Save the provided password in hashed format
 | 
				
			||||||
 | 
					        user = super().save(commit=False)
 | 
				
			||||||
 | 
					        user.set_password(self.cleaned_data["password1"])
 | 
				
			||||||
 | 
					        if commit:
 | 
				
			||||||
 | 
					            user.save()
 | 
				
			||||||
 | 
					        return user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class UserChangeForm(forms.ModelForm):
 | 
				
			||||||
 | 
					    """A form for updating users. Includes all the fields on
 | 
				
			||||||
 | 
					    the user, but replaces the password field with admin's
 | 
				
			||||||
 | 
					    password hash display field.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    password = ReadOnlyPasswordHashField(
 | 
				
			||||||
 | 
					        label="Password",
 | 
				
			||||||
 | 
					        help_text=(
 | 
				
			||||||
 | 
					            "Raw passwords are not stored, so there is no way to see "
 | 
				
			||||||
 | 
					            "this user's password, but you can change the password "
 | 
				
			||||||
 | 
					            "using <a href=\"../password/\">this form</a>.")
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        model = CustomUser
 | 
				
			||||||
 | 
					        fields = ('email', 'password', 'is_admin')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def clean_password(self):
 | 
				
			||||||
 | 
					        # Regardless of what the user provides, return the initial value.
 | 
				
			||||||
 | 
					        # This is done here, rather than on the field, because the
 | 
				
			||||||
 | 
					        # field does not have access to the initial value
 | 
				
			||||||
 | 
					        return self.initial["password"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CustomUserAdmin(BaseUserAdmin):
 | 
				
			||||||
 | 
					    # The forms to add and change user instances
 | 
				
			||||||
 | 
					    form = UserChangeForm
 | 
				
			||||||
 | 
					    add_form = UserCreationForm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # The fields to be used in displaying the User model.
 | 
				
			||||||
 | 
					    # These override the definitions on the base UserAdmin
 | 
				
			||||||
 | 
					    # that reference specific fields on auth.User.
 | 
				
			||||||
 | 
					    list_display = (
 | 
				
			||||||
 | 
					        'email', 'is_admin', 'is_superuser'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    list_filter = ()
 | 
				
			||||||
 | 
					    fieldsets = (
 | 
				
			||||||
 | 
					        (None, {'fields': ('email',)}),
 | 
				
			||||||
 | 
					        ('Change Password',
 | 
				
			||||||
 | 
					         {'fields': ('password',),
 | 
				
			||||||
 | 
					          'description': "Raw passwords are not stored, so there is no way to "
 | 
				
			||||||
 | 
					                         "see this user's password, but you can change the "
 | 
				
			||||||
 | 
					                         "password using <a href=\"../password/\">this "
 | 
				
			||||||
 | 
					                         "form</a>."
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					         ),
 | 
				
			||||||
 | 
					        ('Permissions', {'fields': ('is_admin', 'user_permissions',
 | 
				
			||||||
 | 
					                                    'groups')}),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    # add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
 | 
				
			||||||
 | 
					    # overrides get_fieldsets to use this attribute when creating a user.
 | 
				
			||||||
 | 
					    add_fieldsets = (
 | 
				
			||||||
 | 
					        (None, {
 | 
				
			||||||
 | 
					            'classes': ('wide',),
 | 
				
			||||||
 | 
					            'fields': ('email', 'password1', 'password2')}
 | 
				
			||||||
 | 
					         ),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    search_fields = ('email',)
 | 
				
			||||||
 | 
					    ordering = ('email',)
 | 
				
			||||||
 | 
					    filter_horizontal = ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
admin.site.register(CustomUser, CustomUserAdmin)
 | 
					admin.site.register(CustomUser, CustomUserAdmin)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										21
									
								
								membership/migrations/0007_auto_20180213_0128.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								membership/migrations/0007_auto_20180213_0128.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2018-02-13 01:28
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					import membership.models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('membership', '0006_auto_20160526_0445'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.AlterField(
 | 
				
			||||||
 | 
					            model_name='customuser',
 | 
				
			||||||
 | 
					            name='validation_slug',
 | 
				
			||||||
 | 
					            field=models.CharField(db_index=True, default=membership.models.get_validation_slug, max_length=50, unique=True),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -59,6 +59,10 @@ class MyUserManager(BaseUserManager):
 | 
				
			||||||
        return user
 | 
					        return user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_validation_slug():
 | 
				
			||||||
 | 
					    return make_password(None)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CustomUser(AbstractBaseUser, PermissionsMixin):
 | 
					class CustomUser(AbstractBaseUser, PermissionsMixin):
 | 
				
			||||||
    VALIDATED_CHOICES = ((0, 'Not validated'), (1, 'Validated'))
 | 
					    VALIDATED_CHOICES = ((0, 'Not validated'), (1, 'Validated'))
 | 
				
			||||||
    site = models.ForeignKey(Site, default=1)
 | 
					    site = models.ForeignKey(Site, default=1)
 | 
				
			||||||
| 
						 | 
					@ -66,8 +70,12 @@ class CustomUser(AbstractBaseUser, PermissionsMixin):
 | 
				
			||||||
    email = models.EmailField(unique=True)
 | 
					    email = models.EmailField(unique=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    validated = models.IntegerField(choices=VALIDATED_CHOICES, default=0)
 | 
					    validated = models.IntegerField(choices=VALIDATED_CHOICES, default=0)
 | 
				
			||||||
    validation_slug = models.CharField(db_index=True, unique=True,
 | 
					    # By default, we initialize the validation_slug with appropriate value
 | 
				
			||||||
                                       max_length=50)
 | 
					    # This is required for User(page) admin
 | 
				
			||||||
 | 
					    validation_slug = models.CharField(
 | 
				
			||||||
 | 
					        db_index=True, unique=True, max_length=50,
 | 
				
			||||||
 | 
					        default=get_validation_slug
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    is_admin = models.BooleanField(
 | 
					    is_admin = models.BooleanField(
 | 
				
			||||||
        _('staff status'),
 | 
					        _('staff status'),
 | 
				
			||||||
        default=False,
 | 
					        default=False,
 | 
				
			||||||
| 
						 | 
					@ -171,6 +179,10 @@ class CustomUser(AbstractBaseUser, PermissionsMixin):
 | 
				
			||||||
        # Simplest possible answer: All admins are staff
 | 
					        # Simplest possible answer: All admins are staff
 | 
				
			||||||
        return self.is_admin
 | 
					        return self.is_admin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @is_staff.setter
 | 
				
			||||||
 | 
					    def is_staff(self, value):
 | 
				
			||||||
 | 
					        self._is_staff = value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class StripeCustomer(models.Model):
 | 
					class StripeCustomer(models.Model):
 | 
				
			||||||
    user = models.OneToOneField(CustomUser)
 | 
					    user = models.OneToOneField(CustomUser)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,7 +50,7 @@ class VirtualMachineSerializer(serializers.Serializer):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    disk_size = serializers.SerializerMethodField()
 | 
					    disk_size = serializers.SerializerMethodField()
 | 
				
			||||||
    hdd_size = serializers.SerializerMethodField()
 | 
					    hdd_size = serializers.SerializerMethodField()
 | 
				
			||||||
    sdd_size = serializers.SerializerMethodField()
 | 
					    ssd_size = serializers.SerializerMethodField()
 | 
				
			||||||
    ipv4 = serializers.SerializerMethodField()
 | 
					    ipv4 = serializers.SerializerMethodField()
 | 
				
			||||||
    ipv6 = serializers.SerializerMethodField()
 | 
					    ipv6 = serializers.SerializerMethodField()
 | 
				
			||||||
    vm_id = serializers.IntegerField(read_only=True, source='id')
 | 
					    vm_id = serializers.IntegerField(read_only=True, source='id')
 | 
				
			||||||
| 
						 | 
					@ -90,7 +90,9 @@ class VirtualMachineSerializer(serializers.Serializer):
 | 
				
			||||||
                                              ssh_key=ssh_key,
 | 
					                                              ssh_key=ssh_key,
 | 
				
			||||||
                                              specs=specs)
 | 
					                                              specs=specs)
 | 
				
			||||||
        except OpenNebulaException as err:
 | 
					        except OpenNebulaException as err:
 | 
				
			||||||
            raise serializers.ValidationError("OpenNebulaException occured. {0}".format(err))
 | 
					            raise serializers.ValidationError(
 | 
				
			||||||
 | 
					                "OpenNebulaException occured. {0}".format(err)
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return manager.get_vm(opennebula_id)
 | 
					        return manager.get_vm(opennebula_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -104,7 +106,7 @@ class VirtualMachineSerializer(serializers.Serializer):
 | 
				
			||||||
            disk_size += int(disk.size)
 | 
					            disk_size += int(disk.size)
 | 
				
			||||||
        return disk_size / 1024
 | 
					        return disk_size / 1024
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_sdd_size(self, obj):
 | 
					    def get_ssd_size(self, obj):
 | 
				
			||||||
        template = obj.template
 | 
					        template = obj.template
 | 
				
			||||||
        disk_size = 0
 | 
					        disk_size = 0
 | 
				
			||||||
        for disk in template.disks:
 | 
					        for disk in template.disks:
 | 
				
			||||||
| 
						 | 
					@ -165,7 +167,9 @@ class VirtualMachineSerializer(serializers.Serializer):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class VMTemplateSerializer(serializers.Serializer):
 | 
					class VMTemplateSerializer(serializers.Serializer):
 | 
				
			||||||
    """Serializer to map the VMTemplate instance into JSON format."""
 | 
					    """Serializer to map the VMTemplate instance into JSON format."""
 | 
				
			||||||
    id = serializers.IntegerField(read_only=True, source='opennebula_vm_template_id')
 | 
					    id = serializers.IntegerField(
 | 
				
			||||||
 | 
					        read_only=True, source='opennebula_vm_template_id'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    name = serializers.CharField(read_only=True)
 | 
					    name = serializers.CharField(read_only=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,6 +34,7 @@ django-meta==1.2
 | 
				
			||||||
django-meta-mixin==0.3.0
 | 
					django-meta-mixin==0.3.0
 | 
				
			||||||
django-model-utils==2.5
 | 
					django-model-utils==2.5
 | 
				
			||||||
django-mptt==0.8.4
 | 
					django-mptt==0.8.4
 | 
				
			||||||
 | 
					django-multisite==1.4.1
 | 
				
			||||||
django-parler==1.6.3
 | 
					django-parler==1.6.3
 | 
				
			||||||
django-phonenumber-field==1.1.0
 | 
					django-phonenumber-field==1.1.0
 | 
				
			||||||
django-polymorphic==0.9.2
 | 
					django-polymorphic==0.9.2
 | 
				
			||||||
| 
						 | 
					@ -97,3 +98,4 @@ billiard==3.5.0.3
 | 
				
			||||||
amqp==2.2.1
 | 
					amqp==2.2.1
 | 
				
			||||||
vine==1.1.4
 | 
					vine==1.1.4
 | 
				
			||||||
cdist==4.7.0
 | 
					cdist==4.7.0
 | 
				
			||||||
 | 
					git+https://github.com/ungleich/djangocms-multisite.git#egg=djangocms_multisite
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,7 @@ from .models import (
 | 
				
			||||||
    UngleichCustomerItem, UngleichHTMLOnly,
 | 
					    UngleichCustomerItem, UngleichHTMLOnly,
 | 
				
			||||||
    UngleichHeaderWithBackgroundImageSlider,
 | 
					    UngleichHeaderWithBackgroundImageSlider,
 | 
				
			||||||
    UngleichHeaderWithBackgroundVideoSliderItem,
 | 
					    UngleichHeaderWithBackgroundVideoSliderItem,
 | 
				
			||||||
 | 
					    UngleichFooter
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -295,3 +296,18 @@ class UngleichHTMLPlugin(CMSPluginBase):
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        context['instance'] = instance
 | 
					        context['instance'] = instance
 | 
				
			||||||
        return context
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@plugin_pool.register_plugin
 | 
				
			||||||
 | 
					class UngleichFooterPlugin(CMSPluginBase):
 | 
				
			||||||
 | 
					    name = "ungleich Footer Plugin"
 | 
				
			||||||
 | 
					    model = UngleichFooter
 | 
				
			||||||
 | 
					    render_template = "ungleich_page/ungleich/_footer.html"
 | 
				
			||||||
 | 
					    cache = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def render(self, context, instance, placeholder):
 | 
				
			||||||
 | 
					        context = super(UngleichFooterPlugin, self).render(
 | 
				
			||||||
 | 
					            context, instance, placeholder
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        context['instance'] = instance
 | 
				
			||||||
 | 
					        return context
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										44
									
								
								ungleich_page/migrations/0018_ungleichfooter.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								ungleich_page/migrations/0018_ungleichfooter.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,44 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2018-02-08 15:49
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					import django.db.models.deletion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('ungleich_page', '0017_auto_20171219_1856'),
 | 
				
			||||||
 | 
					        ('cms', '0014_auto_20160404_1908'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.CreateModel(
 | 
				
			||||||
 | 
					            name='UngleichFooter',
 | 
				
			||||||
 | 
					            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')),
 | 
				
			||||||
 | 
					                ('copyright_label', models.CharField(blank=True, default='',
 | 
				
			||||||
 | 
					                                                     help_text='Name of the company alongside the copyright year', max_length=100)),
 | 
				
			||||||
 | 
					                ('link_text', models.CharField(
 | 
				
			||||||
 | 
					                    blank=True, help_text='Text for the link on the right part of footer', max_length=100, null=True)),
 | 
				
			||||||
 | 
					                ('link_url', models.URLField(blank=True,
 | 
				
			||||||
 | 
					                                             help_text='Url to the link in footer', null=True)),
 | 
				
			||||||
 | 
					                ('twitter_url', models.URLField(
 | 
				
			||||||
 | 
					                    blank=True, help_text='If empty, twitter btn will not be visible', null=True)),
 | 
				
			||||||
 | 
					                ('linkedin_url', models.URLField(
 | 
				
			||||||
 | 
					                    blank=True, help_text='If empty, linkedin btn will not be visible', null=True)),
 | 
				
			||||||
 | 
					                ('github_url', models.URLField(
 | 
				
			||||||
 | 
					                    blank=True, help_text='If empty, github btn will not be visible', null=True)),
 | 
				
			||||||
 | 
					                ('facebook_url', models.URLField(
 | 
				
			||||||
 | 
					                    blank=True, help_text='If empty, facebook btn will not be visible', null=True)),
 | 
				
			||||||
 | 
					                ('youtube_url', models.URLField(
 | 
				
			||||||
 | 
					                    blank=True, help_text='If empty, youtube btn will not be visible', null=True)),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            options={
 | 
				
			||||||
 | 
					                'abstract': False,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            bases=('cms.cmsplugin',),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
							
								
								
									
										16
									
								
								ungleich_page/migrations/0019_merge.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								ungleich_page/migrations/0019_merge.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2018-02-08 20:10
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('ungleich_page', '0018_ungleichfooter'),
 | 
				
			||||||
 | 
					        ('ungleich_page', '0018_auto_20180105_1826'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -169,3 +169,38 @@ class UngleichHTMLOnly(CMSPlugin):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __str__(self):
 | 
					    def __str__(self):
 | 
				
			||||||
        return self.name
 | 
					        return self.name
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class UngleichFooter(CMSPlugin):
 | 
				
			||||||
 | 
					    copyright_label = models.CharField(
 | 
				
			||||||
 | 
					        max_length=100, default='', blank=True,
 | 
				
			||||||
 | 
					        help_text='Name of the company alongside the copyright year'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    link_text = models.CharField(
 | 
				
			||||||
 | 
					        max_length=100, blank=True, null=True,
 | 
				
			||||||
 | 
					        help_text='Text for the link on the right part of footer'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    link_url = models.URLField(
 | 
				
			||||||
 | 
					        blank=True, null=True,
 | 
				
			||||||
 | 
					        help_text='Url to the link in footer'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    twitter_url = models.URLField(
 | 
				
			||||||
 | 
					        blank=True, null=True,
 | 
				
			||||||
 | 
					        help_text='If empty, twitter btn will not be visible'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    linkedin_url = models.URLField(
 | 
				
			||||||
 | 
					        blank=True, null=True,
 | 
				
			||||||
 | 
					        help_text='If empty, linkedin btn will not be visible'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    github_url = models.URLField(
 | 
				
			||||||
 | 
					        blank=True, null=True,
 | 
				
			||||||
 | 
					        help_text='If empty, github btn will not be visible'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    facebook_url = models.URLField(
 | 
				
			||||||
 | 
					        blank=True, null=True,
 | 
				
			||||||
 | 
					        help_text='If empty, facebook btn will not be visible'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    youtube_url = models.URLField(
 | 
				
			||||||
 | 
					        blank=True, null=True,
 | 
				
			||||||
 | 
					        help_text='If empty, youtube btn will not be visible'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,20 +12,35 @@
 | 
				
			||||||
.navbar-default .navbar-nav>li>a {
 | 
					.navbar-default .navbar-nav>li>a {
 | 
				
			||||||
    text-transform: uppercase;
 | 
					    text-transform: uppercase;
 | 
				
			||||||
    font-weight: 400;
 | 
					    font-weight: 400;
 | 
				
			||||||
    letter-spacing: 1px;
 | 
					    letter-spacing: 0.5px;
 | 
				
			||||||
    color: #777;
 | 
					    color: #777;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.navbar-transparent .navbar-nav>li>a {
 | 
					.navbar-transparent .navbar-nav>li>a {
 | 
				
			||||||
    color: #fff;
 | 
					    color: #fff;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.navbar-transparent .navbar-nav>li>a:hover,
 | 
					.navbar-default .navbar-nav>li>a:focus,
 | 
				
			||||||
.navbar-transparent .navbar-nav>li>a:focus,
 | 
					.navbar-default .navbar-nav>li>a:hover,
 | 
				
			||||||
.navbar-transparent .navbar-nav>li>a:focus:active {
 | 
					.navbar-default .navbar-nav>li>a:active {
 | 
				
			||||||
    color: #fed136;
 | 
					    color: #333;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.navbar-default .navbar-toggle .icon-bar {
 | 
				
			||||||
 | 
					    background-color: #888;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.navbar-default .navbar-toggle:hover,
 | 
				
			||||||
 | 
					.navbar-default .navbar-toggle:focus {
 | 
				
			||||||
 | 
					    background: #ddd;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@media (min-width: 768px) {
 | 
					@media (min-width: 768px) {
 | 
				
			||||||
 | 
					    .navbar-transparent .navbar-nav>li>a:focus,
 | 
				
			||||||
 | 
					    .navbar-transparent .navbar-nav>li>a:hover,
 | 
				
			||||||
 | 
					    .navbar-transparent .navbar-nav>li>a:active {
 | 
				
			||||||
 | 
					        color: #e5e6e7;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .navbar-transparent {
 | 
					    .navbar-transparent {
 | 
				
			||||||
        border-color: transparent;
 | 
					        border-color: transparent;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -57,13 +57,13 @@
 | 
				
			||||||
          <!-- Start Navbar collapse-->
 | 
					          <!-- Start Navbar collapse-->
 | 
				
			||||||
          <ul class="nav navbar-nav navbar-right">
 | 
					          <ul class="nav navbar-nav navbar-right">
 | 
				
			||||||
            <li>
 | 
					            <li>
 | 
				
			||||||
              <a class="page-scroll" href="#services">Technische Details</a>
 | 
					              <a class="url-init" href="#services">Technische Details</a>
 | 
				
			||||||
            </li>
 | 
					            </li>
 | 
				
			||||||
            <li>
 | 
					            <li>
 | 
				
			||||||
              <a class="page-scroll" href="#about">Wie funktioniert es?</a>
 | 
					              <a class="url-init" href="#about">Wie funktioniert es?</a>
 | 
				
			||||||
            </li>
 | 
					            </li>
 | 
				
			||||||
            <li>
 | 
					            <li>
 | 
				
			||||||
              <a class="page-scroll" href="#contact">{% trans "CONTACT" %}</a>
 | 
					              <a class="url-init" href="#contact">{% trans "CONTACT" %}</a>
 | 
				
			||||||
            </li>
 | 
					            </li>
 | 
				
			||||||
          </ul>
 | 
					          </ul>
 | 
				
			||||||
          <!-- /.navbar-collapse -->
 | 
					          <!-- /.navbar-collapse -->
 | 
				
			||||||
| 
						 | 
					@ -312,7 +312,6 @@
 | 
				
			||||||
    <script src="//cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.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 -->
 | 
					    <!-- Custom Theme JavaScript -->
 | 
				
			||||||
    <script src="{% static 'ungleich_page/js/ungleich.js' %}" type="text/javascript"></script>
 | 
					 | 
				
			||||||
    <script src="{% static 'datacenterlight/js/main.js' %}"></script>
 | 
					    <script src="{% static 'datacenterlight/js/main.js' %}"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Custom Fonts -->
 | 
					    <!-- Custom Fonts -->
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										47
									
								
								ungleich_page/templates/ungleich_page/ungleich/_footer.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								ungleich_page/templates/ungleich_page/ungleich/_footer.html
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,47 @@
 | 
				
			||||||
 | 
					<footer>
 | 
				
			||||||
 | 
						<div class="container">
 | 
				
			||||||
 | 
							<div class="row">
 | 
				
			||||||
 | 
							  <div class="col-md-4">
 | 
				
			||||||
 | 
							    <span class="copyright">Copyright © {{instance.copyright_label}} {% now "Y" %}</span>
 | 
				
			||||||
 | 
							  </div>
 | 
				
			||||||
 | 
							  <div class="col-md-4">
 | 
				
			||||||
 | 
							    <ul class="list-inline social-buttons">
 | 
				
			||||||
 | 
							    	{% if instance.twitter_url %}
 | 
				
			||||||
 | 
								      <li>
 | 
				
			||||||
 | 
								      	<a href="{{instance.twitter_url}}"><i class="fa fa-twitter"></i></a>
 | 
				
			||||||
 | 
								      </li>
 | 
				
			||||||
 | 
							    	{% endif %}
 | 
				
			||||||
 | 
							    	{% if instance.github_url %}
 | 
				
			||||||
 | 
								      <li>
 | 
				
			||||||
 | 
								      	<a href="{{instance.github_url}}"><i class="fa fa-github"></i></a>
 | 
				
			||||||
 | 
								      </li>
 | 
				
			||||||
 | 
							    	{% endif %}
 | 
				
			||||||
 | 
							    	{% if instance.linkedin_url %}
 | 
				
			||||||
 | 
								      <li>
 | 
				
			||||||
 | 
								      	<a href="{{instance.linkedin_url}}"><i class="fa fa-linkedin"></i></a>
 | 
				
			||||||
 | 
								      </li>
 | 
				
			||||||
 | 
							    	{% endif %}
 | 
				
			||||||
 | 
							    	{% if instance.facebook_url %}
 | 
				
			||||||
 | 
								      <li>
 | 
				
			||||||
 | 
								      	<a href="{{instance.facebook_url}}"><i class="fa fa-facebook"></i></a>
 | 
				
			||||||
 | 
								      </li>
 | 
				
			||||||
 | 
							    	{% endif %}
 | 
				
			||||||
 | 
							    	{% if instance.youtube_url %}
 | 
				
			||||||
 | 
								      <li>
 | 
				
			||||||
 | 
								      	<a href="{{instance.youtube_url}}"><i class="fa fa-youtube-play"></i></a>
 | 
				
			||||||
 | 
								      </li>
 | 
				
			||||||
 | 
							    	{% endif %}
 | 
				
			||||||
 | 
							    </ul>
 | 
				
			||||||
 | 
							  </div>
 | 
				
			||||||
 | 
							  <div class="col-md-4">
 | 
				
			||||||
 | 
							  	{% if instance.link_text %}
 | 
				
			||||||
 | 
								    <ul class="list-inline quicklinks">
 | 
				
			||||||
 | 
								      <li>
 | 
				
			||||||
 | 
										<a href="{{instance.link_url}}">{{instance.link_text}}</a>
 | 
				
			||||||
 | 
								      </li>
 | 
				
			||||||
 | 
								    </ul>
 | 
				
			||||||
 | 
							  	{% endif %}
 | 
				
			||||||
 | 
							  </div>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
						</div>
 | 
				
			||||||
 | 
					</footer>
 | 
				
			||||||
| 
						 | 
					@ -41,7 +41,9 @@
 | 
				
			||||||
    {% placeholder 'Ungleich Page Contents' %}
 | 
					    {% placeholder 'Ungleich Page Contents' %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Footer -->
 | 
					    <!-- Footer -->
 | 
				
			||||||
    {% include "ungleich_page/includes/_footer.html" %}
 | 
					    {% placeholder 'Footer' or %}
 | 
				
			||||||
 | 
					        {% include "ungleich_page/includes/_footer.html" %}
 | 
				
			||||||
 | 
					    {% endplaceholder %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- jQuery -->
 | 
					    <!-- jQuery -->
 | 
				
			||||||
    <script src="{% static 'ungleich_page/js/jquery.js' %}" type="text/javascript"></script>
 | 
					    <script src="{% static 'ungleich_page/js/jquery.js' %}" type="text/javascript"></script>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue