Merge pull request #314 from levivm/develop

Henrys Changes (Need to test)
This commit is contained in:
Levi Velázquez 2017-06-09 10:42:02 -05:00 committed by GitHub
commit db5d0f864c
1078 changed files with 1517 additions and 9998 deletions

1
.gitignore vendored
View file

@ -34,4 +34,3 @@ secret-key
.idea/ .idea/
.env .env
*.mo

View file

@ -1,20 +1,29 @@
1.0.0: 2017-05-25 1.0.8: 2017-06-08
* Initial stable release * [datacenterlight] Fixed german typos
* [datacenterlight] Refactored dcl order/success templates
1.0.7: 2017-06-08
* [datacenterlight] Fixed an issue causing header images not appear in the blog
1.0.6: 2017-06-06
* [datacenterlight] Hotfix, feature/manualorder added
1.0.5: 2017-06-06
* [all] General cleanup
* [datacenterlight] Add German translations
* [datacenterlight] Change beta access to subscriptions
* [hosting] Add German translations
* [blog] Add German translation for header
* [opennebula_api] Improve testing, add ssh key functions
* [opennebula_api] Remove template views
* [datacenterlight] Allow user to have multiple ssh keys
* [datacenterlight] Changed stripe.js v2 to v3
* [datacenterlight] Added support for stripe payment errors on current user language
1.0.4: 2017-06-05
* [all] Added new Domains to accept
1.0.3: 2017-06-02
* [datacenterlight] Hotfix, remove footer on mobile devices
1.0.2: 2017-05-28
* [datacenterlight] Fixed login redirecting to blank page after logout
1.0.1: 2017-05-26 1.0.1: 2017-05-26
* [datacenterlight] Allow storage to shrink / grow only in 10th of GB * [datacenterlight] Allow storage to shrink / grow only in 10th of GB
* [datacenterlight] Fix initially shown price * [datacenterlight] Fix initially shown price
1.0.2: 2017-05-28 1.0.0: 2017-05-25
* [datacenterlight] Fixed login redirecting to blank page after logout * Initial stable release
1.0.3: 2017-06-02
* [datacenterlight] Hotfix, remove footer on mobile devices
next:
* [datacenterlight] Add German translations
* [datacenterlight] Change beta access to subscriptions
* [hosting] Add German translations
* [blog] Add German translation for header
* [opennebula_api] Improve testing, add ssh key functions
* [opennebula_api] Remove template views
* [datacenterlight] Allow user to have multiple ssh keys
* [datacenterlight] Changed stripe.js v2 to v3
* [datacenterlight] Added support for stripe payment errors on current user language

Binary file not shown.

View file

@ -1,4 +1,5 @@
{% load cms_tags staticfiles %} {% load cms_tags staticfiles %}
{% load i18n %}
<!-- Page Header --> <!-- Page Header -->
<!-- Set your background image for this header on the line below. --> <!-- Set your background image for this header on the line below. -->
<header class="intro-header" <header class="intro-header"

View file

@ -1,69 +0,0 @@
user www-data;
worker_processes 2;
pid /var/run/nginx.pid;
daemon off;
events {
worker_connections 512;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
port_in_redirect on;
server_names_hash_bucket_size 128;
server_name_in_redirect off;
client_max_body_size 60m;
include /etc/nginx/mime.types;
default_type application/octet-stream;
send_timeout 300;
client_body_timeout 300;
client_header_timeout 300;
access_log /logs/access.log;
error_log /logs/error.log;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
upstream django {
server 127.0.0.1:8000;
}
server {
listen 80 default;
server_name localhost;
location / {
proxy_pass http://django;
include proxy_params;
}
location /media/ {
root /data;
expires max;
access_log off;
}
location /static/ {
root /data;
expires max;
access_log off;
}
location ~ /\.ht { deny all; }
location ~ /\.hg { deny all; }
location ~ /\.svn { deny all; }
}
}

View file

@ -1,25 +0,0 @@
server {
listen 80;
server_name dynamicweb-staging.ungleich.ch;
location /static {
alias /home/app/django/dynamicweb/static/;
}
location /media {
alias /home/app/django/dynamicweb/media/;
}
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_pass_header Server;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
}
}

Binary file not shown.

View file

@ -8,7 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-30 13:47+0000\n" "POT-Creation-Date: 2017-06-03 21:51-0500\n"
"POT-Creation-Date: 2017-06-07 02:09+0530\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,23 +19,23 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: datacenterlight/templates/datacenterlight/beta_access.html:13 #: templates/datacenterlight/beta_access.html:13
msgid "Enter name" msgid "Enter name"
msgstr "Name" msgstr "Name"
#: datacenterlight/templates/datacenterlight/beta_access.html:17 #: templates/datacenterlight/beta_access.html:17
msgid "Enter email" msgid "Enter email"
msgstr "E-Mail-Adresse" msgstr "E-Mail-Adresse"
#: datacenterlight/templates/datacenterlight/beta_access.html:21 #: templates/datacenterlight/beta_access.html:21
msgid "Request Newsletter" msgid "Request Beta Access"
msgstr "Newsletter abonnieren" msgstr "Beantrage Beta-Zugang"
#: datacenterlight/templates/datacenterlight/beta_success.html:9 #: templates/datacenterlight/beta_success.html:9
msgid "Request Sent" msgid "Request Sent"
msgstr "Anfrage verschickt" msgstr "Anfrage verschickt"
#: datacenterlight/templates/datacenterlight/beta_success.html:12 #: templates/datacenterlight/beta_success.html:12
msgid "" msgid ""
"Thank you for your subscription! You will receive a confirmation mail from " "Thank you for your subscription! You will receive a confirmation mail from "
"our team" "our team"
@ -42,27 +43,27 @@ msgstr ""
"Vielen dank für Ihre Anmeldung. Sie erhalten in kürze eine Bestätigungsmail " "Vielen dank für Ihre Anmeldung. Sie erhalten in kürze eine Bestätigungsmail "
"von unserem Team" "von unserem Team"
#: datacenterlight/templates/datacenterlight/emails/request_access_confirmation.html:99 #: templates/datacenterlight/emails/request_access_confirmation.html:99
#: datacenterlight/templates/datacenterlight/emails/request_access_confirmation.txt:99 #: templates/datacenterlight/emails/request_access_confirmation.txt:99
msgid "Thank you for your request." msgid "Thank you for your request."
msgstr "Vielen Dank für Ihre Anfrage." msgstr "Vielen Dank für Ihre Anfrage."
#: datacenterlight/templates/datacenterlight/emails/request_access_confirmation.html:104 #: templates/datacenterlight/emails/request_access_confirmation.html:104
#: datacenterlight/templates/datacenterlight/emails/request_access_confirmation.txt:104 #: templates/datacenterlight/emails/request_access_confirmation.txt:104
msgid "You are one step away from being our beta tester!" msgid "You are one step away from being our beta tester!"
msgstr "" msgstr ""
"Sie sind nur noch einen Schritt davon entfernt, unser Beta-Tester zu werden!" "Sie sind nur noch einen Schritt davon entfernt, unser Beta-Tester zu werden!"
#: datacenterlight/templates/datacenterlight/emails/request_access_confirmation.html:105 #: templates/datacenterlight/emails/request_access_confirmation.html:105
#: datacenterlight/templates/datacenterlight/emails/request_access_confirmation.txt:105 #: templates/datacenterlight/emails/request_access_confirmation.txt:105
msgid "" msgid ""
"Currently we are running our tests to make sure everything runs perfectly." "Currently we are running our tests to make sure everything runs perfectly."
msgstr "" msgstr ""
"Momentan testen wir die Beta-Umgebung um sie für Ihren Gebrauch " "Momentan testen wir die Beta-Umgebung um sie für Ihren Gebrauch "
"sicherzustellen." "sicherzustellen."
#: datacenterlight/templates/datacenterlight/emails/request_access_confirmation.html:106 #: templates/datacenterlight/emails/request_access_confirmation.html:106
#: datacenterlight/templates/datacenterlight/emails/request_access_confirmation.txt:106 #: templates/datacenterlight/emails/request_access_confirmation.txt:106
msgid "" msgid ""
"In the meantime, we would like to ask you a little patience<br/> until our " "In the meantime, we would like to ask you a little patience<br/> until our "
"team contacts you with beta access." "team contacts you with beta access."
@ -70,77 +71,134 @@ msgstr ""
"Wir werden dann sobald als möglich Ihren Beta-Zugang erstellen und Sie " "Wir werden dann sobald als möglich Ihren Beta-Zugang erstellen und Sie "
"daraufhin kontaktieren.Bis dahin bitten wir Sie um etwas Geduld." "daraufhin kontaktieren.Bis dahin bitten wir Sie um etwas Geduld."
#: datacenterlight/templates/datacenterlight/emails/request_access_confirmation.html:107 #: templates/datacenterlight/emails/request_access_confirmation.html:107
#: datacenterlight/templates/datacenterlight/emails/request_access_confirmation.txt:107 #: templates/datacenterlight/emails/request_access_confirmation.txt:107
msgid "Thank you!" msgid "Thank you!"
msgstr "Vielen Dank!" msgstr "Vielen Dank!"
#: datacenterlight/templates/datacenterlight/index.html:62 #: templates/datacenterlight/index.html:62
#: datacenterlight/templates/datacenterlight/index.html:160 #: templates/datacenterlight/index.html:160
#: datacenterlight/templates/datacenterlight/index.html:346 #: templates/datacenterlight/index.html:345
#: datacenterlight/templates/datacenterlight/pricing.html:62 #: templates/datacenterlight/new-order.html:62
#: datacenterlight/templates/datacenterlight/pricing.html:190 #: templates/datacenterlight/new-order.html:203
#: templates/datacenterlight/order.html:62
#: templates/datacenterlight/order.html:203
#: templates/datacenterlight/pricing.html:62
#: templates/datacenterlight/pricing.html:190
#: templates/datacenterlight/success.html:62
msgid "What is it" msgid "What is it"
msgstr "Was ist es?" msgstr "Was ist es?"
#: datacenterlight/templates/datacenterlight/index.html:65 #: templates/datacenterlight/index.html:65
#: datacenterlight/templates/datacenterlight/index.html:189 #: templates/datacenterlight/index.html:189
#: datacenterlight/templates/datacenterlight/index.html:349 #: templates/datacenterlight/index.html:348
#: datacenterlight/templates/datacenterlight/pricing.html:65 #: templates/datacenterlight/new-order.html:65
#: datacenterlight/templates/datacenterlight/pricing.html:193 #: templates/datacenterlight/new-order.html:206
#: templates/datacenterlight/order.html:65
#: templates/datacenterlight/order.html:206
#: templates/datacenterlight/pricing.html:65
#: templates/datacenterlight/pricing.html:193
#: templates/datacenterlight/success.html:65
msgid "Scale out" msgid "Scale out"
msgstr "Skalierung" msgstr "Skalierung"
#: datacenterlight/templates/datacenterlight/index.html:68 #: templates/datacenterlight/index.html:68
#: datacenterlight/templates/datacenterlight/index.html:215 #: templates/datacenterlight/index.html:215
#: datacenterlight/templates/datacenterlight/index.html:352 #: templates/datacenterlight/index.html:351
#: datacenterlight/templates/datacenterlight/pricing.html:68 #: templates/datacenterlight/new-order.html:68
#: datacenterlight/templates/datacenterlight/pricing.html:196 #: templates/datacenterlight/new-order.html:209
#: templates/datacenterlight/order.html:68
#: templates/datacenterlight/order.html:209
#: templates/datacenterlight/pricing.html:68
#: templates/datacenterlight/pricing.html:196
#: templates/datacenterlight/success.html:68
msgid "Reliable and light" msgid "Reliable and light"
msgstr "Zuverlässig und leicht" msgstr "Zuverlässig und leicht"
#: datacenterlight/templates/datacenterlight/index.html:71 #: templates/datacenterlight/index.html:71
msgid "Order VM" msgid "Order VM"
msgstr "VM bestellen" msgstr "VM bestellen"
#: datacenterlight/templates/datacenterlight/index.html:74 #: templates/datacenterlight/index.html:74
#: datacenterlight/templates/datacenterlight/index.html:359 #: templates/datacenterlight/index.html:358
#: datacenterlight/templates/datacenterlight/pricing.html:74 #: templates/datacenterlight/new-order.html:74
#: datacenterlight/templates/datacenterlight/pricing.html:203 #: templates/datacenterlight/new-order.html:216
#: templates/datacenterlight/order.html:74
#: templates/datacenterlight/order.html:216
#: templates/datacenterlight/pricing.html:74
#: templates/datacenterlight/pricing.html:203
#: templates/datacenterlight/success.html:74
msgid "Contact" msgid "Contact"
msgstr "Kontakt" msgstr "Kontakt"
#: datacenterlight/templates/datacenterlight/index.html:127 #: templates/datacenterlight/index.html:127
msgid "Finally, an affordable VM hosting in Switzerland!" msgid "Finally, an affordable VM hosting in Switzerland!"
msgstr "Endlich: bezahlbares VM Hosting in der Schweiz" msgstr "Endlich: bezahlbares VM Hosting in der Schweiz"
#: datacenterlight/templates/datacenterlight/index.html:131 #: templates/datacenterlight/index.html:131
msgid "What is it?" msgid "What is it?"
msgstr "Was ist es?" msgstr "Was ist es?"
#: datacenterlight/templates/datacenterlight/index.html:134 #: templates/datacenterlight/index.html:134
msgid "I want it!" msgid "I want it!"
msgstr "Das will ich haben!" msgstr "Das will ich haben!"
#: datacenterlight/templates/datacenterlight/index.html:165 #: templates/datacenterlight/index.html:166
msgid ""
"Reuses existing factory halls instead of building a new expensive building."
msgstr "Verwendet ehemalige Fabrikhallen anstatt ein neues, teures Gebäude zu errichten."
#: templates/datacenterlight/index.html:171
msgid "Only wants you to pay for what you actually need.\\u2028"
msgstr "Möchte, dass du nur bezahlst, was du auch wirklich brauchst: Wähle deine Ressourcen individuell aus!"
#: templates/datacenterlight/index.html:175
msgid ""
"Is creative, using a modern and alternative design for a data center in "
"order to make it more sustainable and affordable at the same time.\\u2028"
msgstr "Ist kreativ, indem es sich ein modernes und alternatives Layout zu Nutze macht um Nachhaltigkeit zu fördern und somit erschwingliche Preise bieten zu können."
#: templates/datacenterlight/index.html:179
msgid ""
"Cuts down the costs for you by using FOSS (Free Open Source Software) "
"exclusively, wherefore we can save money from paying licenses."
msgstr "Sorgt dafür, dass unnötige Kosten erspart werden, indem es ausschliesslich mit FOSS (Free Open Source Software) arbeitet und wir daher auf Lizenzgebühren verzichten können."
#: templates/datacenterlight/index.html:183
msgid ""
"Is located in Glarus, Switzerland where your data is under strict privacy."
msgstr "Befindet sich in Glarus, in der Schweiz, wo deine Daten unter striktem Schutz stehen."
#: templates/datacenterlight/index.html:187
msgid "Has qualified workers on site who take care of the hardware.\\u2028"
msgstr "Hat qualifizierte Mitarbeiter vor Ort, die sich um die Hardware kümmern."
#: templates/datacenterlight/index.html:191
msgid ""
"Renounces active cooling by taking an advantage of the isolation of our "
"tight factory walls."
msgstr "Verzichtet auf aktive Kühlung, indem es sich die Isolation unserer ehemaligen Fabrikhalle zu Nutze macht."
#: templates/datacenterlight/index.html:214
#: templates/datacenterlight/index.html:165
msgid "Reuse existing factory halls intead of building an expensive building." msgid "Reuse existing factory halls intead of building an expensive building."
msgstr "" msgstr ""
"Nachhaltigkeit: Wiederverwendung ehemaliger Fabrikhallen an Stelle der " "Nachhaltigkeit: Wiederverwendung ehemaliger Fabrikhallen an Stelle der "
"Errichtung eines neuen Gebäudes" "Errichtung eines neuen Gebäudes"
#: datacenterlight/templates/datacenterlight/index.html:168 #: templates/datacenterlight/index.html:168
msgid "Being creative, using modern and alternative design for a datacenter." msgid "Being creative, using modern and alternative design for a datacenter."
msgstr "" msgstr ""
"Kreativität: Verwendung eines modernen und alternativen Designs für unser " "Kreativität: Verwendung eines modernen und alternativen Designs für unser "
"Datencenter" "Datencenter"
#: datacenterlight/templates/datacenterlight/index.html:170 #: templates/datacenterlight/index.html:170
msgid "Being open: Using FOSS exclusively, we can save money for licenses." msgid "Being open: Using FOSS exclusively, we can save money for licenses."
msgstr "" msgstr ""
"Offene Verfahrensweise: Die Benutzung eines eigenen Frameworks, FOSS, " "Offene Verfahrensweise: Die Benutzung eines eigenen Frameworks, FOSS, "
"erspart Lizenzgebühren" "erspart Lizenzgebühren"
#: datacenterlight/templates/datacenterlight/index.html:192 #: templates/datacenterlight/index.html:192
msgid "" msgid ""
"We don't use special hardware. We use commodity hardware: we buy computers " "We don't use special hardware. We use commodity hardware: we buy computers "
"that you buy. Just many more and put them in a cozy home for computers " "that you buy. Just many more and put them in a cozy home for computers "
@ -150,7 +208,7 @@ msgstr ""
"erschwingliche Systeme. Bei grösserer Auslastung werden mehr Standard " "erschwingliche Systeme. Bei grösserer Auslastung werden mehr Standard "
"komponenten hinzugekauft und skalieren so das Datencenter." "komponenten hinzugekauft und skalieren so das Datencenter."
#: datacenterlight/templates/datacenterlight/index.html:218 #: templates/datacenterlight/index.html:218
msgid "" msgid ""
"Our VMs are located in Switzerland, with reliable power supply and fast " "Our VMs are located in Switzerland, with reliable power supply and fast "
"internet connection. Our VM costs less thanks to our featherlight " "internet connection. Our VM costs less thanks to our featherlight "
@ -160,82 +218,110 @@ msgstr ""
"Energieversorgung sowie schneller Internetverbindung ausgestattet. Unser " "Energieversorgung sowie schneller Internetverbindung ausgestattet. Unser "
"Angebot ist aufgrund unserer leichten Infrastruktur überaus kostengünstig." "Angebot ist aufgrund unserer leichten Infrastruktur überaus kostengünstig."
#: datacenterlight/templates/datacenterlight/index.html:236 #: templates/datacenterlight/index.html:236
#: datacenterlight/templates/datacenterlight/pricing.html:106 #: templates/datacenterlight/new-order.html:106
#: templates/datacenterlight/order.html:106
#: templates/datacenterlight/pricing.html:106
msgid "We are cutting down the costs significantly!" msgid "We are cutting down the costs significantly!"
msgstr "Wir sorgen dafür, dass die Kosten für Sie signifikant abnehmen" msgstr "Wir sorgen dafür, dass die Kosten für Sie signifikant abnehmen"
#: datacenterlight/templates/datacenterlight/index.html:237 #: templates/datacenterlight/index.html:260
msgid "Affordable VM hosting based in Switzerland"
msgstr "Bezahlbares VM Hosting in der Schweiz"
#: datacenterlight/templates/datacenterlight/index.html:238
msgid "More Info" msgid "More Info"
msgstr "Weitere Informationen" msgstr "Weitere Informationen"
#: datacenterlight/templates/datacenterlight/index.html:245 #: templates/datacenterlight/index.html:237
#: datacenterlight/templates/datacenterlight/pricing.html:119 msgid "Affordable VM hosting based in Switzerland"
msgstr "Bezahlbares VM Hosting in der Schweiz"
#: templates/datacenterlight/index.html:244
#: templates/datacenterlight/new-order.html:119
#: templates/datacenterlight/order.html:119
#: templates/datacenterlight/pricing.html:119
msgid "VM hosting" msgid "VM hosting"
msgstr "VM Hosting" msgstr "VM Hosting"
#: datacenterlight/templates/datacenterlight/index.html:252 #: templates/datacenterlight/index.html:286
#: templates/datacenterlight/index.html:251
msgid "Based in Switzerland" msgid "Based in Switzerland"
msgstr "Standort des Datacenters ist in der Schweiz" msgstr "Standort des Datacenters ist in der Schweiz"
#: datacenterlight/templates/datacenterlight/index.html:261 #: templates/datacenterlight/index.html:260
msgid "10 GB Storage (SSD)" msgid "10 GB Storage (SSD)"
msgstr "10 GB Storage (SSD)" msgstr "10 GB Storage (SSD)"
#: datacenterlight/templates/datacenterlight/index.html:264 #: templates/datacenterlight/index.html:263
#: datacenterlight/templates/datacenterlight/pricing.html:161 #: templates/datacenterlight/new-order.html:171
#: templates/datacenterlight/order.html:171
#: templates/datacenterlight/pricing.html:161
msgid "Order Now!" msgid "Order Now!"
msgstr "Bestelle jetzt!" msgstr "Bestelle jetzt!"
#: datacenterlight/templates/datacenterlight/index.html:280 #: templates/datacenterlight/index.html:302
msgid "Want to know more? Subscribe to our newsletter!" msgid "Want to know more? Subscribe to our newsletter!"
msgstr "Willst du mehr wissen? Abonniere unseren Newsletter!" msgstr "Willst du mehr wissen? Abonniere unseren Newsletter!"
#: datacenterlight/templates/datacenterlight/index.html:307 #: templates/datacenterlight/index.html:364
#: templates/datacenterlight/index.html:279
msgid "I want to have it!"
msgstr "Das möchte ich haben!"
#: templates/datacenterlight/index.html:306
msgid "Switzerland " msgid "Switzerland "
msgstr "Schweiz" msgstr "Schweiz"
#: datacenterlight/templates/datacenterlight/index.html:324 #: templates/datacenterlight/index.html:323
msgid "Questions?" msgid "Questions?"
msgstr "Fragen?" msgstr "Fragen?"
#: datacenterlight/templates/datacenterlight/index.html:324 #: templates/datacenterlight/index.html:323
msgid "Contact us!" msgid "Contact us!"
msgstr "Kontaktiere uns!" msgstr "Kontaktiere uns!"
#: datacenterlight/templates/datacenterlight/index.html:342 #: templates/datacenterlight/index.html:341
#: datacenterlight/templates/datacenterlight/pricing.html:186 #: templates/datacenterlight/new-order.html:199
#: templates/datacenterlight/order.html:199
#: templates/datacenterlight/pricing.html:186
msgid "Home" msgid "Home"
msgstr "Home" msgstr "Home"
#: datacenterlight/templates/datacenterlight/index.html:355 #: templates/datacenterlight/index.html:377
#: datacenterlight/templates/datacenterlight/pricing.html:199 #: templates/datacenterlight/index.html:354
#: templates/datacenterlight/new-order.html:212
#: templates/datacenterlight/order.html:212
#: templates/datacenterlight/pricing.html:199
msgid "Pricing" msgid "Pricing"
msgstr "Preise" msgstr "Preise"
#: datacenterlight/templates/datacenterlight/pricing.html:71 #: templates/datacenterlight/new-order.html:71
#: templates/datacenterlight/order.html:71
#: templates/datacenterlight/pricing.html:71
#: templates/datacenterlight/success.html:71
msgid "Buy VM" msgid "Buy VM"
msgstr "VM Kaufen" msgstr "VM Kaufen"
#: datacenterlight/templates/datacenterlight/pricing.html:127 #: templates/datacenterlight/new-order.html:127
#: templates/datacenterlight/order.html:127
#: templates/datacenterlight/pricing.html:127
msgid "Hosted in Switzerland" msgid "Hosted in Switzerland"
msgstr "Standort des Datacenters ist in der Schweiz" msgstr "Standort des Datacenters ist in der Schweiz"
#: datacenterlight/templates/datacenterlight/pricing.html:144 #: templates/datacenterlight/new-order.html:144
#: templates/datacenterlight/order.html:144
#: templates/datacenterlight/pricing.html:144
msgid "GB Storage (SSD)" msgid "GB Storage (SSD)"
msgstr "GB Storage (SSD)" msgstr "GB Storage (SSD)"
#: datacenterlight/templates/datacenterlight/pricing.html:168 #: templates/datacenterlight/new-order.html:181
#: templates/datacenterlight/order.html:181
#: templates/datacenterlight/pricing.html:168
msgid "Simple and affordable: Try our virtual machine with featherlight price." msgid "Simple and affordable: Try our virtual machine with featherlight price."
msgstr "" msgstr ""
"Simpel und bezahlbar: Testen Sie unsere virtuelen Machinen mit " "Einfach und bezahlbar: Testen Sie unsere virtuellen Maschinen mit "
"federleichten Preisen" "federleichten Preisen"
#: datacenterlight/templates/datacenterlight/pricing.html:171 #: templates/datacenterlight/new-order.html:184
#: templates/datacenterlight/order.html:184
#: templates/datacenterlight/pricing.html:171
msgid "" msgid ""
"Our VMs are hosted in Glarus, Switzerland, and our website is currently " "Our VMs are hosted in Glarus, Switzerland, and our website is currently "
"running in BETA mode. If you want more information that you did not find on " "running in BETA mode. If you want more information that you did not find on "
@ -251,6 +337,19 @@ msgstr ""
"uns unter support@datacenterlight.ch. Unser Team wird sich umgehend um dein " "uns unter support@datacenterlight.ch. Unser Team wird sich umgehend um dein "
"Anliegen kümmern!" "Anliegen kümmern!"
#: templates/datacenterlight/success.html:101
msgid "Thank you for order! Our team will contact you via email"
msgstr ""
"Vielen Dank für die Bestellung. Unser Team setzt sich sobald wie möglich mit "
"Ihnen via E-Mail in Verbindung."
#: templates/datacenterlight/success.html:103
msgid "as soon as possible!"
msgstr ""
#~ msgid "Request Newsletter"
#~ msgstr "Newsletter abonnieren"
#~ msgid "How it works" #~ msgid "How it works"
#~ msgstr "Wie es funktioniert" #~ msgstr "Wie es funktioniert"
@ -266,18 +365,9 @@ msgstr ""
#~ "davon nichts mitbekommen, falls doch melden Sie sich bitte via " #~ "davon nichts mitbekommen, falls doch melden Sie sich bitte via "
#~ "support@datacenterlight.ch" #~ "support@datacenterlight.ch"
#~ msgid "Request Beta Access"
#~ msgstr "Beantrage Beta-Zugang"
#~ msgid "Thank you, we will contact you as soon as possible"
#~ msgstr "Vielen Dank, wir werden Sie sobald als möglich kontaktieren."
#~ msgid "Buy Now!" #~ msgid "Buy Now!"
#~ msgstr "Kaufe jetzt!" #~ msgstr "Kaufe jetzt!"
#~ msgid "I want to try!"
#~ msgstr "Das möchte ich haben"
#~ msgid "Email address" #~ msgid "Email address"
#~ msgstr "E-Mail Adresse" #~ msgstr "E-Mail Adresse"

