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 -->
|
||||||
|
{% placeholder 'Footer' or %}
|
||||||
{% include "ungleich_page/includes/_footer.html" %}
|
{% 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…
Reference in a new issue