View file

@ -4,20 +4,16 @@
* For details, see http://www.apache.org/licenses/LICENSE-2.0. * For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/ */
@font-face { @font-face {
font-family: 'Montserrat-Regular'; font-family: 'Lato-Regular';
src: url('../fonts/Montserrat/Montserrat-Regular.ttf'); src: url('../fonts/Lato/Lato-Regular.ttf');
} }
@font-face { @font-face {
font-family: 'Montserrat-Bold'; font-family: 'Lato-Black';
src: url('../fonts/Montserrat/Montserrat-Bold.ttf'); src: url('../fonts/Lato/Lato-Black.ttf');
} }
@font-face { @font-face {
font-family: 'Montserrat-Medium'; font-family: 'Lato-Light';
src: url('../fonts/Montserrat/Montserrat-Medium.ttf'); src: url('../fonts/Lato/Lato-Light.ttf');
}
@font-face {
font-family: 'Montserrat-Light';
src: url('../fonts/Montserrat/Montserrat-Light.ttf');
} }
body, body,
html { html {
@ -32,8 +28,8 @@ h3,
h4, h4,
h5, h5,
h6 { h6 {
font-family: 'Montserrat-Regular', sans-serif; font-family: 'Lato-Regular', sans-serif;
font-weight: 700; font-weight: 300;
} }
/*blue light #5A74AF*/ /*blue light #5A74AF*/
/*blue dark #29427A*/ /*blue dark #29427A*/
@ -128,6 +124,10 @@ h6 {
.navbar-transparent .navbar-nav>li>a:hover { .navbar-transparent .navbar-nav>li>a:hover {
color: #fff; color: #fff;
} }
.navbar-transparent .navbar-nav>li>a:focus, .navbar-transparent .navbar-nav>li>a:hover {
color: #fff;
background-color: transparent;
}
.navbar-default .btn-link { .navbar-default .btn-link {
box-shadow: none; box-shadow: none;
} }
@ -263,7 +263,7 @@ h6 {
margin: 0; margin: 0;
font-weight: 400; font-weight: 400;
font-size: 6em; font-size: 6em;
font-family: 'Montserrat-Medium'; font-family: 'Lato-Black';
} }
.intro-divider { .intro-divider {
@ -274,7 +274,7 @@ h6 {
.intro-message > h3 { .intro-message > h3 {
font-weight: 300; font-weight: 300;
font-family: 'Montserrat-Light'; font-family: 'Lato-Light';
} }
.intro-pricing{ .intro-pricing{
@ -289,6 +289,10 @@ h6 {
align-items: center; align-items: center;
position: relative; position: relative;
} }
.intro-pricing.success-pricing{
height: 100vh;
max-height: 100vh;
}
.intro-pricing::before{ .intro-pricing::before{
content: ""; content: "";
position: absolute; position: absolute;
@ -296,7 +300,7 @@ h6 {
bottom: 0; bottom: 0;
left: 0; left: 0;
right: 0; right: 0;
background: rgba(90, 116, 175, 0.8); background: rgba(90, 116, 175, 0.7);
} }
.intro-pricing .intro-message .section-heading{ .intro-pricing .intro-message .section-heading{
font-size: 45px; font-size: 45px;
@ -327,7 +331,7 @@ h6 {
margin-bottom: 25px; margin-bottom: 25px;
} }
.split-section .split-text .split-title h2{ .split-section .split-text .split-title h2{
font-family: 'Montserrat-Bold'; font-family: 'Lato-Black';
font-size: 50px; font-size: 50px;
line-height: 50px; line-height: 50px;
padding-bottom: 25px; padding-bottom: 25px;
@ -382,6 +386,20 @@ h6 {
width: 70px; width: 70px;
left: 0; left: 0;
} }
.split-section.what .icon-section{
position: relative;
min-height: 500px;
}
.split-section.what .split-text .lead {
font-size: 18px;
color: #3a3a3a;
margin-bottom: 0;
line-height: 25px;
}
.split-section.what .fa-li.fa-lg{
font-size: 17px;
}
.pricing-section{ .pricing-section{
padding: 80px 0 !important; padding: 80px 0 !important;
background: -webkit-linear-gradient(top, #f0f4f7, #fff) no-repeat; background: -webkit-linear-gradient(top, #f0f4f7, #fff) no-repeat;
@ -405,10 +423,10 @@ h6 {
} }
.pricing-section .card .title{ .pricing-section .card .title{
padding: 15px 40px; padding: 15px 40px;
font-family: 'Montserrat-Medium'; font-family: 'Lato-Black';
} }
.pricing-section .card .title h3{ .pricing-section .card .title h3{
font-family: 'Montserrat-Medium'; font-family: 'Lato-Black';
} }
.pricing-section .card .price{ .pricing-section .card .price{
background: #5A74AF; background: #5A74AF;
@ -433,7 +451,7 @@ h6 {
text-align: left; text-align: left;
} }
.pricing-section .text .section-heading{ .pricing-section .text .section-heading{
font-family: 'Montserrat-Bold'; font-family: 'Lato-Black';
font-size: 50px; font-size: 50px;
line-height: 50px; line-height: 50px;
padding-bottom: 25px; padding-bottom: 25px;
@ -460,7 +478,7 @@ h6 {
padding: 70px 0; padding: 70px 0;
} }
.request-section .title h2{ .request-section .title h2{
font-family: 'Montserrat-Bold'; font-family: 'Lato-Black';
font-size: 45px; font-size: 45px;
margin: 0; margin: 0;
color: #fff; color: #fff;
@ -536,7 +554,7 @@ h6 {
.contact-section .card .subtitle h3{ .contact-section .card .subtitle h3{
font-size: 30px; font-size: 30px;
margin-bottom: 23px; margin-bottom: 23px;
font-family: 'Montserrat-Medium'; font-family: 'Lato-Black';
} }
.contact-section .card .social a:hover{ .contact-section .card .social a:hover{
text-decoration: none; text-decoration: none;
@ -547,7 +565,7 @@ h6 {
max-width: 468px; max-width: 468px;
} }
.contact-section .title h2{ .contact-section .title h2{
font-family: 'Montserrat-Bold'; font-family: 'Lato-Black';
font-size: 65px; font-size: 65px;
margin: 0; margin: 0;
color: #fff; color: #fff;
@ -577,9 +595,15 @@ h6 {
width: 50%; width: 50%;
} }
.price-calc-section .text .section-heading{ .price-calc-section .text .section-heading{
font-family: 'Montserrat-Bold'; <<<<<<< HEAD
font-family: 'Lato-Black';
font-size: 48px; font-size: 48px;
line-height: 48px; line-height: 48px;
=======
font-family: 'Montserrat-Bold';
font-size: 50px;
line-height: 50px;
>>>>>>> master
padding-bottom: 25px; padding-bottom: 25px;
color: #3a3a3a; color: #3a3a3a;
letter-spacing: 1px; letter-spacing: 1px;
@ -620,10 +644,10 @@ h6 {
} }
.price-calc-section .card .title{ .price-calc-section .card .title{
padding: 15px 40px; padding: 15px 40px;
font-family: 'Montserrat-Medium'; font-family: 'Lato-Black';
} }
.price-calc-section .card .title h3{ .price-calc-section .card .title h3{
font-family: 'Montserrat-Medium'; font-family: 'Lato-Black';
} }
.price-calc-section .card .price{ .price-calc-section .card .price{
background: #5A74AF; background: #5A74AF;
@ -636,24 +660,26 @@ h6 {
border-bottom: 1px solid rgba(128, 128, 128, 0.3); border-bottom: 1px solid rgba(128, 128, 128, 0.3);
position: relative; position: relative;
display: flex; display: flex;
justify-content: center; justify-content: space-around;
align-items: center; align-items: center;
} }
.price-calc-section .card .description span{ .price-calc-section .card .description span {
font-size: 20px; <<<<<<< HEAD
font-size: 18px;
=======
font-size: 16px;
>>>>>>> master
margin-left: 4px; margin-left: 4px;
margin-left: 0px;
/* justify-self: start; */
width: 30%;
text-align: left;
} }
.price-calc-section .card .description input{ .price-calc-section .card .description input{
font-size: 20px; font-size: 20px;
text-align: center; text-align: center;
width: 70px; width: 60px;
}
.price-calc-section .card .description #coreValue{
width: 50px;
}
.price-calc-section .card .description #ramValue{
width: 50px;
} }
.price-calc-section .card .description i{ .price-calc-section .card .description i{
color: #29427A; color: #29427A;
@ -684,12 +710,40 @@ h6 {
height: 40px; height: 40px;
width: 200px; width: 200px;
text-align: center; text-align: center;
font-size: 18px; font-size: 16px;
margin-left: 10px;
} }
.price-calc-section .card .check-ip{ .price-calc-section .card .check-ip{
font-size: 18px; font-size: 18px;
} }
.price-calc-section .card .description.input{
justify-content: center;
}
.price-calc-section .card .description.input label{
font-size: 15px;
font-weight: 800;
<<<<<<< HEAD
font-family: 'Lato-Regular';
=======
font-family: 'Montserrat-Regular';
>>>>>>> master
margin-bottom: 0;
width: 40px;
}
.price-calc-section .card .description.input input{
width: 200px;
font-size: 14px;
text-align: left;
padding: 5px 10px;
border-radius: 4px;
border: 1px solid #d0d0d0;
background: #fff;
margin-left: 10px;
}
<<<<<<< HEAD
=======
>>>>>>> master
.price-calc-section .card .check-ip input[type=checkbox]{ .price-calc-section .card .check-ip input[type=checkbox]{
font-size: 17px; font-size: 17px;
margin: 0 8px; margin: 0 8px;
@ -771,9 +825,38 @@ h6 {
border: 1px solid rgba(119, 119, 119, 0.4); border: 1px solid rgba(119, 119, 119, 0.4);
box-shadow: none; box-shadow: none;
} }
.navbar-default .nav-language .drop-language {
background: #fff;
/* border: 1px solid #fff; */
z-index: 100000;
left: 9px;
border: 1px solid rgba(119, 119, 119, 0.4);
box-shadow: none;
}
.navbar-default .nav-language .select-language {
color: #777;
}
.navbar-default .nav-language .drop-language a {
color: #777;
}
.navbar-transparent .navbar-nav>li>a:focus, .navbar-transparent .navbar-nav>li>a:hover {
color: #333;
background-color: transparent;
}
.navbar-default .navbar-nav>li>a:focus, .navbar-default .navbar-nav>li>a:hover {
color: #333;
background-color: transparent;
}
.split-section { .split-section {
padding: 10px 0; padding: 10px 0;
} }
.split-section .icon-section {
min-height: 160px;
}
.split-section.what .icon-section{
min-height: 160px;
}
.split-section .icon-section i{ .split-section .icon-section i{
font-size: 120px; font-size: 120px;
} }
@ -813,6 +896,14 @@ h6 {
left: 50%; left: 50%;
transform: translate(-50%, 0); transform: translate(-50%, 0);
} }
.contact-section .card .social a {
color: #29427A;
font-size: 30px;
}
.intro-pricing .intro-message .section-heading {
font-size: 30px;
}
.price-calc-section{ .price-calc-section{
flex-direction: column; flex-direction: column;
@ -828,7 +919,7 @@ h6 {
margin-top: 20px; margin-top: 20px;
} }
.price-calc-section .text .section-heading { .price-calc-section .text .section-heading {
font-family: 'Montserrat-Bold'; font-family: 'Lato-Black';
font-size: 35px; font-size: 35px;
line-height: 35px; line-height: 35px;
padding-bottom: 15px; padding-bottom: 15px;
@ -842,6 +933,13 @@ h6 {
font-size: 18px; font-size: 18px;
text-align: center; text-align: center;
} }
.price-calc-section .card .description input {
font-size: 17px;
text-align: center;
width: 60px;
}
} }
@media(max-width:540px) { @media(max-width:540px) {
@ -858,13 +956,13 @@ h6 {
.intro-message > h1 { .intro-message > h1 {
font-size: 2em; font-size: 2em;
} }
.price-calc-section .text .section-heading { .price-calc-section .text .section-heading {
font-size: 24px; font-size: 24px;
line-height: 25px; line-height: 25px;
} }
.price-calc-section .card .description span { .price-calc-section .card .description span {
font-size: 17px; font-size: 15px;
margin-left: 4px; margin-left: 0px;
} }
} }
@ -887,7 +985,7 @@ h6 {
.section-heading { .section-heading {
margin-bottom: 30px; margin-bottom: 30px;
font-family: 'Montserrat-Medium'; font-family: 'Lato-Black';
} }
.section-heading-spacer { .section-heading-spacer {
@ -960,3 +1058,7 @@ a#forgotpassword {
.form-300{ .form-300{
width: 300px; width: 300px;
} }
.error-message-box{
margin-top: 20px;
}

View file

@ -0,0 +1,92 @@
Copyright (c) 2010-2014 by tyPoland Lukasz Dziedzic (team@latofonts.com) with Reserved Font Name "Lato"
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View file

@ -74,7 +74,8 @@
function _initNavUrl(){ function _initNavUrl(){
$('.url').click(function(){ $('.url').click(function(){
var href = $(this).attr('data-url'); var href = $(this).attr('data-url');
console.log(href); $('.navbar-collapse').removeClass('in');
$('.navbar-collapse').addClass('collapsing');
$('html, body').animate({ $('html, body').animate({
scrollTop: $(href).offset().top scrollTop: $(href).offset().top
}, 1000); }, 1000);
@ -121,8 +122,7 @@
} }
function _calcPricing(){ function _calcPricing(){
var total = (cardPricing['cpu'].value * 5) + (2* cardPricing['ram'].value) + (0.6* cardPricing['storage'].value) var total = (cardPricing['cpu'].value * 5) + (2* cardPricing['ram'].value) + (0.6* cardPricing['storage'].value);
console.log(total);
total = parseFloat(total.toFixed(2)); total = parseFloat(total.toFixed(2));
$("#total").text(total); $("#total").text(total);

View file

@ -0,0 +1,43 @@
{% load staticfiles i18n%}
{% get_current_language as LANGUAGE_CODE %}
<!DOCTYPE html>
<html lang="{{LANGUAGE_CODE}}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Data Center Light by ungleich">
<meta name="author" content="ungleich GmbH">
<title>Data Center Light -
{% block title %}VM hosting made in Switzerland{% endblock %}</title>
<!-- Bootstrap Core CSS -->
<link href="{% static 'datacenterlight/css/bootstrap.min.css' %}" rel="stylesheet">
<!-- Custom Fonts -->
<!--Import Google Icon Font-->
<link href="//fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="{% static 'datacenterlight/font-awesome/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="{% static 'datacenterlight/img/favicon.ico' %}" type="image/x-icon" />
<link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/bootstrap-select.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="{% static 'datacenterlight/css/landing-page.css' %}" rel="stylesheet">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>

View file

@ -18,7 +18,7 @@
<span style="color: white">{{ form.email.errors|striptags}}</span> <span style="color: white">{{ form.email.errors|striptags}}</span>
</div> </div>
</div> </div>
<button type="submit" class="btn btn-default btn-transparent btn-lg">{% trans "Request Newsletter" %}</button> <button type="submit" class="btn btn-default btn-transparent btn-lg">{% trans "Request Beta Access" %}</button>
</form> </form>
<script> <script>
$('#beta_access').ajaxForm({ $('#beta_access').ajaxForm({

View file

@ -0,0 +1,137 @@
{% 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">
We have received a new order.
</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>
<h4>User details</h4>
Name: {{name}} <br/>
Email: {{email}} <br/>
<h4>VM details</h4>
Cores: {{cores}} <br/>
Memory: {{memory}} <br/>
Storage: {{storage}} <br/>
Price: {{price}} <br/>
Template: {{template}} <br/>
</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">&nbsp;</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>

View file

@ -0,0 +1,137 @@
{% 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">
We have received a new order.
</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>
<h4>User details</h4>
Name: {{name}} <br/>
Email: {{email}} <br/>
<h4>VM details</h4>
Cores: {{cores}} <br/>
Memory: {{memory}} <br/>
Storage: {{storage}} <br/>
Price: {{price}} <br/>
Template: {{template}} <br/>
</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">&nbsp;</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>

View file

@ -147,7 +147,7 @@
<!-- /.intro-header --> <!-- /.intro-header -->
<!-- Page Content --> <!-- Page Content -->
<div class="split-section right" id="how"> <div class="split-section right what" id="how">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
@ -161,13 +161,35 @@
</div> </div>
<div class="split-description"> <div class="split-description">
<ul class="fa-ul"> <ul class="fa-ul">
<li><i class="fa-li fa fa-check-square-o fa-lg"></i> <li>
<p class="lead">{% trans "Reuse existing factory halls intead of building an expensive building." %}</p> <i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Reuses existing factory halls instead of building a new expensive building." %}
</p>
</li> </li>
<li><i class="fa-li fa fa-check-square-o fa-lg"></i> <li>
<p class="lead">{% trans "Being creative, using modern and alternative design for a datacenter." %}</p></li> <i class="fa-li fa fa-check-square-o fa-lg"></i>
<li><i class="fa-li fa fa-check-square-o fa-lg"></i> <p class="lead">{% trans "Only wants you to pay for what you actually need." %}</p>
<p class="lead">{% trans "Being open: Using FOSS exclusively, we can save money for licenses." %}</p></li> </li>
<li>
<i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Is creative, using a modern and alternative design for a data center in order to make it more sustainable and affordable at the same time." %}</p>
</li>
<li>
<i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Cuts down the costs for you by using FOSS (Free Open Source Software) exclusively, wherefore we can save money from paying licenses." %}</p>
</li>
<li>
<i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Is located in Glarus, Switzerland where your data is under strict privacy." %}</p>
</li>
<li>
<i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Has qualified workers on site who take care of the hardware." %}</p>
</li>
<li>
<i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Renounces active cooling by taking an advantage of the isolation of our tight factory walls." %}</p>
</li>
</ul> </ul>
</div> </div>
@ -235,6 +257,7 @@
<div class="col-xs-12 col-md-6 text"> <div class="col-xs-12 col-md-6 text">
<h2 class="section-heading">{% trans "We are cutting down the costs significantly!" %}</h2> <h2 class="section-heading">{% trans "We are cutting down the costs significantly!" %}</h2>
<p class="lead">{% trans "Affordable VM hosting based in Switzerland" %}</p> <p class="lead">{% trans "Affordable VM hosting based in Switzerland" %}</p>
<a href="#" class="btn btn-info btn-lg">{% trans "More Info" %}</a>
</div> </div>
<div class="col-xs-12 col-md-6 hero-feature"> <div class="col-xs-12 col-md-6 hero-feature">
@ -260,7 +283,7 @@
<p>{% trans "10 GB Storage (SSD)" %}</p> <p>{% trans "10 GB Storage (SSD)" %}</p>
</div> </div>
</div> </div>
<a href="{% url 'datacenterlight:pricing' %}" class="btn btn-primary">{% trans "Order Now!" %}</a> <a href="{% url 'datacenterlight:order' %}" class="btn btn-primary">{% trans "Order Now!" %}</a>
</div> </div>
<img class="img-beta" src="{% static 'datacenterlight/img/beta-img.png' %}" alt=""> <img class="img-beta" src="{% static 'datacenterlight/img/beta-img.png' %}" alt="">
</div> </div>
@ -276,7 +299,7 @@
<div class="row"> <div class="row">
<div class="col-sm-6 col-md-6"> <div class="col-sm-6 col-md-6">
<div class="title"> <div class="title">
<h2>{% trans "Want to know more? Subscribe to our newsletter!" %}</h2> <h2>{% trans "I want to have it!" %}</h2>
</div> </div>
</div> </div>
<div class="col-sm-6 col-md-6"> <div class="col-sm-6 col-md-6">

View file

@ -1,42 +1,11 @@
<!DOCTYPE html> {% extends "datacenterlight/base.html" %}
<html lang="en"> {% load staticfiles i18n %}
<head> {% block body %}
<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="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/landing-page.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href='http://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
<link href="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="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]-->
</head>
<body>
<!-- Navigation --> <!-- Navigation -->
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation"> <nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
<div class="container topnav"> <div class="topnav">
<!-- Brand and toggle get grouped for better mobile display --> <!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header"> <div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
@ -45,109 +14,142 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<a class="navbar-brand topnav" href="#"><img src="img/logo_black.svg"></a> <a id="logoBlack" class="navbar-brand topnav url" href="{% url 'datacenterlight:index' %}" ><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a>
<a id="logoWhite" class="navbar-brand topnav url" href="{% url 'datacenterlight:index' %}" ><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a>
</div> </div>
<!-- Collect the nav links, forms, and other content for toggling --> <!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
<li> <!-- <li>
<a href="#how">How it works</a> <a class="url" href="javascript:void(0)" data-url="#how" >{% trans "What is it" %}</a>
</li> </li>
<li> <li>
<a href="#your">Your infrastructure</a> <a class="url" href="javascript:void(0)" data-url="#your" >{% trans "Scale out" %}</a>
</li> </li>
<li> <li>
<a href="#our">Our inftrastructure</a> <a class="url" href="javascript:void(0)" data-url="#our">{% trans "Reliable and light" %}</a>
</li> </li>
<li> <li>
<a href="#price">Pricing</a> <a class="url" href="javascript:void(0)" data-url="#price" >{% trans "Buy VM" %}</a>
</li> </li>
<li> <li>
<a href="#contact">Contact</a> <a class="url" href="javascript:void(0)" data-url="#contact" >{% trans "Contact" %}</a>
</li> -->
<li class="nav-language">
<div class="select-language">
{% if LANGUAGE_CODE == 'en-us'%}
<span>English</span>
{% else %}
<span>Deutsch</span>
{% endif %}
<i class="fa fa-globe" aria-hidden="true"></i>
</div>
<div class="drop-language">
{% if LANGUAGE_CODE == 'en-us'%}
<a class="url" href="{{base_url}}/de/datacenterlight/order" >Deutsch</a>
{% else %}
<a class="url" href="{{base_url}}/en-us/datacenterlight/order" >English</a>
{% endif %}
</div>
</li> </li>
</ul> </ul>
</div> </div>
<!-- /.navbar-collapse --> <!-- /.navbar-collapse -->
</div> </div>
<!-- /.container --> <!-- /.container -->
</nav> </nav>
<div class="intro-pricing">
<div class="intro-message">
<h2 class="section-heading">{% trans "We are cutting down the costs significantly!" %}</h2>
</div>
<!-- Header --> </div>
<a name="about"></a>
<div class="intro-header"> <div class="price-calc-section">
<div class="container"> <div class="card">
<div class="col-md-4">&nbsp;</div><div class="col-md-4"> <img class="img-beta" src="{% static 'datacenterlight/img/beta-img.png' %}" alt="">
<div class="caption">
<div class="intro-message"> <form id="order_form" method="POST" action="">
<p><img class="responsive" src="img/Beta.png"></p> {% csrf_token %}
<h2>Order Now </h2>
<p>&nbsp;</p> <div class="title">
<!--Location button--> <h3>{% trans "VM hosting" %} </h3>
<div class="form-group">
<label for="button">Loation<br></label> &nbsp;
<div class="btn-group">
<button type="button" class="btn btn-default">Switzerland</button>
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="caret"></span>
<span class="sr-only">Location</span>
</button>
<ul class="dropdown-menu">
<li><a href="#">Germany</a></li>
<li><a href="#">Switzerland</a></li>
</ul>
</div>
<!--/Location button-->
<p>&nbsp;</p>
<!--Configuration button-->
<form>
<div class="form-group">
<label for="button">Configuration<br></label> &nbsp;
<div class="btn-group">
<button type="button" class="btn btn-default">Ruby On Rails on Debian 7</button>
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="caret"></span>
<span class="sr-only">Configuration</span>
</button>
<ul class="dropdown-menu">
<li><a href="#">Ruby On Rails on Debian 7</a></li>
<li><a href="#">Ubuntu 14.04</a></li>
<li><a href="#">Debian 7</a></li>
<li><a href="#">CentOS 7</a></li>
</ul>
</div>
<p>VM size sliders to be inserted</p>
<!--/Configuration button-->
<form>
<div class="form-group">
<label for="exampleInputEmail1"><br>
Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
</div>
<div class>
<p><a href="#" id="forgotpassword">
Forgot password?</a>
</p>
<p>&nbsp;</p>
</div>
<button type="submit" class="btn btn-default">Order</button>
</form></p>
<ul class="list-inline intro-social-buttons">
</ul></div>&nbsp;<div class="col-md-4"></div>
</div>
</div> </div>
</div> <div class="price">
<span id="total">15</span>
<span>CHF</span>
</div>
<div class="descriptions">
<div class="description">
<p>{% trans "Hosted in Switzerland" %}</p>
</div>
<div class="description">
<i class="fa fa-minus-circle left" data-minus="cpu" aria-hidden="true"></i>
<input class="input-price" type="number" min="1" max="42" id="coreValue" name="cpu">
<span> Core</span>
<i class="fa fa-plus-circle right" data-plus="cpu" aria-hidden="true"></i>
</div>
<div class="description">
<i class="fa fa-minus-circle left" data-minus="ram" aria-hidden="true"></i>
<input id="ramValue" class="input-price" type="number" min="2" max="200" name="ram">
<span> GB RAM</span>
<i class="fa fa-plus-circle right" data-plus="ram" aria-hidden="true"></i>
</div>
<div class="description">
<i class="fa fa-minus-circle left" data-minus="storage" aria-hidden="true"></i>
<input id="storageValue" class="input-price" type="number" min="10" max="500" step="10" name="storage">
<span>{% trans "GB Storage (SSD)" %}</span>
<i class="fa fa-plus-circle right" data-plus="storage" aria-hidden="true"></i>
</div>
</div>
<!-- /.container -->
</div> <div class="description select-configuration input">
<!-- /.intro-header --> <label for="config">OS</label>
<select name="config" id="">
{% for template in templates %}
<option value="{{template.id}}">{{template.name}} </option>
{% endfor %}
</select>
</div>
<input type="hidden" name="total">
<!--<div class="description check-ip">
<input type="checkbox" name="ipv6"> Ipv6 Only<br>
</div>-->
<div class="description input">
<label for="name">Name</label>
<input type="text" name="name" placeholder="Your Name">
</div>
<div class="description input">
<label for="email">Email</label>
<input type="email" name="email" placeholder="Your Email">
</div>
</div>
<input type="submit" class="btn btn-primary" value="{% trans 'Order Now!' %}"></input>
</form>
</div>
<div>
<div id="error_message_box" class="error-message-box"></div>
</div>
</div>
<div class="text">
<h2 class="section-heading">{% trans "Simple and affordable: Try our virtual machine with featherlight price." %}</h2>
<div class="description">
<p>{% trans "Our VMs are hosted in Glarus, Switzerland, and our website is currently running in BETA mode. If you want more information that you did not find on our website, or if your order is more detailed, or if you encounter any technical hiccups, please contact us at support@datacenterlight.ch, our team will get in touch with you asap." %}</p>
</div>
</div>
</div>
<!-- /.banner -->
<!-- Footer --> <!-- Footer -->
<footer> <footer>
@ -156,38 +158,85 @@
<div class="col-lg-12"> <div class="col-lg-12">
<ul class="list-inline"> <ul class="list-inline">
<li> <li>
<a href="#">Home</a> <a href="#">{% trans "Home" %}</a>
</li> </li>
<li class="footer-menu-divider">&sdot;</li> <li class="footer-menu-divider">&sdot;</li>
<li> <li>
<a href="#about">How it works</a></li> <a href="#about">{% trans "What is it" %}</a></li>
<li class="footer-menu-divider">&sdot;</li> <li class="footer-menu-divider">&sdot;</li>
<li> <li>
<a href="#about">Your infrastructure</a></li> <a href="#about">{% trans "Scale out" %}</a></li>
<li>&sdot;</li> <li>&sdot;</li>
<li> <li>
<a href="#about">Our infrastructure</a></li> <a href="#about">{% trans "Reliable and light" %}</a></li>
<li class="footer-menu-divider">&sdot;</li> <li class="footer-menu-divider">&sdot;</li>
<li> <li>
<a href="#services">Pricing</a> <a href="#services">{% trans "Pricing" %}</a>
</li> </li>
<li class="footer-menu-divider">&sdot;</li> <li class="footer-menu-divider">&sdot;</li>
<li> <li>
<a href="#contact">Contact</a> <a href="#contact">{% trans "Contact" %}</a>
</li> </li>
</ul> </ul>
<p class="copyright text-muted small">Copyright &copy; ungleich GmbH 2015. All Rights Reserved</p> <p class="copyright text-muted small">Copyright &copy; ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
</div> </div>
</div> </div>
</div> </div>
</footer> </footer>
<!-- jQuery --> <!-- jQuery -->
<script src="js/jquery.js"></script> <script src="{% static 'datacenterlight/js/jquery.js' %}"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/bootstrap-select.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.validator.setDefaults({
ignore: []
});
$('#order_form').validate({
wrapper: 'div',
errorLabelContainer: "#error_message_box",
rules: {
name: {
required: true,
minlength: 3
},
email: {
required: true,
email: true
}
},
messages: {
name: "Please enter your name",
email: "Please enter a valid email address"
},
submitHandler: function (form) {
return true;
}
});
});
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>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/bootstrap-select.js"></script>
<!-- Bootstrap Core JavaScript --> <!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script> <script src="{% static 'datacenterlight/js/bootstrap.min.js' %}"></script>
<script src="{% static 'datacenterlight/js/main.js' %}"></script>
</body> {% endblock %}
</html> </html>

View file

@ -1,7 +1,7 @@
{% load staticfiles i18n%} {% load staticfiles i18n%}
{% get_current_language as LANGUAGE_CODE %} {% get_current_language as LANGUAGE_CODE %}
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="{{LANGUAGE_CODE}}">
<head> <head>
@ -144,9 +144,11 @@
<span>{% trans "GB Storage (SSD)" %}</span> <span>{% trans "GB Storage (SSD)" %}</span>
<i class="fa fa-plus-circle right" data-plus="storage" aria-hidden="true"></i> <i class="fa fa-plus-circle right" data-plus="storage" aria-hidden="true"></i>
</div> </div>
<div class="description select-configuration">
<div class="description select-configuration input">
<label for="name">OS</label>
<select name="config" id=""> <select name="config" id="">
{% for template in templates %} {% for template in templates %}
<option value="{{template.id}}">{{template.name}} </option> <option value="{{template.id}}">{{template.name}} </option>
@ -154,6 +156,16 @@
</select> </select>
</div> </div>
<input type="hidden" name="total"> <input type="hidden" name="total">
<div class="description input">
<label for="name">Name</label>
<input type="text" name="name" placeholder="Your Name">
</div>
<div class="description input">
<label for="email">Email</label>
<input type="email" name="email" placeholder="Your Email">
</div>
<!--<div class="description check-ip"> <!--<div class="description check-ip">
<input type="checkbox" name="ipv6"> Ipv6 Only<br> <input type="checkbox" name="ipv6"> Ipv6 Only<br>
</div>--> </div>-->

View file

@ -0,0 +1,95 @@
{% extends "datacenterlight/base.html" %}
{% load staticfiles i18n %}
{% block body %}
<!-- Navigation -->
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
<div class="topnav">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a id="logoBlack" class="navbar-brand topnav url" href="{% url 'datacenterlight:index' %}" ><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a>
<a id="logoWhite" class="navbar-brand topnav url" href="{% url 'datacenterlight:index' %}" ><img src="{% static 'datacenterlight/img/logo_white.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 class="url" href="javascript:void(0)" data-url="#how" >{% trans "What is it" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#your" >{% trans "Scale out" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#our">{% trans "Reliable and light" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#price" >{% trans "Buy VM" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#contact" >{% trans "Contact" %}</a>
</li> -->
<select class="selectpicker" data-width="fit" onchange="location = this.value;" style="margin-top:10px;">
{% if LANGUAGE_CODE == 'en-us'%}
<option selected="selected" value="{{base_url}}/en-us/datacenterlight/order-success/">English</option>
{% else %}
<option value="{{base_url}}/en-us/datacenterlight/order-success/">English</option>
{% endif %}
{% if LANGUAGE_CODE == 'de'%}
<option selected="selected" value="{{base_url}}/de/datacenterlight/order-success/">Deutsch</option>
{% else %}
<option value="{{base_url}}/de/datacenterlight/order-success/">Deutsch</option>
{% endif %}
</select>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<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 src="{% static 'datacenterlight/js/jquery.js' %}"></script>
<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>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/bootstrap-select.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="{% static 'datacenterlight/js/bootstrap.min.js' %}"></script>
<script src="{% static 'datacenterlight/js/main.js' %}"></script>
{% endblock %}
</html>

View file

@ -1,6 +1,6 @@
from django.conf.urls import url from django.conf.urls import url
from .views import IndexView, BetaProgramView, LandingProgramView, BetaAccessView, PricingView from .views import IndexView, BetaProgramView, LandingProgramView, BetaAccessView, PricingView, SuccessView, OrderView
urlpatterns = [ urlpatterns = [
@ -8,5 +8,7 @@ urlpatterns = [
url(r'^/beta-program/?$', BetaProgramView.as_view(), name='beta'), 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'^/pricing/?$', PricingView.as_view(), name='pricing'), url(r'^/pricing/?$', PricingView.as_view(), name='pricing'),
url(r'^/order/?$', OrderView.as_view(), name='order'),
url(r'^/order-success/?$', SuccessView.as_view(), name='order_success'),
url(r'^/beta_access?$', BetaAccessView.as_view(), name='beta_access'), url(r'^/beta_access?$', BetaAccessView.as_view(), name='beta_access'),
] ]

View file

@ -7,6 +7,8 @@ from django.core.urlresolvers import reverse_lazy, reverse
from utils.mailer import BaseEmail from utils.mailer import BaseEmail
from django.shortcuts import render from django.shortcuts import render
from django.shortcuts import redirect from django.shortcuts import redirect
from django import forms
from django.core.exceptions import ValidationError
from opennebula_api.models import OpenNebulaManager from opennebula_api.models import OpenNebulaManager
from opennebula_api.serializers import VirtualMachineTemplateSerializer from opennebula_api.serializers import VirtualMachineTemplateSerializer
@ -14,6 +16,9 @@ from opennebula_api.serializers import VirtualMachineTemplateSerializer
class LandingProgramView(TemplateView): class LandingProgramView(TemplateView):
template_name = "datacenterlight/landing.html" template_name = "datacenterlight/landing.html"
class SuccessView(TemplateView):
template_name = "datacenterlight/success.html"
class PricingView(TemplateView): class PricingView(TemplateView):
template_name = "datacenterlight/pricing.html" template_name = "datacenterlight/pricing.html"
@ -27,8 +32,8 @@ class PricingView(TemplateView):
} }
except: except:
messages.error( request, messages.error( request,
'We could not load the VM templates due to a backend connection \ 'We have a temporary problem to connect to our backend. \
error. Please try again in a few minutes' Please try again in a few minutes'
) )
context = { context = {
'error' : 'connection' 'error' : 'connection'
@ -64,9 +69,84 @@ class PricingView(TemplateView):
return redirect(reverse('hosting:payment')) return redirect(reverse('hosting:payment'))
class OrderView(TemplateView):
template_name = "datacenterlight/order.html"
def get(self, request, *args, **kwargs):
try:
manager = OpenNebulaManager()
templates = manager.get_templates()
context = {
'templates': VirtualMachineTemplateSerializer(templates, many=True).data,
}
except:
messages.error( request,
'We have a temporary problem to connect to our backend. \
Please try again in a few minutes'
)
context = {
'error' : 'connection'
}
return render(request, self.template_name, context)
def post(self, request):
cores = request.POST.get('cpu')
memory = request.POST.get('ram')
storage = request.POST.get('storage')
price = request.POST.get('total')
template_id = int(request.POST.get('config'))
manager = OpenNebulaManager()
template = manager.get_template(template_id)
template_data = VirtualMachineTemplateSerializer(template).data
name = request.POST.get('name')
email = request.POST.get('email')
name_field = forms.CharField()
email_field = forms.EmailField()
try:
name = name_field.clean(name)
except ValidationError as err:
messages.add_message(self.request, messages.ERROR, '%(value) is not a proper name.'.format(name))
return HttpResponseRedirect(reverse('datacenterlight:order'))
try:
email = email_field.clean(email)
except ValidationError as err:
messages.add_message(self.request, messages.ERROR, '%(value) is not a proper email.'.format(email))
return HttpResponseRedirect(reverse('datacenterlight:order'))
# We have valid email and name of the customer, hence send an
# email to the admin
context = {
'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host()),
'name': name,
'email': email,
'cores': cores,
'memory': memory,
'storage': storage,
'price': price,
'template': template_data['name'],
}
email_data = {
'subject': 'New Order Received',
'to': 'info@ungleich.ch',
'context': context,
'template_name': 'new_order_notification',
'template_path': 'datacenterlight/emails/'
}
email = BaseEmail(**email_data)
email.send()
return HttpResponseRedirect(reverse('datacenterlight:order_success'))
class BetaAccessView(FormView): class BetaAccessView(FormView):
template_name = "datacenterlight/beta_access.html" template_name = "datacenterlight/beta_access.html"
form_class = BetaAccessForm form_class = BetaAccessForm
success_message = "Thank you, we will contact you as soon as possible" success_message = "Thank you, we will contact you as soon as possible"
def form_valid(self, form): def form_valid(self, form):
@ -151,43 +231,6 @@ class BetaProgramView(CreateView):
messages.add_message(self.request, messages.SUCCESS, self.success_message) messages.add_message(self.request, messages.SUCCESS, self.success_message)
return HttpResponseRedirect(self.get_success_url()) return HttpResponseRedirect(self.get_success_url())
# return super(BetaProgramView, self).form_valid(form)
# def form_valid(self, form):
# context = {
# 'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host())
# }
# email_data = {
# 'subject': 'DatacenterLight Beta Access Request',
# 'to': form.cleaned_data.get('email'),
# 'context': context,
# 'template_name': 'request_access_confirmation',
# 'template_path': 'datacenterlight/emails/'
# }
# email = BaseEmail(**email_data)
# email.send()
# context.update({
# 'email': form.cleaned_data.get('email')
# })
# email_data = {
# 'subject': 'DatacenterLight Beta Access Request',
# 'to': 'info@ungleich.ch',
# 'context': context,
# 'template_name': 'request_access_notification',
# 'template_path': 'datacenterlight/emails/'
# }
# email = BaseEmail(**email_data)
# email.send()
# messages.add_message(self.request, messages.SUCCESS, self.success_message)
# return super(IndexView, self).form_valid(form)
class IndexView(CreateView): class IndexView(CreateView):
@ -241,5 +284,3 @@ class IndexView(CreateView):
messages.add_message(self.request, messages.SUCCESS, self.success_message) messages.add_message(self.request, messages.SUCCESS, self.success_message)
return super(IndexView, self).form_valid(form) return super(IndexView, self).form_valid(form)

Binary file not shown.

BIN
dump.rdb

Binary file not shown.

View file

@ -1,423 +0,0 @@
"""
Copyright 2015 ungleich.
"""
# -*- coding: utf-8 -*-
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
from django.utils.translation import ugettext_lazy as _
# dotenv
import dotenv
gettext = lambda s: s
def env(env_name):
return os.environ.get(env_name)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_DIR = os.path.abspath(
os.path.join(os.path.dirname(__file__), "../.."),
)
# load .env file
dotenv.read_dotenv("{0}/.env".format(PROJECT_DIR))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/
SITE_ID = 1
APP_ROOT_ENDPOINT = "/"
LOGIN_URL = None
LOGOUT_URL = None
LOGIN_REDIRECT_URL = None
EMAIL_HOST = "localhost"
EMAIL_PORT = 25
SECRET_KEY = env('DJANGO_SECRET_KEY')
# Application definition
INSTALLED_APPS = (
'djangocms_admin_style',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'cms', # django CMS itself
'treebeard', # utilities for implementing a tree
'menus', # helper for model independent hierarchical website navigation
'sekizai', # for javascript and css management
# django-cms plugins
'djangocms_flash',
'djangocms_googlemap',
'djangocms_inherit',
'djangocms_link',
'djangocms_snippet',
'djangocms_teaser',
'djangocms_page_meta',
# django-filer
'cmsplugin_filer_file',
'cmsplugin_filer_folder',
'cmsplugin_filer_link',
'cmsplugin_filer_teaser',
'cmsplugin_filer_video',
# versioning
'reversion',
# ck-editor
'djangocms_text_ckeditor',
# djangocms-blog
'filer',
'easy_thumbnails',
'cmsplugin_filer_image',
'parler',
'taggit',
'taggit_autosuggest',
'django_select2',
'meta',
'meta_mixin',
# 'admin_enhancer',
'djangocms_blog',
'bootstrap3',
'compressor',
# ungleich
'ungleich',
'hosting',
'digitalglarus',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.locale.LocaleMiddleware',
# django-cms middlewares
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'cms.middleware.language.LanguageCookieMiddleware',
)
ROOT_URLCONF = 'dynamicweb.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'dynamicweb.wsgi.application'
# Deprecated since version 1.8.
# callables take a request object as their argument and return a dictionary of
# items to be merged into the context.
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages",
"django.core.context_processors.request",
'sekizai.context_processors.sekizai',
'cms.context_processors.cms_settings',
)
TEMPLATE_DIRS = (
os.path.join(PROJECT_DIR, 'templates'),
)
CMS_TEMPLATES_DIR = {
1: os.path.join(TEMPLATE_DIRS[0], 'cms/'),
}
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'app',
}
}
# Internationalization
# https://docs.djangoproject.com/en/1.7/topics/i18n/
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
LANGUAGES = (
('en-us', _('English')),
('de', _('Deutsch')),
)
LANGUAGE_CODE = 'en-us'
CMS_PLACEHOLDER_CONF = {
'logo_image': {
'name': 'Logo Image',
'plugins': ['FilerImagePlugin'],
'limits': {
'global': 1,
}
},
'page-title': {
'name': 'Page Title',
'plugins': ['TextPlugin'],
'default_plugins': [
{
'plugin_type': 'TextPlugin',
'values': {
'body': 'Page Title...'
}
}
],
'limits': {
'global': 1,
}
},
'page-subtitle': {
'name': 'Page Subtitle',
'inherit': 'page-title',
'default_plugins': [
{
'plugin_type': 'TextPlugin',
'values': {
'body': 'Page subtitle...'
}
}
],
},
'footer_copyright': {
'name': 'Copyright',
'inherit': 'page-title',
'default_plugins': [
{
'plugin_type': 'TextPlugin',
'values': {
'body': 'Copyright...'
}
}
],
},
'content': {
'name': _('Content'),
'default_plugins': [
{
'plugin_type': 'TextPlugin',
'values': {'body': '<p></p>'},
},
]
},
'post_content': {
'name': _('Content'),
'default_plugins': [
{
'plugin_type': 'TextPlugin',
'values': {'body': '<p></p>'},
},
]
},
}
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
'LOCATION': '127.0.0.1:11211',
}
}
if LOGIN_URL is None:
LOGIN_URL = APP_ROOT_ENDPOINT + 'accounts/login/'
if LOGOUT_URL is None:
LOGOUT_URL = APP_ROOT_ENDPOINT + 'accounts/logout/'
if LOGIN_REDIRECT_URL is None:
LOGIN_REDIRECT_URL = APP_ROOT_ENDPOINT
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.7/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
MEDIA_URL = APP_ROOT_ENDPOINT + 'media/'
FILE_UPLOAD_PERMISSIONS = 0o644
# Templates confs
TEMPLATE_DIRS = (
os.path.join(PROJECT_DIR, "templates"),
)
META_SITE_PROTOCOL = 'http'
META_USE_SITES = True
MIGRATION_MODULES = {
'cms': 'cms.migrations',
'filer': 'filer.migrations_django',
'menus': 'menus.migrations_django',
'djangocms_flash': 'djangocms_flash.migrations_django',
'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
'djangocms_inherit': 'djangocms_inherit.migrations_django',
'djangocms_link': 'djangocms_link.migrations_django',
'djangocms_snippet': 'djangocms_snippet.migrations_django',
'djangocms_teaser': 'djangocms_teaser.migrations_django',
'djangocms_column': 'djangocms_column.migrations_django',
'djangocms_flash': 'djangocms_flash.migrations_django',
'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
'djangocms_inherit': 'djangocms_inherit.migrations_django',
'djangocms_style': 'djangocms_style.migrations_django',
'cmsplugin_filer_image': 'cmsplugin_filer_image.migrations_django',
'cmsplugin_filer_file': 'cmsplugin_filer_file.migrations_django',
'cmsplugin_filer_folder': 'cmsplugin_filer_folder.migrations_django',
'cmsplugin_filer_link': 'cmsplugin_filer_link.migrations_django',
'cmsplugin_filer_teaser': 'cmsplugin_filer_teaser.migrations_django',
'cmsplugin_filer_utils': 'cmsplugin_filer_utils.migrations_django',
'cmsplugin_filer_video': 'cmsplugin_filer_video.migrations_django',
'djangocms_text_ckeditor': 'djangocms_text_ckeditor.migrations',
}
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
COMPRESS_PRECOMPILERS = (
('text/less', 'lesscpy {infile}'),
)
THUMBNAIL_PROCESSORS = (
'easy_thumbnails.processors.colorspace',
'easy_thumbnails.processors.autocrop',
'filer.thumbnail_processors.scale_and_crop_with_subject_location',
'easy_thumbnails.processors.filters',
)
# django-cms-text-ckeditor
TEXT_SAVE_IMAGE_FUNCTION = (
'cmsplugin_filer_image.integrations.ckeditor.create_image_plugin'
)
TEXT_ADDITIONAL_TAGS = ('iframe',)
TEXT_ADDITIONAL_ATTRIBUTES = ('scrolling', 'allowfullscreen', 'frameborder')
USE_X_FORWARDED_HOST = True
# Django Bootstrap - Settings
# Added Configuration for bootstrap static files to load over https.
BOOTSTRAP3 = {
# The URL to the jQuery JavaScript file
'jquery_url': '//code.jquery.com/jquery.min.js',
# The Bootstrap base URL
'base_url': '//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/',
# The complete URL to the Bootstrap CSS file
# (None means derive it from base_url)
'css_url': None,
# The complete URL to the Bootstrap CSS file (None means no theme)
'theme_url': None,
# The complete URL to the Bootstrap JavaScript file
# (None means derive it from base_url)
'javascript_url': None,
# Put JavaScript in the HEAD section of the HTML document
# (only relevant if you use bootstrap3.html)
'javascript_in_head': False,
# Include jQuery with Bootstrap JavaScript
# (affects django-bootstrap3 template tags)
'include_jquery': False,
# Label class to use in horizontal forms
'horizontal_label_class': 'col-md-3',
# Field class to use in horizontal forms
'horizontal_field_class': 'col-md-9',
# Set HTML required attribute on required fields
'set_required': True,
# Set HTML disabled attribute on disabled fields
'set_disabled': False,
# Set placeholder attributes to label if no placeholder is provided
'set_placeholder': True,
# Class to indicate required (better to set this in your Django form)
'required_css_class': '',
# Class to indicate error (better to set this in your Django form)
'error_css_class': 'has-error',
# Class to indicate success, meaning the field has valid input
# (better to set this in your Django form)
'success_css_class': 'has-success',
# Renderers (only set these if you have studied the source and understand
# the inner workings)
'formset_renderers': {
'default': 'bootstrap3.renderers.FormsetRenderer',
},
'form_renderers': {
'default': 'bootstrap3.renderers.FormRenderer',
},
'field_renderers': {
'default': 'bootstrap3.renderers.FieldRenderer',
'inline': 'bootstrap3.renderers.InlineFieldRenderer',
},
}
# djangocms_blog config
BLOG_ENABLE_COMMENTS = False
BLOG_USE_PLACEHOLDER = True
BLOG_IMAGE_THUMBNAIL_SIZE = {'size': '120x120', 'crop': True, 'upscale': False}
BLOG_IMAGE_FULL_SIZE = {'size': '640x120', 'crop': True, 'upscale': False}
BLOG_PAGINATION = 4
BLOG_LATEST_POSTS = BLOG_PAGINATION
BLOG_POSTS_LIST_TRUNCWORDS_COUNT = 100
BLOG_MULTISITE = True
BLOG_AUTHOR_DEFAULT = True
# django-meta
META_SITE_PROTOCOL = "https"
META_SITE_DOMAIN = "ungleich.ch"
META_SITE_TYPE = "website"
META_SITE_NAME = "ungleich"
META_INCLUDE_KEYWORDS = ["ungleich", "hosting", "switzerland",
"Schweiz", "Swiss", "cdist"]
META_USE_SITES = True
PARLER_LANGUAGES = {1: ({'code': 'en-us'}, {'code': 'de'}, )}

View file

@ -1,441 +0,0 @@
"""
Copyright 2015 ungleich.
"""
# -*- coding: utf-8 -*-
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
from django.utils.translation import ugettext_lazy as _
# dotenv
import dotenv
gettext = lambda s: s
def env(env_name):
return os.environ.get(env_name)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_DIR = os.path.abspath(
os.path.join(os.path.dirname(__file__), "../.."),
)
# load .env file
dotenv.read_dotenv("{0}/.env".format(PROJECT_DIR))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/
SITE_ID = 1
APP_ROOT_ENDPOINT = "/"
LOGIN_URL = None
LOGOUT_URL = None
LOGIN_REDIRECT_URL = None
EMAIL_HOST = "localhost"
EMAIL_PORT = 25
SECRET_KEY = env('DJANGO_SECRET_KEY')
# Application definition
INSTALLED_APPS = (
#1st migrate
'membership',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'easy_thumbnails',
'mptt',
'parler',
'taggit',
'taggit_autosuggest',
'django_select2',
'meta',
'meta_mixin',
# 'admin_enhancer',
'djangocms_blog',
'bootstrap3',
'compressor',
'filer',
'djangocms_blog',
'cms', # django CMS itself
'treebeard', # utilities for implementing a tree
'sekizai', # for javascript and css management
'menus', # helper for model independent hierarchical website navigation
'cmsplugin_filer_image',
#2nd migrate
# django-cms plugins
'djangocms_file',
'djangocms_picture',
'djangocms_video',
'djangocms_flash',
'djangocms_googlemap',
'djangocms_inherit',
'djangocms_link',
'djangocms_teaser',
'djangocms_page_meta',
'djangocms_text_ckeditor',
'djangocms_admin_style',
'cmsplugin_filer_file',
'cmsplugin_filer_folder',
'cmsplugin_filer_link',
'cmsplugin_filer_teaser',
'cmsplugin_filer_video',
#
#blog
# versioning
'reversion',
# ungleich
'ungleich',
'hosting',
'digitalglarus',
'django_extensions',
'debug_toolbar'
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.locale.LocaleMiddleware',
# django-cms middlewares
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'cms.middleware.language.LanguageCookieMiddleware',
)
ROOT_URLCONF = 'dynamicweb.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(PROJECT_DIR, 'membership/'), # membership template
os.path.join(PROJECT_DIR, 'templates/'),
os.path.join(PROJECT_DIR, 'templates/digitalglarus/partials'),
os.path.join(PROJECT_DIR, 'templates/cms'),
os.path.join(PROJECT_DIR, 'templates/digitalglarus'),
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages",
'sekizai.context_processors.sekizai',
'cms.context_processors.cms_settings',
],
},
},
]
WSGI_APPLICATION = 'dynamicweb.wsgi.application'
TDIR = os.path.join(PROJECT_DIR, 'templates')
CMS_TEMPLATES_DIR = {
1: os.path.join(TDIR, '')
}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'app',
}
}
# Internationalization
# https://docs.djangoproject.com/en/1.7/topics/i18n/
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
LANGUAGES = (
('en-us', _('English')),
('de', _('Deutsch')),
)
LANGUAGE_CODE = 'en-us'
CMS_PLACEHOLDER_CONF = {
'logo_image': {
'name': 'Logo Image',
'plugins': ['FilerImagePlugin'],
'limits': {
'global': 1,
}
},
'page-title': {
'name': 'Page Title',
'plugins': ['TextPlugin'],
'default_plugins': [
{
'plugin_type': 'TextPlugin',
'values': {
'body': 'Page Title...'
}
}
],
'limits': {
'global': 1,
}
},
'page-subtitle': {
'name': 'Page Subtitle',
'inherit': 'page-title',
'default_plugins': [
{
'plugin_type': 'TextPlugin',
'values': {
'body': 'Page subtitle...'
}
}
],
},
'footer_copyright': {
'name': 'Copyright',
'inherit': 'page-title',
'default_plugins': [
{
'plugin_type': 'TextPlugin',
'values': {
'body': 'Copyright...'
}
}
],
},
'content': {
'name': _('Content'),
'default_plugins': [
{
'plugin_type': 'TextPlugin',
'values': {'body': '<p></p>'},
},
]
},
'post_content': {
'name': _('Content'),
'default_plugins': [
{
'plugin_type': 'TextPlugin',
'values': {'body': '<p></p>'},
},
]
},
}
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
'LOCATION': '127.0.0.1:11211',
}
}
if LOGIN_URL is None:
LOGIN_URL = APP_ROOT_ENDPOINT + 'accounts/login/'
if LOGOUT_URL is None:
LOGOUT_URL = APP_ROOT_ENDPOINT + 'accounts/logout/'
if LOGIN_REDIRECT_URL is None:
LOGIN_REDIRECT_URL = APP_ROOT_ENDPOINT
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.7/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
MEDIA_URL = APP_ROOT_ENDPOINT + 'media/'
FILE_UPLOAD_PERMISSIONS = 0o644
META_SITE_PROTOCOL = 'http'
META_USE_SITES = True
MIGRATION_MODULES = {
'cms': 'cms.migrations',
# 'filer': 'filer.migrations_django',
# 'menus': 'menus.migrations_django',
'djangocms_flash': 'djangocms_flash.migrations_django',
'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
'djangocms_inherit': 'djangocms_inherit.migrations_django',
'djangocms_link': 'djangocms_link.migrations_django',
'djangocms_teaser': 'djangocms_teaser.migrations_django',
'djangocms_column': 'djangocms_column.migrations_django',
'djangocms_flash': 'djangocms_flash.migrations_django',
'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
'djangocms_inherit': 'djangocms_inherit.migrations_django',
'djangocms_style': 'djangocms_style.migrations_django',
'cmsplugin_filer_image': 'cmsplugin_filer_image.migrations_django',
'cmsplugin_filer_file': 'cmsplugin_filer_file.migrations_django',
'cmsplugin_filer_folder': 'cmsplugin_filer_folder.migrations_django',
'cmsplugin_filer_link': 'cmsplugin_filer_link.migrations_django',
'cmsplugin_filer_teaser': 'cmsplugin_filer_teaser.migrations_django',
'cmsplugin_filer_utils': 'cmsplugin_filer_utils.migrations_django',
'cmsplugin_filer_video': 'cmsplugin_filer_video.migrations_django',
'djangocms_text_ckeditor': 'djangocms_text_ckeditor.migrations',
}
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
#COMPRESS_PRECOMPILERS = (
# ('text/less', 'lesscpy {infile}'),
#)
THUMBNAIL_PROCESSORS = (
'easy_thumbnails.processors.colorspace',
'easy_thumbnails.processors.autocrop',
'filer.thumbnail_processors.scale_and_crop_with_subject_location',
'easy_thumbnails.processors.filters',
)
# django-cms-text-ckeditor
TEXT_SAVE_IMAGE_FUNCTION = (
'cmsplugin_filer_image.integrations.ckeditor.create_image_plugin'
)
TEXT_ADDITIONAL_TAGS = ('iframe',)
TEXT_ADDITIONAL_ATTRIBUTES = ('scrolling', 'allowfullscreen', 'frameborder')
USE_X_FORWARDED_HOST = True
# Django Bootstrap - Settings
# Added Configuration for bootstrap static files to load over https.
BOOTSTRAP3 = {
# The URL to the jQuery JavaScript file
'jquery_url': '//code.jquery.com/jquery.min.js',
# The Bootstrap base URL
'base_url': '//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/',
# The complete URL to the Bootstrap CSS file
# (None means derive it from base_url)
'css_url': None,
# The complete URL to the Bootstrap CSS file (None means no theme)
'theme_url': None,
# The complete URL to the Bootstrap JavaScript file
# (None means derive it from base_url)
'javascript_url': None,
# Put JavaScript in the HEAD section of the HTML document
# (only relevant if you use bootstrap3.html)
'javascript_in_head': False,
# Include jQuery with Bootstrap JavaScript
# (affects django-bootstrap3 template tags)
'include_jquery': False,
# Label class to use in horizontal forms
'horizontal_label_class': 'col-md-3',
# Field class to use in horizontal forms
'horizontal_field_class': 'col-md-9',
# Set HTML required attribute on required fields
'set_required': True,
# Set HTML disabled attribute on disabled fields
'set_disabled': False,
# Set placeholder attributes to label if no placeholder is provided
'set_placeholder': True,
# Class to indicate required (better to set this in your Django form)
'required_css_class': '',
# Class to indicate error (better to set this in your Django form)
'error_css_class': 'has-error',
# Class to indicate success, meaning the field has valid input
# (better to set this in your Django form)
'success_css_class': 'has-success',
# Renderers (only set these if you have studied the source and understand
# the inner workings)
'formset_renderers': {
'default': 'bootstrap3.renderers.FormsetRenderer',
},
'form_renderers': {
'default': 'bootstrap3.renderers.FormRenderer',
},
'field_renderers': {
'default': 'bootstrap3.renderers.FieldRenderer',
'inline': 'bootstrap3.renderers.InlineFieldRenderer',
},
}
# djangocms_blog config
BLOG_ENABLE_COMMENTS = False
BLOG_USE_PLACEHOLDER = True
BLOG_IMAGE_THUMBNAIL_SIZE = {'size': '120x120', 'crop': True, 'upscale': False}
BLOG_IMAGE_FULL_SIZE = {'size': '640x120', 'crop': True, 'upscale': False}
BLOG_PAGINATION = 4
BLOG_LATEST_POSTS = BLOG_PAGINATION
BLOG_POSTS_LIST_TRUNCWORDS_COUNT = 100
BLOG_MULTISITE = True
BLOG_AUTHOR_DEFAULT = True
# django-meta
META_SITE_PROTOCOL = "https"
META_SITE_DOMAIN = "ungleich.ch"
META_SITE_TYPE = "website"
META_SITE_NAME = "ungleich"
META_INCLUDE_KEYWORDS = ["ungleich", "hosting", "switzerland",
"Schweiz", "Swiss", "cdist"]
META_USE_SITES = True
PARLER_LANGUAGES = {1: ({'code': 'en-us'}, {'code': 'de'},)}
AUTH_USER_MODEL = 'membership.CustomUser'
# PAYMENT
STRIPE_API_PUBLIC_KEY = 'pk_test_uvWyHNJgVL2IB8kjfgJkGjg4' # used in frontend to call from user browser
STRIPE_API_PRIVATE_KEY = 'sk_test_uIPMdgXoRGydrcD7fkwcn7dj' # used in backend payment
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
# EMAIL MESSAGES
REGISTRATION_MESSAGE = {'subject': "Validation mail",
'message': 'Please validate Your account under this link http://localhost:8000/en-us/validate/{}',
'from': 'test@test.com'}
#dont migrate test
# SOUTH_TESTS_MIGRATE = False
STRIPE_API_PUBLIC_KEY = 'pk_test_uvWyHNJgVL2IB8kjfgJkGjg4' # used in frontend to call from user browser
STRIPE_API_PRIVATE_KEY = 'sk_test_uIPMdgXoRGydrcD7fkwcn7dj' # used in backend payment
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"

View file

@ -1,12 +1,8 @@
from .base import * from .base import *
ADMINS = ( # List of people that get admin messages
('Nico Schottelius', 'nico.schottelius@ungleich.ch'), ADMINS = ( (x, x + "@ungleich.ch") for x in ["web-team"] )
('Raul Ascencio', 'raul.ascencio@yandex.com'),
('Web team', 'web-team@ungleich.ch')
)
# ('Sanghee Kim', 'sanghee.kim@ungleich.ch'),
DEBUG=False DEBUG=False
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
@ -17,6 +13,15 @@ REGISTRATION_MESSAGE['message'] = REGISTRATION_MESSAGE['message'].format(host='d
ALLOWED_HOSTS = [ ALLOWED_HOSTS = [
".ungleich.ch", ".ungleich.ch",
"digital.glarus.ungleich.ch", ".datacenterlight.ch",
".rails-hosting.ch",
".django-hosting.ch",
".node-hosting.ch",
".devuanhosting.ch",
".digitalezukunft.ch",
".ipv6onlyhosting.ch",
".ipv6onlyhosting.com",
".ipv6onlyhosting.net",
".digitalglarus.ch",
".alplora.ch" ".alplora.ch"
] ]

Binary file not shown.

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-01 21:03+0000\n" "POT-Creation-Date: 2017-05-30 13:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -79,70 +79,68 @@ msgstr "Anmelden"
msgid "Home" msgid "Home"
msgstr "Home" msgstr "Home"
#: hosting/templates/hosting/bill_detail.html:11 #: templates/hosting/bill_detail.html:11 templates/hosting/order_detail.html:10
#: hosting/templates/hosting/order_detail.html:10
msgid "Invoice" msgid "Invoice"
msgstr "Rechnung" msgstr "Rechnung"
#: hosting/templates/hosting/bill_detail.html:11 #: templates/hosting/bill_detail.html:11 templates/hosting/order_detail.html:10
#: hosting/templates/hosting/order_detail.html:10
msgid "Order #" msgid "Order #"
msgstr "Rechnung #" msgstr "Rechnung #"
#: hosting/templates/hosting/bill_detail.html:25 #: templates/hosting/bill_detail.html:25
msgid "ungleich GmbH" msgid "ungleich GmbH"
msgstr "" msgstr ""
#: hosting/templates/hosting/bill_detail.html:26 #: templates/hosting/bill_detail.html:26
msgid "buchhaltung@ungleich.ch" msgid "buchhaltung@ungleich.ch"
msgstr "" msgstr ""
#: hosting/templates/hosting/bill_detail.html:27 #: templates/hosting/bill_detail.html:27
msgid "Hauptstrasse 14" msgid "Hauptstrasse 14"
msgstr "" msgstr ""
#: hosting/templates/hosting/bill_detail.html:28 #: templates/hosting/bill_detail.html:28
msgid "CH-8775 Luchsingen" msgid "CH-8775 Luchsingen"
msgstr "" msgstr ""
#: hosting/templates/hosting/bill_detail.html:29 #: templates/hosting/bill_detail.html:29
msgid "Mwst-Nummer: CHE-109.549.333 MWST" msgid "Mwst-Nummer: CHE-109.549.333 MWST"
msgstr "" msgstr ""
#: hosting/templates/hosting/bill_detail.html:60 #: templates/hosting/bill_detail.html:60
msgid "Total:" msgid "Total:"
msgstr "" msgstr ""
#: hosting/templates/hosting/bill_detail.html:68 #: templates/hosting/bill_detail.html:68
#, python-format #, python-format
msgid "Alles Preise in CHF mit 8%% Mehrwertsteuer." msgid "Alles Preise in CHF mit 8%% Mehrwertsteuer."
msgstr "All prices in CHF including 8%% VAT" msgstr "All prices in CHF including 8%% VAT"
#: hosting/templates/hosting/bill_detail.html:69 #: templates/hosting/bill_detail.html:69
msgid "Betrag zahlbar innerhalb von 30 Tagen ab Rechnungseingang." msgid "Betrag zahlbar innerhalb von 30 Tagen ab Rechnungseingang."
msgstr "" msgstr ""
#: hosting/templates/hosting/bill_detail.html:70 #: templates/hosting/bill_detail.html:70
msgid "Kontoverbindung:" msgid "Kontoverbindung:"
msgstr "" msgstr ""
#: hosting/templates/hosting/bill_detail.html:73 #: templates/hosting/bill_detail.html:73
msgid "IBAN:" msgid "IBAN:"
msgstr "" msgstr ""
#: hosting/templates/hosting/bill_detail.html:76 #: templates/hosting/bill_detail.html:76
msgid "BIC:" msgid "BIC:"
msgstr "" msgstr ""
#: hosting/templates/hosting/bill_detail.html:81 #: templates/hosting/bill_detail.html:81
msgid "CH02 0900 0000 6071 8848 8" msgid "CH02 0900 0000 6071 8848 8"
msgstr "" msgstr ""
#: hosting/templates/hosting/bill_detail.html:84 #: templates/hosting/bill_detail.html:84
msgid "POFICHBEXXX" msgid "POFICHBEXXX"
msgstr "" msgstr ""
#: hosting/templates/hosting/bills.html:12 #: templates/hosting/bills.html:12
msgid "Customers" msgid "Customers"
msgstr "Kunden" msgstr "Kunden"
@ -151,27 +149,31 @@ msgstr "Kunden"
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: hosting/templates/hosting/bills.html:17 #: templates/hosting/bills.html:17
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: hosting/templates/hosting/bills.html:28 #: templates/hosting/bills.html:28
msgid "View Bill" msgid "View Bill"
msgstr "Rechnung anzeigen" msgstr "Rechnung anzeigen"
#: hosting/templates/hosting/bills.html:41 #: templates/hosting/bills.html:41 templates/hosting/orders.html.py:83
#: hosting/templates/hosting/orders.html:83 #: templates/hosting/virtual_machines.html:70
#: hosting/templates/hosting/virtual_machines.html:70
msgid "previous" msgid "previous"
msgstr "vorherige" msgstr "vorherige"
#: hosting/templates/hosting/bills.html:47 #: templates/hosting/bills.html:47 templates/hosting/orders.html.py:89
#: hosting/templates/hosting/orders.html:89 #: templates/hosting/virtual_machines.html:76
#: hosting/templates/hosting/virtual_machines.html:76
msgid "next" msgid "next"
msgstr "nächste" msgstr "nächste"
#: hosting/templates/hosting/confirm_reset_password.html:19 #: templates/hosting/confirm_reset_password.html:10
#: templates/hosting/login.html:9 templates/hosting/reset_password.html.py:9
#: templates/hosting/signup.html:8
msgid "Your VM hosted in Switzerland"
msgstr "Ihre VM in der Schweiz"
#: templates/hosting/confirm_reset_password.html:14
msgid "Set your new password" msgid "Set your new password"
msgstr "Setzen Ihr neues Passwort" msgstr "Setzen Ihr neues Passwort"
@ -206,40 +208,34 @@ msgstr "Wählen Sie eine Konfiguration"
msgid "CHF/Month" msgid "CHF/Month"
msgstr "CHF/Monat" msgstr "CHF/Monat"
#: hosting/templates/hosting/create_virtual_machine.html:45 #: templates/hosting/create_virtual_machine.html:45
msgid "Start VM" msgid "Start VM"
msgstr "Start VM" msgstr "Start VM"
#: hosting/templates/hosting/emails/password_reset_email.html:2 #: templates/hosting/emails/password_reset_email.html:2
#: hosting/templates/hosting/emails/password_reset_email.txt:2 #: templates/hosting/emails/password_reset_email.txt:2
#, python-format #, python-format
msgid "" msgid ""
"You're receiving this email because you requested a password reset for your " "You're receiving this email because you requested a password reset for your "
"user account at %(site_name)s." "user account at %(site_name)s."
msgstr "" msgstr ""
#: hosting/templates/hosting/emails/password_reset_email.html:4 #: templates/hosting/emails/password_reset_email.html:4
#: hosting/templates/hosting/emails/password_reset_email.txt:4 #: templates/hosting/emails/password_reset_email.txt:4
msgid "Please go to the following page and choose a new password:" msgid "Please go to the following page and choose a new password:"
msgstr "" msgstr ""
#: hosting/templates/hosting/emails/password_reset_email.html:9 #: templates/hosting/emails/password_reset_email.html:9
#: hosting/templates/hosting/emails/password_reset_email.txt:9 #: templates/hosting/emails/password_reset_email.txt:9
msgid "Thanks for using our site!" msgid "Thanks for using our site!"
msgstr "" msgstr ""
#: hosting/templates/hosting/emails/password_reset_email.html:11 #: templates/hosting/emails/password_reset_email.html:11
#: hosting/templates/hosting/emails/password_reset_email.txt:11 #: templates/hosting/emails/password_reset_email.txt:11
#, python-format #, python-format
msgid "The %(site_name)s team" msgid "The %(site_name)s team"
msgstr "" msgstr ""
#: hosting/templates/hosting/login.html:10
#: hosting/templates/hosting/reset_password.html:10
#: hosting/templates/hosting/signup.html:9
msgid "Your VM hosted in Switzerland"
msgstr "Ihre VM gehostet in der Schweiz"
#: hosting/templates/hosting/login.html:26 #: hosting/templates/hosting/login.html:26
msgid "You haven been logged out" msgid "You haven been logged out"
msgstr "Sie wurden abgmeldet" msgstr "Sie wurden abgmeldet"
@ -258,44 +254,44 @@ msgstr "Registrieren"
msgid "Forgot your password ? " msgid "Forgot your password ? "
msgstr "Passwort vergessen?" msgstr "Passwort vergessen?"
#: hosting/templates/hosting/notifications.html:9 #: templates/hosting/notifications.html:9
msgid "Notifications" msgid "Notifications"
msgstr "Benachrichtigungen" msgstr "Benachrichtigungen"
#: hosting/templates/hosting/notifications.html:16 #: templates/hosting/notifications.html:16
msgid "Unread" msgid "Unread"
msgstr "Ungelesen" msgstr "Ungelesen"
#: hosting/templates/hosting/notifications.html:26 #: templates/hosting/notifications.html:26
msgid "All" msgid "All"
msgstr "Alle" msgstr "Alle"
#: hosting/templates/hosting/notifications.html:38 #: templates/hosting/notifications.html:38
msgid "Unread notifications" msgid "Unread notifications"
msgstr "Ungelesene Benachrichtigungen" msgstr "Ungelesene Benachrichtigungen"
#: hosting/templates/hosting/notifications.html:48 #: templates/hosting/notifications.html:48
msgid "Mark as read" msgid "Mark as read"
msgstr "Als gelesen markieren" msgstr "Als gelesen markieren"
#: hosting/templates/hosting/notifications.html:59 #: templates/hosting/notifications.html:59
msgid "All notifications" msgid "All notifications"
msgstr "Alle Benachrichtigungen" msgstr "Alle Benachrichtigungen"
#: hosting/templates/hosting/order_detail.html:16 #: templates/hosting/order_detail.html:16
#: hosting/templates/hosting/order_detail.html:24 #: templates/hosting/order_detail.html:24
msgid "Billed To:" msgid "Billed To:"
msgstr "" msgstr ""
#: hosting/templates/hosting/order_detail.html:26 #: templates/hosting/order_detail.html:26
msgid "Status:" msgid "Status:"
msgstr "" msgstr ""
#: hosting/templates/hosting/order_detail.html:38 #: templates/hosting/order_detail.html:38
msgid "Payment Method:" msgid "Payment Method:"
msgstr "Bezahlmethode" msgstr "Bezahlmethode"
#: hosting/templates/hosting/order_detail.html:49 #: templates/hosting/order_detail.html:49
msgid "Order summary" msgid "Order summary"
msgstr "Bestellungsübersicht" msgstr "Bestellungsübersicht"
@ -308,6 +304,8 @@ msgstr "Prozessorkerne"
#: hosting/templates/hosting/order_detail.html:54 #: hosting/templates/hosting/order_detail.html:54
#: hosting/templates/hosting/payment.html:20 #: hosting/templates/hosting/payment.html:20
#: hosting/templates/hosting/virtual_machine_detail.html:81 #: hosting/templates/hosting/virtual_machine_detail.html:81
#: templates/hosting/order_detail.html:54
#: templates/hosting/virtual_machine_detail.html:82
msgid "Memory" msgid "Memory"
msgstr "Arbeitsspeicher" msgstr "Arbeitsspeicher"
@ -316,19 +314,19 @@ msgstr "Arbeitsspeicher"
msgid "Disk space" msgid "Disk space"
msgstr "Festplattenkapazität" msgstr "Festplattenkapazität"
#: hosting/templates/hosting/order_detail.html:58 #: templates/hosting/order_detail.html:58
msgid "Total" msgid "Total"
msgstr "" msgstr ""
#: hosting/templates/hosting/order_detail.html:64 #: templates/hosting/order_detail.html:64
msgid "Finish Configuration" msgid "Finish Configuration"
msgstr "Konfiguration beenden" msgstr "Konfiguration beenden"
#: hosting/templates/hosting/orders.html:17 #: templates/hosting/orders.html:17
msgid "Date" msgid "Date"
msgstr "Datum" msgstr "Datum"
#: hosting/templates/hosting/orders.html:18 #: templates/hosting/orders.html:18
msgid "Amount" msgid "Amount"
msgstr "Betrag" msgstr "Betrag"
@ -339,32 +337,31 @@ msgstr "Betrag"
msgid "Status" msgid "Status"
msgstr "" msgstr ""
#: hosting/templates/hosting/orders.html:30 #: templates/hosting/orders.html:30
msgid "Approved" msgid "Approved"
msgstr "Akzeptiert" msgstr "Akzeptiert"
#: hosting/templates/hosting/orders.html:32 #: templates/hosting/orders.html:32
msgid "Declined" msgid "Declined"
msgstr "Abgelehnt" msgstr "Abgelehnt"
#: hosting/templates/hosting/orders.html:37 #: templates/hosting/orders.html:37 templates/hosting/virtual_machines.html:58
#: hosting/templates/hosting/virtual_machines.html:58
msgid "View Detail" msgid "View Detail"
msgstr "Details anzeigen" msgstr "Details anzeigen"
#: hosting/templates/hosting/orders.html:41 #: templates/hosting/orders.html:41
msgid "Cancel Order" msgid "Cancel Order"
msgstr "Bestellung stornieren" msgstr "Bestellung stornieren"
#: hosting/templates/hosting/orders.html:56 #: templates/hosting/orders.html:56
msgid "Do You want do delete your order?" msgid "Do You want do delete your order?"
msgstr "Wollen Sie ihre Bestellung löschen?" msgstr "Wollen Sie ihre Bestellung löschen?"
#: hosting/templates/hosting/orders.html:64 #: templates/hosting/orders.html:64
msgid "Close" msgid "Close"
msgstr "Schliessen" msgstr "Schliessen"
#: hosting/templates/hosting/orders.html:66 #: templates/hosting/orders.html:66
msgid "Delete" msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
@ -405,51 +402,51 @@ msgstr "CV Code"
msgid "Reset your password" msgid "Reset your password"
msgstr "Passwort zurücksetzen" msgstr "Passwort zurücksetzen"
#: hosting/templates/hosting/virtual_machine_detail.html:19 #: templates/hosting/virtual_machine_detail.html:19
msgid "Settings" msgid "Settings"
msgstr "Einstellungen" msgstr "Einstellungen"
#: hosting/templates/hosting/virtual_machine_detail.html:25 #: templates/hosting/virtual_machine_detail.html:25
msgid "Billing" msgid "Billing"
msgstr "Abrechnungen" msgstr "Abrechnungen"
#: hosting/templates/hosting/virtual_machine_detail.html:60 #: templates/hosting/virtual_machine_detail.html:60
msgid "Ip not assigned yet" msgid "Ip not assigned yet"
msgstr "Ip nicht zugewiesen" msgstr "Ip nicht zugewiesen"
#: hosting/templates/hosting/virtual_machine_detail.html:87 #: templates/hosting/virtual_machine_detail.html:89
msgid "Disk" msgid "Disk"
msgstr "Festplatte" msgstr "Festplatte"
#: hosting/templates/hosting/virtual_machine_detail.html:96 #: templates/hosting/virtual_machine_detail.html:98
msgid "Configuration" msgid "Configuration"
msgstr "Konfiguration" msgstr "Konfiguration"
#: hosting/templates/hosting/virtual_machine_detail.html:106 #: templates/hosting/virtual_machine_detail.html:108
msgid "Current pricing" msgid "Current pricing"
msgstr "Aktueller Preis" msgstr "Aktueller Preis"
#: hosting/templates/hosting/virtual_machine_detail.html:115 #: templates/hosting/virtual_machine_detail.html:117
msgid "Current status" msgid "Current status"
msgstr "Aktueller Status" msgstr "Aktueller Status"
#: hosting/templates/hosting/virtual_machine_detail.html:140 #: templates/hosting/virtual_machine_detail.html:142
msgid "Terminate Virtual Machine" msgid "Terminate Virtual Machine"
msgstr "Virtuelle Maschine beenden" msgstr "Virtuelle Maschine beenden"
#: hosting/templates/hosting/virtual_machine_detail.html:161 #: templates/hosting/virtual_machine_detail.html:163
msgid "Terminate your Virtual Machine" msgid "Terminate your Virtual Machine"
msgstr "Ihre virtuelle Maschine beenden" msgstr "Ihre virtuelle Maschine beenden"
#: hosting/templates/hosting/virtual_machine_detail.html:164 #: templates/hosting/virtual_machine_detail.html:166
msgid "Are you sure do you want to cancel your Virtual Machine " msgid "Are you sure do you want to cancel your Virtual Machine "
msgstr "Sind Sie sicher, dass Sie ihre virtuelle Maschine beenden wollen " msgstr "Sind Sie sicher, dass Sie ihre virtuelle Maschine beenden wollen "
#: hosting/templates/hosting/virtual_machine_detail.html:167 #: templates/hosting/virtual_machine_detail.html:169
msgid "Cancel" msgid "Cancel"
msgstr "Beenden" msgstr "Beenden"
#: hosting/templates/hosting/virtual_machine_key.html:11 #: templates/hosting/virtual_machine_key.html:11
msgid "Access Key" msgid "Access Key"
msgstr "Zugriffsschlüssel" msgstr "Zugriffsschlüssel"
@ -511,22 +508,22 @@ msgstr ""
msgid "Generate my key" msgid "Generate my key"
msgstr "Generiere meinen Schlüssel" msgstr "Generiere meinen Schlüssel"
#: hosting/templates/hosting/virtual_machines.html:9 #: templates/hosting/virtual_machines.html:9
msgid "Virtual Machines" msgid "Virtual Machines"
msgstr "Virtuelle Maschinen" msgstr "Virtuelle Maschinen"
#: hosting/templates/hosting/virtual_machines.html:22 #: templates/hosting/virtual_machines.html:22
msgid "Create VM" msgid "Create VM"
msgstr "Neue VM" msgstr "Neue VM"
#: hosting/templates/hosting/virtual_machines.html:28 #: templates/hosting/virtual_machines.html:28
msgid "ID" msgid "ID"
msgstr "" msgstr ""
#: hosting/templates/hosting/virtual_machines.html:29 #: templates/hosting/virtual_machines.html:29
msgid "Ipv4" msgid "Ipv4"
msgstr "" msgstr ""
#: hosting/templates/hosting/virtual_machines.html:30 #: templates/hosting/virtual_machines.html:30
msgid "Ipv6" msgid "Ipv6"
msgstr "" msgstr ""

View file

@ -1,7 +1,20 @@
.dashboard-container { .dashboard-container {
padding-top:70px; padding-bottom: 11%; padding-top:70px; padding-bottom: 70px;
} }
.content-dashboard{
height: 100vh;
width: 80%;
margin: 0 auto;
max-width: 1120px;
}
.container-table{
margin-top: 35px;
overflow-y: hidden;
}
.container-table table{
overflow-y: auto;
}
.borderless td { .borderless td {
border: none !important; border: none !important;
} }
@ -26,3 +39,19 @@
.space-above-big { .space-above-big {
margin-top: 20%; margin-top: 20%;
} }
.table>tbody>tr>td{
vertical-align: middle;
}
.fa-separate{
margin-right: 15px;
}
@media (max-width: 540px) {
select {
width: 280px;
}
.content-dashboard {
width: 90%;
}
}

View file

@ -4,22 +4,20 @@
* For details, see http://www.apache.org/licenses/LICENSE-2.0. * For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/ */
@font-face { @font-face {
font-family: 'Montserrat-Regular'; font-family: 'Lato-Regular';
src: url('../fonts/Montserrat/Montserrat-Regular.ttf'); src: url('../fonts/Lato/Lato-Regular.ttf');
} }
@font-face { @font-face {
font-family: 'Montserrat-Bold'; font-family: 'Lato-Black';
src: url('../fonts/Montserrat/Montserrat-Bold.ttf'); src: url('../fonts/Lato/Lato-Black.ttf');
} }
@font-face { @font-face {
font-family: 'Montserrat-Medium'; font-family: 'Lato-Light';
src: url('../fonts/Montserrat/Montserrat-Medium.ttf'); src: url('../fonts/Lato/Lato-Light.ttf');
}
@font-face {
font-family: 'Montserrat-Light';
src: url('../fonts/Montserrat/Montserrat-Light.ttf');
} }
body, body,
html { html {
width: 100%; width: 100%;
@ -33,8 +31,8 @@ h3,
h4, h4,
h5, h5,
h6 { h6 {
font-family: 'Montserrat-Regular', sans-serif; font-family: 'Lato-Regular', sans-serif;
font-weight: 700; font-weight: 300;
} }
.topnav { .topnav {
font-size: 14px; font-size: 14px;
@ -226,18 +224,24 @@ h6 {
z-index: 1000; z-index: 1000;
} }
.auth-container .auth-content{ .auth-container .auth-content{
width: 80%; width: 100%;
margin: 0 auto; margin: 0 auto;
max-width: 390px; max-width: 390px;
margin-top: 60px;
} }
.auth-container .auth-center{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
width: 100%;
}
.auth-container .auth-title{ .auth-container .auth-title{
margin-top: 40px; margin-bottom: 50px;
} }
.auth-container .auth-title h2{ .auth-container .auth-title h2{
color: #fff; color: #fff;
font-family: 'Montserrat-Bold'; font-family: 'Lato-Black';
font-size: 44px; font-size: 44px;
text-align: center; text-align: center;
width: 425px; width: 425px;
@ -276,7 +280,7 @@ h6 {
font-size: 20px; font-size: 20px;
border-radius: 3px 3px 0px 0px; border-radius: 3px 3px 0px 0px;
margin: 0 auto; margin: 0 auto;
font-family: 'Montserrat-Medium'; font-family: 'Lato-Black';
} }
.auth-box .form{ .auth-box .form{
padding: 20px; padding: 20px;
@ -340,6 +344,19 @@ h6 {
ul.banner-social-buttons > li:last-child { ul.banner-social-buttons > li:last-child {
margin-bottom: 0; margin-bottom: 0;
} }
.auth-box .form {
padding: 15px 0px 0 0;
}
.auth-box.sign-up .form {
padding: 15px 0px 0 0;
}
.auth-box .form .form-control {
height: 44px;
font-size: 13px;
}
.auth-container .auth-title {
display: none;
}
} }
@media (max-width: 540px) { @media (max-width: 540px) {
.auth-container .auth-title h2{ .auth-container .auth-title h2{
@ -347,9 +364,16 @@ h6 {
width: 90%; width: 90%;
margin-bottom: 50px; margin-bottom: 50px;
} }
.auth-box .form { .auth-container.auth-signup .auth-title h2{
padding: 15px; font-size: 20px;
width: 90%; width: 90%;
margin-bottom: 50px;
}
.auth-box .form {
width: 90%;
}
.auth-box .section-heading {
font-size: 15px;
} }
} }
footer { footer {

View file

@ -1,4 +1,4 @@
.order-detail-container {padding-top: 70px; padding-bottom: 11%;} .order-detail-container {padding-top: 70px; padding-bottom: 70px; margin-bottom: 70px;}
.order-detail-container .invoice-title h2, .invoice-title h3 { .order-detail-container .invoice-title h2, .invoice-title h3 {
display: inline-block; display: inline-block;

View file

@ -43,4 +43,38 @@
.virtual-machine-container .right-place{ .virtual-machine-container .right-place{
margin-top: 15px; margin-top: 15px;
}
.virtual-machine-container .separate-md{
margin-top: 35px;
}
.virtual-machine-container .box-setting{
height: 100px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.virtual-machine-container .box-setting .label-success{
padding-top: 4px;
}
@media (max-width: 990px) {
.virtual-machine-container .tabs-left {
border-right: 0;
}
.virtual-machine-container .tabs-left>li.active>a,
.virtual-machine-container .tabs-left>li.active>a:hover,
.virtual-machine-container .tabs-left>li.active>a:focus {
border: 1px solid #ddd;
}
.virtual-machine-container .tabs-left>li>a {
border-radius: 4px;
margin-right: 0;
display:block;
}
}
@media (max-width: 420px) {
.btn-create-vm {
float: left !important;
}
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,92 @@
Copyright (c) 2010-2014 by tyPoland Lukasz Dziedzic (team@latofonts.com) with Reserved Font Name "Lato"
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View file

@ -119,51 +119,16 @@
{% endif %} {% endif %}
<!-- Header --> <div class="content-dashboard">
<a name="about"></a> {% block content %}
{% block content %} {% endblock %}
{% endblock %} </div>
<!-- Footer --> <!-- Footer -->
{% if request.user.is_authenticated %} {% if request.user.is_authenticated %}
<footer class="navbar-fixed-bottom"> <footer class="navbar-fixed-bottom">
<div class="container"> <div class="container">
<div class="row"> <p class="copyright text-muted small">Copyright &copy; ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
<div class="col-lg-12 hidden-xs">
<ul class="list-inline">
<li>
<a href="#">{% trans "Home"%}</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="{% url 'hosting:virtual_machines' %}">
{% trans "My Virtual Machines"%}
</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="{% url 'hosting:orders' %}">
{% trans "My Orders"%}
</a>
</li>
<li>&sdot;</li>
<li>
<li>
<a href="{% url 'hosting:ssh_keys' %}">
{% trans "Keys"%}
</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="{% url 'hosting:notifications' %}">
{% trans "Notifications "%}
</a>
</li>
</ul>
<p class="copyright text-muted small">Copyright &copy; ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
</div>
</div>
</div> </div>
</footer> </footer>
{% endif %} {% endif %}

View file

@ -3,7 +3,7 @@
{% load i18n %} {% load i18n %}
{% block content %} {% block content %}
<div class="container"> <div class="">
<div class="orders-container" style="padding-bottom: 15%"> <div class="orders-container" style="padding-bottom: 15%">
{# Adress bar #} {# Adress bar #}
<div class="row"> <div class="row">

View file

@ -3,8 +3,8 @@
{% load i18n %} {% load i18n %}
{% block content %} {% block content %}
<div class="container"> <div class="">
<div class="container orders-container"> <div class="orders-container">
<h1>Error</h1> <h1>Error</h1>
<p> Could not get HostingBill object for client. </p> <p> Could not get HostingBill object for client. </p>
<p> Please create a HostingBill object via the admin page </p> <p> Please create a HostingBill object via the admin page </p>

View file

@ -5,7 +5,7 @@
{% block content %} {% block content %}
<div> <div>
<div class="container orders-container"> <div class="orders-container">
<div class="row"> <div class="row">
<div class="col-md-8 col-md-offset-2"> <div class="col-md-8 col-md-offset-2">
<table class="table borderless table-hover"> <table class="table borderless table-hover">

View file

@ -3,11 +3,15 @@
{% load i18n %} {% load i18n %}
{% block content %} {% block content %}
<div class="intro-auth intro-reset-password"> <div class="auth-container">
<div class="container"> <div class="auth-bg"></div>
<div class="col-md-4">&nbsp;</div> <div class="auth-center">
<div class="col-md-4"> <div class="auth-title">
<div class="intro-message"> <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
</div>
<div class="auth-content">
<div class="intro-message auth-box sign-up">
<h2 class="section-heading">{% trans "Set your new password"%}</h2>
{% if messages %} {% if messages %}
<ul class="list-unstyled"> <ul class="list-unstyled">
{% for message in messages %} {% for message in messages %}
@ -15,10 +19,7 @@
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}
<form action="" method="post" class="form" novalidate>
<h2 class="section-heading">{% trans "Set your new password"%}</h2>
<form action="" method="post" class="form" novalidate>
{% csrf_token %} {% csrf_token %}
{% for field in form %} {% for field in form %}
{% bootstrap_field field show_label=False %} {% bootstrap_field field show_label=False %}
@ -29,11 +30,17 @@
</button> </button>
{% endbuttons %} {% endbuttons %}
</form> </form>
<span>{% trans "Already have an account ?"%}<a class="unlink" href="{% url 'hosting:login' %}">{% trans "Log in"%}</a></span> <div class="auth-footer">
<ul class="list-inline intro-social-buttons"> <div class="text">
</ul> <span>{% trans "Already have an account ?"%}</span>
</div> </div>
<div class="links">
<a class="unlink" href="{% url 'hosting:login' %}">{% trans "Login"%}</a>
</div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View file

@ -16,7 +16,7 @@
{% endif %} {% endif %}
</div> </div>
{% if not error %} {% if not error %}
<h3><i class="fa fa-server" aria-hidden="true"></i> {% trans "New Virtual Machine"%} </h3> <h3><i class="fa fa-server fa-separate" aria-hidden="true"></i> {% trans "New Virtual Machine"%} </h3>
<hr/> <hr/>
<form method="POST" action=""> <form method="POST" action="">
{% csrf_token %} {% csrf_token %}

View file

@ -5,7 +5,9 @@
<div class="auth-container"> <div class="auth-container">
<div class="auth-bg"></div> <div class="auth-bg"></div>
<div class="container">
<div class="auth-center">
<div class="auth-title"> <div class="auth-title">
<h2>{% trans "Your VM hosted in Switzerland"%}</h2> <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
</div> </div>
@ -55,9 +57,8 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</div> </div>
</div>
<!-- /.container -->
</div> </div>
{% endblock %} {% endblock %}

View file

@ -2,11 +2,11 @@
{% load staticfiles bootstrap3 i18n %} {% load staticfiles bootstrap3 i18n %}
{% block content %} {% block content %}
<div> <div>
<div class="container virtual-machine-container dashboard-container "> <div class="virtual-machine-container dashboard-container ">
<div class="row"> <div class="row">
<div class="col-md-9 col-md-offset-2"> <div class="col-md-9 col-md-offset-2">
<div class="col-sm-12"> <div class="col-sm-12">
<h3><i class="fa fa-bell" aria-hidden="true"></i>{% trans "Notifications"%} </h3> <h3><i class="fa fa-bell fa-separate" aria-hidden="true"></i>{% trans "Notifications"%} </h3>
<hr/> <hr/>
<div class="col-md-3"> <!-- required for floating --> <div class="col-md-3"> <!-- required for floating -->
<!-- Nav tabs --> <!-- Nav tabs -->

View file

@ -3,9 +3,9 @@
{% load i18n %} {% load i18n %}
{% block content %} {% block content %}
<div class="container order-detail-container"> <div class="order-detail-container">
<div class="row"> <div class="row">
<div class="col-xs-8 col-xs-offset-2"> <div class="col-xs-12 col-md-8 col-md-offset-2">
<div class="invoice-title"> <div class="invoice-title">
<h2>{% trans "Invoice"%}</h2><h3 class="pull-right">{% trans "Order #"%} {{order.id}}</h3> <h2>{% trans "Invoice"%}</h2><h3 class="pull-right">{% trans "Order #"%} {{order.id}}</h3>
</div> </div>

View file

@ -5,11 +5,11 @@
{% block content %} {% block content %}
<div> <div>
<div class="container orders-container"> <div class="orders-container">
<div class="row"> <div class="row">
<div class="col-md-8 col-md-offset-2"> <div class="container-table col-md-8 col-md-offset-2">
<table class="table borderless table-hover"> <table class="table borderless table-hover">
<h3><i class="fa fa-credit-card"></i>{% trans "My Orders"%}</h3> <h3><i class="fa fa-credit-card fa-separate"></i>{% trans "My Orders"%}</h3>
<br/> <br/>
<thead> <thead>
<tr> <tr>

View file

@ -3,7 +3,7 @@
{% block content %} {% block content %}
<!-- Credit card form --> <!-- Credit card form -->
<div> <div>
<div class="container payment-container"> <div class="payment-container">
<div class="row"> <div class="row">
<div class="col-xs-12 col-md-offset-2 col-md-4 summary-box"> <div class="col-xs-12 col-md-offset-2 col-md-4 summary-box">
<form role="form" novalidate> <form role="form" novalidate>

View file

@ -5,7 +5,7 @@
{% block content %} {% block content %}
<div class="auth-container"> <div class="auth-container">
<div class="auth-bg"></div> <div class="auth-bg"></div>
<div class="container"> <div class="auth-center">
<div class="auth-title"> <div class="auth-title">
<h2>{% trans "Your VM hosted in Switzerland"%}</h2> <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
</div> </div>
@ -32,7 +32,7 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</div> </div>
</div>
</div> </div>
{% endblock %} {% endblock %}

View file

@ -2,9 +2,9 @@
{% load staticfiles bootstrap3 i18n %} {% load staticfiles bootstrap3 i18n %}
{% block content %} {% block content %}
<div class="auth-container"> <div class="auth-container auth-signup">
<div class="auth-bg"></div> <div class="auth-bg"></div>
<div class="container"> <div class="auth-center ">
<div class="auth-title"> <div class="auth-title">
<h2>{% trans "Your VM hosted in Switzerland"%}</h2> <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
</div> </div>
@ -31,7 +31,8 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</div> </div>
</div>
</div> </div>
{% endblock %} {% endblock %}

View file

@ -2,13 +2,13 @@
{% load staticfiles bootstrap3 i18n %} {% load staticfiles bootstrap3 i18n %}
{% block content %} {% block content %}
<div> <div>
<div class="container virtual-machine-container dashboard-container "> <div class="virtual-machine-container dashboard-container ">
<div class="row"> <div class="row">
<div class="col-md-9 col-md-offset-2"> <div class="container-table col-md-9 col-md-offset-2">
<div class="col-sm-12"> <div class="col-sm-12">
<form method="POST" action="" novalidate> <form method="POST" action="" novalidate>
{% csrf_token %} {% csrf_token %}
<h3><i class="fa fa-key" aria-hidden="true"></i>{% trans "Access Key"%} </h3> <h3><i class="fa fa-key fa-separate" aria-hidden="true"></i>{% trans "Access Key"%} </h3>
{% if messages %} {% if messages %}
<div class="alert alert-warning"> <div class="alert alert-warning">
{% for message in messages %} {% for message in messages %}

View file

@ -4,11 +4,11 @@
{% block content %} {% block content %}
<div> <div>
<div class="container virtual-machine-container dashboard-container "> <div class="virtual-machine-container dashboard-container ">
<div class="row"> <div class="row">
<div class="col-md-9 col-md-offset-2"> <div class="col-md-9 col-md-offset-2">
<div class="col-sm-12"> <div class="col-sm-12">
<h3><i class="fa fa-cloud" aria-hidden="true"></i> {{virtual_machine.name}}</h3> <h3><i class="fa fa-cloud fa-separate" aria-hidden="true"></i> {{virtual_machine.name}}</h3>
<hr/> <hr/>
<div class="col-md-3"> <!-- required for floating --> <div class="col-md-3"> <!-- required for floating -->
<!-- Nav tabs --> <!-- Nav tabs -->
@ -71,20 +71,22 @@
<div class="col-md-12"> <div class="col-md-12">
<div class="row"> <div class="row">
<div class="col-md-3"> <div class="col-md-3">
<div class="well text-center"> <div class="well text-center box-setting">
<i class="fa fa-cubes" aria-hidden="true"></i>{% trans "Cores"%} <br/> <i class="fa fa-cubes" aria-hidden="true"></i>
<span>{% trans "Cores"%}</span>
<span class="label label-success">{{virtual_machine.cores}}</span> <span class="label label-success">{{virtual_machine.cores}}</span>
</div> </div>
</div> </div>
<div class="col-md-3"> <div class="col-md-3">
<div class="well text-center"> <div class="well text-center box-setting">
<i class="fa fa-tachometer" aria-hidden="true"></i> {% trans "Memory"%} <br/> <i class="fa fa-tachometer" aria-hidden="true"></i> {% trans "Memory"%} <br/>
<span class="label label-success">{{virtual_machine.memory}} GiB</span> <span class="label label-success">{{virtual_machine.memory}} GiB</span>
</div> </div>
</div> </div>
<div class="col-md-3"> <div class="col-md-3">
<div class="well text-center"> <div class="well text-center box-setting">
<i class="fa fa-hdd-o" aria-hidden="true"></i> {% trans "Disk"%} <br/> <i class="fa fa-hdd-o" aria-hidden="true"></i>
<span>{% trans "Disk"%}</span>
<span class="label label-success">{{virtual_machine.disk_size|floatformat:2}} GiB</span> <span class="label label-success">{{virtual_machine.disk_size|floatformat:2}} GiB</span>
</div> </div>
</div> </div>
@ -130,7 +132,7 @@
</div> </div>
{% if not virtual_machine.status == 'canceled' %} {% if not virtual_machine.status == 'canceled' %}
<div class="row"> <div class="row">
<div class="col-md-12 space-above-big"> <div class="col-md-12 separate-md">
<div class="pull-right"> <div class="pull-right">
<form method="POST" <form method="POST"
id="virtual_machine_cancel_form" class="cancel-form" action="{% url 'hosting:virtual_machines' virtual_machine.vm_id %}"> id="virtual_machine_cancel_form" class="cancel-form" action="{% url 'hosting:virtual_machines' virtual_machine.vm_id %}">

View file

@ -2,11 +2,11 @@
{% load staticfiles bootstrap3 i18n %} {% load staticfiles bootstrap3 i18n %}
{% block content %} {% block content %}
<div> <div>
<div class="container dashboard-container"> <div class="dashboard-container">
<div class="row"> <div class="row">
<div class="col-md-8 col-md-offset-2" style="margin-top: 35px;"> <div class="col-xs-12 col-lg-8 col-lg-offset-2 container-table">
<table class="table borderless table-hover"> <table class="table borderless table-hover">
<h3 class="pull-left"><i class="fa fa-server" aria-hidden="true"></i> {% trans "Virtual Machines"%} </h3> <h3 class="pull-left"><i class="fa fa-server fa-separate" aria-hidden="true"></i> {% trans "Virtual Machines"%} </h3>
<div class="col-md-12"> <div class="col-md-12">
<br/> <br/>
{% if messages %} {% if messages %}
@ -18,7 +18,7 @@
{% endif %} {% endif %}
</div> </div>
{% if not error %} {% if not error %}
<p class="pull-right"> <p class="pull-right btn-create-vm">
<a class="btn btn-success" href="{% url 'hosting:create_virtual_machine' %}" >{% trans "Create VM"%} </a> <a class="btn btn-success" href="{% url 'hosting:create_virtual_machine' %}" >{% trans "Create VM"%} </a>
</p> </p>
<br/> <br/>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 910 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Some files were not shown because too many files have changed in this diff Show more