Merge branch 'master' into feature/added_localtime
This commit is contained in:
commit
d8389993ce
32 changed files with 587 additions and 760 deletions
16
Changelog
16
Changelog
|
@ -1,3 +1,16 @@
|
|||
1.0.17: 2017-06-16
|
||||
* [datacenterlight] Cleanup OrderView useless code
|
||||
* [datacenterlight] Replaced GiB to GB
|
||||
* [datacenterlight] Tentative fix for error 500 on order detail view
|
||||
* [datacenterlight] Fixed translations
|
||||
* [datacenterlight] Added email confirmation feature
|
||||
* [datacenterlight] Changed logo on datacerlight dashboard
|
||||
* [datacenterlight] Credit card input disappearance fix
|
||||
1.0.16: 2017-06-15
|
||||
* [datacenterlight] .po file issue with multiple definition fixed
|
||||
* [datacenterlight] Navbar items in dcl user area rearranged
|
||||
* [datacenterlight] Typos in german fixed (#3364)
|
||||
* [datacenterlight] Added "VAT included" text in calculator box
|
||||
1.0.15: 2017-06-14
|
||||
* [datacenterlight] Fixed error trying to delete ssh key
|
||||
* [datacenterlight] Fixed footer links
|
||||
|
@ -47,5 +60,4 @@
|
|||
* Initial stable release
|
||||
|
||||
Next:
|
||||
[datacenterlight] Fixed error trying to delete ssh key
|
||||
[datacenterlight] Fixed footer links
|
||||
[datacenterlight] Fixed credit card input issue
|
||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-06-13 13:41-0500\n"
|
||||
"POT-Creation-Date: 2017-06-15 23:57+0530\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -18,6 +18,14 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: templates/datacenterlight/base.html:72
|
||||
msgid "Please enter your name"
|
||||
msgstr "Bitte gib Deinen Namen ein"
|
||||
|
||||
#: templates/datacenterlight/base.html:73
|
||||
msgid "Please enter a valid email address"
|
||||
msgstr "Bitte gib eine gültige E-Mail-Adresse ein"
|
||||
|
||||
#: templates/datacenterlight/beta_access.html:13
|
||||
msgid "Enter name"
|
||||
msgstr "Name"
|
||||
|
@ -75,216 +83,36 @@ msgstr ""
|
|||
msgid "Thank you!"
|
||||
msgstr "Vielen Dank!"
|
||||
|
||||
#: templates/datacenterlight/home.html:15
|
||||
#: templates/datacenterlight/index.html:62
|
||||
#: templates/datacenterlight/index.html:160
|
||||
#: templates/datacenterlight/index.html:383
|
||||
#: templates/datacenterlight/order.html:24
|
||||
#: templates/datacenterlight/order.html:165
|
||||
#: templates/datacenterlight/pricing.html:62
|
||||
#: templates/datacenterlight/pricing.html:190
|
||||
#: templates/datacenterlight/success.html:23
|
||||
msgid "What is it"
|
||||
msgstr "Was ist es?"
|
||||
|
||||
#: templates/datacenterlight/index.html:65
|
||||
#: templates/datacenterlight/index.html:189
|
||||
#: templates/datacenterlight/index.html:386
|
||||
#: templates/datacenterlight/order.html:27
|
||||
#: templates/datacenterlight/order.html:168
|
||||
#: templates/datacenterlight/pricing.html:65
|
||||
#: templates/datacenterlight/pricing.html:193
|
||||
#: templates/datacenterlight/success.html:26
|
||||
msgid "Scale out"
|
||||
msgstr "Skalierung"
|
||||
|
||||
#: templates/datacenterlight/index.html:68
|
||||
#: templates/datacenterlight/index.html:215
|
||||
#: templates/datacenterlight/index.html:389
|
||||
#: templates/datacenterlight/order.html:30
|
||||
#: templates/datacenterlight/order.html:171
|
||||
#: templates/datacenterlight/pricing.html:68
|
||||
#: templates/datacenterlight/pricing.html:196
|
||||
#: templates/datacenterlight/success.html:29
|
||||
msgid "Reliable and light"
|
||||
msgstr "Zuverlässig und leicht"
|
||||
|
||||
#: templates/datacenterlight/index.html:71
|
||||
msgid "Order VM"
|
||||
msgstr "VM bestellen"
|
||||
|
||||
#: templates/datacenterlight/index.html:74
|
||||
#: templates/datacenterlight/index.html:396
|
||||
#: templates/datacenterlight/order.html:36
|
||||
#: templates/datacenterlight/order.html:178
|
||||
#: templates/datacenterlight/pricing.html:74
|
||||
#: templates/datacenterlight/pricing.html:203
|
||||
#: templates/datacenterlight/success.html:35
|
||||
msgid "Contact"
|
||||
msgstr "Kontakt"
|
||||
|
||||
#: templates/datacenterlight/index.html:127
|
||||
msgid "Finally, an affordable VM hosting in Switzerland!"
|
||||
msgstr "Endlich: bezahlbares VM Hosting in der Schweiz"
|
||||
|
||||
#: templates/datacenterlight/home.html:19
|
||||
msgid "What is it?"
|
||||
msgstr "Was ist es?"
|
||||
|
||||
#: templates/datacenterlight/home.html:22
|
||||
msgid "I want it!"
|
||||
msgstr "Das will ich haben!"
|
||||
|
||||
#: templates/datacenterlight/home.html:46
|
||||
#: templates/datacenterlight/includes/_footer.html:11
|
||||
#: templates/datacenterlight/includes/_footer.html:31
|
||||
#: templates/datacenterlight/includes/_navbar.html:26
|
||||
msgid "What is it"
|
||||
msgstr "Was ist es?"
|
||||
|
||||
#: templates/datacenterlight/home.html:49
|
||||
msgid "Our data center"
|
||||
msgstr "Unser Datacenter"
|
||||
|
||||
#: templates/datacenterlight/home.html:56
|
||||
msgid ""
|
||||
"Reuses existing factory halls instead of building a new expensive building."
|
||||
#: templates/datacenterlight/includes/_navbar.html:27
|
||||
#: templates/datacenterlight/index.html:20
|
||||
#: templates/datacenterlight/index.html:47
|
||||
msgid "Highlights"
|
||||
msgstr ""
|
||||
"Verwendet ehemalige Fabrikhallen anstatt ein neues, teures Gebäude zu "
|
||||
"errichten.
"
|
||||
|
||||
#: templates/datacenterlight/home.html:61
|
||||
msgid "Only wants you to pay for what you actually need."
|
||||
msgstr ""
|
||||
"Möchte, dass du nur bezahlst, was du auch wirklich brauchst: Wähle deine "
|
||||
"Ressourcen individuell aus!
"
|
||||
|
||||
#: templates/datacenterlight/home.html:65
|
||||
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."
|
||||
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/home.html:69
|
||||
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/home.html:89
|
||||
#: templates/datacenterlight/includes/_footer.html:14
|
||||
#: templates/datacenterlight/includes/_footer.html:34
|
||||
#: templates/datacenterlight/includes/_navbar.html:29
|
||||
#: templates/datacenterlight/includes/_navbar.html:30
|
||||
#: templates/datacenterlight/index.html:86
|
||||
msgid "Scale out"
|
||||
msgstr "Skalierung"
|
||||
|
||||
#: templates/datacenterlight/home.html:92
|
||||
msgid ""
|
||||
"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 "
|
||||
"called data center."
|
||||
msgstr ""
|
||||
"Wir benutzen keine spezielle Hardware, sondern am Markt verfügbare, "
|
||||
"erschwingliche Systeme. Bei grösserer Auslastung werden mehr Standard "
|
||||
"komponenten hinzugekauft und skalieren so das Datencenter."
|
||||
|
||||
#: templates/datacenterlight/home.html:115
|
||||
#: templates/datacenterlight/includes/_footer.html:17
|
||||
#: templates/datacenterlight/includes/_footer.html:37
|
||||
#: templates/datacenterlight/includes/_navbar.html:32
|
||||
#: templates/datacenterlight/includes/_navbar.html:33
|
||||
#: templates/datacenterlight/index.html:112
|
||||
msgid "Reliable and light"
|
||||
msgstr "Zuverlässig und leicht"
|
||||
|
||||
#: templates/datacenterlight/home.html:118
|
||||
msgid ""
|
||||
"Our VMs are located in Switzerland, with reliable power supply and fast "
|
||||
"internet connection. Our VM costs less thanks to our featherlight "
|
||||
"infrastructure."
|
||||
msgstr ""
|
||||
"Unser Datacenter befindet sich in der Schweiz und ist mit zuverlässiger "
|
||||
"Energieversorgung sowie schneller Internetverbindung ausgestattet. Unser "
|
||||
"Angebot ist aufgrund unserer leichten Infrastruktur überaus kostengünstig."
|
||||
|
||||
#: templates/datacenterlight/home.html:136
|
||||
#: templates/datacenterlight/order.html:9
|
||||
#: templates/datacenterlight/pricing.html:9
|
||||
msgid "We are cutting down the costs significantly!"
|
||||
msgstr "Wir sorgen dafür, dass die Kosten für Sie signifikant abnehmen"
|
||||
|
||||
#: templates/datacenterlight/index.html:236
|
||||
#: templates/datacenterlight/order.html:143
|
||||
#: templates/datacenterlight/pricing.html:168
|
||||
msgid "Simple and affordable: Try our virtual machine with featherlight price."
|
||||
msgstr ""
|
||||
"Einfach und bezahlbar: Teste nun unsere virtuellen Maschinen mit "
|
||||
"federleichten Preisen."
|
||||
|
||||
#: templates/datacenterlight/home.html:137
|
||||
msgid "Affordable VM hosting based in Switzerland"
|
||||
msgstr "Bezahlbares VM Hosting in der Schweiz"
|
||||
|
||||
#: templates/datacenterlight/home.html:144
|
||||
#: templates/datacenterlight/order.html:22
|
||||
#: templates/datacenterlight/pricing.html:22
|
||||
msgid "VM hosting"
|
||||
msgstr "VM Hosting"
|
||||
|
||||
#: templates/datacenterlight/home.html:151
|
||||
msgid "Based in Switzerland"
|
||||
msgstr "Standort des Datacenters ist in der Schweiz"
|
||||
|
||||
#: templates/datacenterlight/home.html:160
|
||||
msgid "10 GB Storage (SSD)"
|
||||
msgstr "10 GB Storage (SSD)"
|
||||
|
||||
#: templates/datacenterlight/index.html:289
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: templates/datacenterlight/index.html:290
|
||||
msgid "Your Name"
|
||||
msgstr "Dein Name"
|
||||
|
||||
#: templates/datacenterlight/index.html:293
|
||||
msgid "Email"
|
||||
msgstr "E-Mail-Adresse"
|
||||
|
||||
#: templates/datacenterlight/index.html:294
|
||||
msgid "Your Email"
|
||||
msgstr "Deine E-Mail"
|
||||
|
||||
#: templates/datacenterlight/index.html:297
|
||||
#: templates/datacenterlight/order.html:133
|
||||
#: templates/datacenterlight/pricing.html:161
|
||||
msgid "Order Now!"
|
||||
msgstr "Bestelle jetzt!"
|
||||
|
||||
#: templates/datacenterlight/home.html:186
|
||||
msgid "Switzerland "
|
||||
msgstr "Schweiz"
|
||||
|
||||
#: templates/datacenterlight/home.html:203
|
||||
msgid "Questions?"
|
||||
msgstr "Fragen?"
|
||||
|
||||
#: templates/datacenterlight/home.html:203
|
||||
msgid "Contact us!"
|
||||
msgstr "Kontaktiere uns!"
|
||||
|
||||
#: templates/datacenterlight/includes/_footer.html:20
|
||||
#: templates/datacenterlight/includes/_navbar.html:35
|
||||
#: templates/datacenterlight/includes/_navbar.html:36
|
||||
msgid "Order VM"
|
||||
msgstr "VM bestellen"
|
||||
|
||||
#: templates/datacenterlight/includes/_footer.html:23
|
||||
#: templates/datacenterlight/includes/_footer.html:44
|
||||
#: templates/datacenterlight/includes/_navbar.html:38
|
||||
#: templates/datacenterlight/includes/_navbar.html:39
|
||||
msgid "Contact"
|
||||
msgstr "Kontakt"
|
||||
|
||||
|
@ -296,105 +124,146 @@ msgstr "Home"
|
|||
msgid "Pricing"
|
||||
msgstr "Preise"
|
||||
|
||||
#: templates/datacenterlight/order.html:30
|
||||
#: templates/datacenterlight/pricing.html:30
|
||||
msgid "Hosted in Switzerland"
|
||||
msgstr "Standort des Datacenters ist in der Schweiz"
|
||||
#: templates/datacenterlight/index.html:16
|
||||
msgid "Finally, an affordable VM hosting in Switzerland!"
|
||||
msgstr "Endlich: bezahlbares VM Hosting in der Schweiz"
|
||||
|
||||
#: templates/datacenterlight/order.html:47
|
||||
#: templates/datacenterlight/pricing.html:47
|
||||
msgid "GB Storage (SSD)"
|
||||
msgstr "GB Storage (SSD)"
|
||||
#: templates/datacenterlight/index.html:23
|
||||
msgid "I want it!"
|
||||
msgstr "Das will ich haben!"
|
||||
|
||||
#: templates/datacenterlight/order.html:84
|
||||
#: templates/datacenterlight/pricing.html:83
|
||||
msgid "Simple and affordable: Try our virtual machine with featherlight price."
|
||||
#: templates/datacenterlight/index.html:53
|
||||
msgid ""
|
||||
"Reuses existing factory halls instead of building a new expensive building."
|
||||
msgstr ""
|
||||
"Einfach und bezahlbar: Testen Sie unsere virtuellen Maschinen mit "
|
||||
"federleichten Preisen"
|
||||
"Verwendet ehemalige Fabrikhallen anstatt ein neues, teures Gebäude zu "
|
||||
"errichten.
"
|
||||
|
||||
#: templates/datacenterlight/index.html:58
|
||||
msgid "Only wants you to pay for what you actually need."
|
||||
msgstr ""
|
||||
"Möchte, dass du nur bezahlst, was du auch wirklich brauchst: Wähle deine "
|
||||
"Ressourcen individuell aus!
"
|
||||
|
||||
#: templates/datacenterlight/index.html:62
|
||||
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."
|
||||
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:66
|
||||
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:89
|
||||
msgid ""
|
||||
"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 "
|
||||
"called data center."
|
||||
msgstr ""
|
||||
"Wir benutzen keine spezielle Hardware, sondern am Markt verfügbare, "
|
||||
"erschwingliche Systeme. Bei grösserer Auslastung werden mehr "
|
||||
"Standardkomponenten hinzugekauft und skalieren so das Datencenter."
|
||||
|
||||
#: templates/datacenterlight/index.html:115
|
||||
msgid ""
|
||||
"Our VMs are located in Switzerland, with reliable power supply and fast "
|
||||
"internet connection. Our VM costs less thanks to our featherlight "
|
||||
"infrastructure."
|
||||
msgstr ""
|
||||
"Unser Datacenter befindet sich in der Schweiz und ist mit zuverlässiger "
|
||||
"Energieversorgung, sowie schneller Internetverbindung ausgestattet. Unser "
|
||||
"Angebot ist aufgrund unserer leichten Infrastruktur überaus kostengünstig."
|
||||
|
||||
#: templates/datacenterlight/index.html:133
|
||||
#: templates/datacenterlight/order.html:87
|
||||
#: templates/datacenterlight/pricing.html:86
|
||||
#: templates/datacenterlight/index.html:248
|
||||
#: templates/datacenterlight/order.html:81
|
||||
#: templates/datacenterlight/pricing.html:119
|
||||
msgid "Simple and affordable: Try our virtual machine with featherlight price."
|
||||
msgstr ""
|
||||
"Einfach und bezahlbar: Teste nun unsere virtuellen Maschinen mit "
|
||||
"federleichten Preisen."
|
||||
|
||||
#: templates/datacenterlight/index.html:134
|
||||
msgid "Affordable VM hosting based in Switzerland"
|
||||
msgstr "Bezahlbares VM Hosting in der Schweiz"
|
||||
|
||||
#: templates/datacenterlight/index.html:145
|
||||
#: templates/datacenterlight/order.html:22
|
||||
#: templates/datacenterlight/pricing.html:22
|
||||
msgid "VM hosting"
|
||||
msgstr "VM Hosting"
|
||||
msgstr ""
|
||||
|
||||
|
||||
#: templates/datacenterlight/index.html:252
|
||||
#: templates/datacenterlight/index.html:149
|
||||
msgid "month"
|
||||
msgstr "Monat"
|
||||
|
||||
#: templates/datacenterlight/index.html:256
|
||||
#: templates/datacenterlight/order.html:89
|
||||
#: templates/datacenterlight/pricing.html:127
|
||||
msgid "Hosted in Switzerland"
|
||||
msgstr "Standort des Datacenters ist in der Schweiz"
|
||||
#: templates/datacenterlight/index.html:151
|
||||
#: templates/datacenterlight/order.html:28
|
||||
#: templates/datacenterlight/pricing.html:28
|
||||
msgid "VAT included"
|
||||
msgstr "MwSt. inklusive"
|
||||
|
||||
#: templates/datacenterlight/index.html:273
|
||||
#: templates/datacenterlight/order.html:106
|
||||
#: templates/datacenterlight/pricing.html:144
|
||||
#: templates/datacenterlight/index.html:156
|
||||
#: templates/datacenterlight/order.html:33
|
||||
#: templates/datacenterlight/pricing.html:33
|
||||
msgid "Hosted in Switzerland"
|
||||
msgstr "Standort: Schweiz"
|
||||
|
||||
#: templates/datacenterlight/index.html:173
|
||||
#: templates/datacenterlight/order.html:50
|
||||
#: templates/datacenterlight/pricing.html:50
|
||||
msgid "GB Storage (SSD)"
|
||||
msgstr "GB Storage (SSD)"
|
||||
|
||||
#: templates/datacenterlight/index.html:297
|
||||
#: templates/datacenterlight/order.html:133
|
||||
#: templates/datacenterlight/pricing.html:161
|
||||
#: templates/datacenterlight/index.html:189
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: templates/datacenterlight/index.html:190
|
||||
msgid "Your Name"
|
||||
msgstr "Dein Name"
|
||||
|
||||
#: templates/datacenterlight/index.html:193
|
||||
msgid "Email"
|
||||
msgstr "E-Mail-Adresse"
|
||||
|
||||
#: templates/datacenterlight/index.html:194
|
||||
msgid "Your Email"
|
||||
msgstr "Deine E-Mail"
|
||||
|
||||
#: templates/datacenterlight/index.html:197
|
||||
#: templates/datacenterlight/order.html:77
|
||||
#: templates/datacenterlight/pricing.html:79
|
||||
msgid "Order Now!"
|
||||
msgstr "Bestelle jetzt!"
|
||||
|
||||
#: templates/datacenterlight/index.html:302
|
||||
msgid "Want to know more? Subscribe to our newsletter!"
|
||||
msgstr "Willst du mehr wissen? Abonniere unseren Newsletter!"
|
||||
|
||||
#: templates/datacenterlight/index.html:364
|
||||
#: templates/datacenterlight/index.html:279
|
||||
#: templates/datacenterlight/index.html:317
|
||||
msgid "I want to have it!"
|
||||
msgstr "Das möchte ich haben!"
|
||||
|
||||
#: templates/datacenterlight/index.html:344
|
||||
#: templates/datacenterlight/index.html:226
|
||||
msgid "Switzerland "
|
||||
msgstr "Schweiz"
|
||||
|
||||
#: templates/datacenterlight/index.html:361
|
||||
#: templates/datacenterlight/index.html:243
|
||||
msgid "Questions?"
|
||||
msgstr "Fragen?"
|
||||
|
||||
#: templates/datacenterlight/index.html:361
|
||||
#: templates/datacenterlight/index.html:243
|
||||
msgid "Contact us!"
|
||||
msgstr "Kontaktiere uns!"
|
||||
|
||||
#: templates/datacenterlight/index.html:379
|
||||
#: templates/datacenterlight/order.html:161
|
||||
#: templates/datacenterlight/pricing.html:186
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#: templates/datacenterlight/index.html:377
|
||||
#: templates/datacenterlight/index.html:354
|
||||
#: templates/datacenterlight/new-order.html:212
|
||||
#: templates/datacenterlight/order.html:212
|
||||
#: templates/datacenterlight/index.html:392
|
||||
#: templates/datacenterlight/order.html:174
|
||||
#: templates/datacenterlight/pricing.html:199
|
||||
msgid "Pricing"
|
||||
msgstr "Preise"
|
||||
|
||||
#: templates/datacenterlight/order.html:33
|
||||
#: templates/datacenterlight/pricing.html:71
|
||||
#: templates/datacenterlight/success.html:32
|
||||
msgid "Buy VM"
|
||||
msgstr "VM Kaufen"
|
||||
|
||||
#: templates/datacenterlight/order.html:68
|
||||
#: templates/datacenterlight/pricing.html:106
|
||||
#: templates/datacenterlight/order.html:9
|
||||
#: templates/datacenterlight/pricing.html:9
|
||||
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 Dich signifikant abnehmen"
|
||||
|
||||
#: templates/datacenterlight/order.html:146
|
||||
#: templates/datacenterlight/pricing.html:171
|
||||
#: templates/datacenterlight/order.html:90
|
||||
#: templates/datacenterlight/pricing.html:89
|
||||
msgid ""
|
||||
"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 "
|
||||
|
@ -411,7 +280,6 @@ msgstr ""
|
|||
"Anliegen kümmern!"
|
||||
|
||||
#: templates/datacenterlight/success.html:8
|
||||
#: templates/datacenterlight/success.html:62
|
||||
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 "
|
||||
|
@ -421,8 +289,17 @@ msgstr ""
|
|||
msgid "as soon as possible!"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "month"
|
||||
#~ msgstr "Monat"
|
||||
#~ msgid "Buy VM"
|
||||
#~ msgstr "VM Kaufen"
|
||||
|
||||
#~ msgid "Our data center"
|
||||
#~ msgstr "Unser Datacenter"
|
||||
|
||||
#~ msgid "Based in Switzerland"
|
||||
#~ msgstr "Starndort: Schweiz"
|
||||
|
||||
#~ msgid "10 GB Storage (SSD)"
|
||||
#~ msgstr "10 GB Storage (SSD)"
|
||||
|
||||
#~ msgid "Want to know more? Subscribe to our newsletter!"
|
||||
#~ msgstr "Willst du mehr wissen? Abonniere unseren Newsletter!"
|
||||
|
@ -430,9 +307,6 @@ msgstr ""
|
|||
#~ msgid "I want to have it!"
|
||||
#~ msgstr "Das möchte ich haben!"
|
||||
|
||||
#~ msgid "Buy VM"
|
||||
#~ msgstr "VM Kaufen"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Reuse existing factory halls intead of building an expensive building."
|
||||
#~ msgstr ""
|
||||
|
@ -453,24 +327,6 @@ msgstr ""
|
|||
#~ msgid "More Info"
|
||||
#~ msgstr "Weitere Informationen"
|
||||
|
||||
#~ msgid "Want to know more? Subscribe to our newsletter!"
|
||||
#~ msgstr "Willst du mehr wissen? Abonniere unseren Newsletter!"
|
||||
|
||||
#~ msgid "I want to have it!"
|
||||
#~ msgstr "Das möchte ich haben!"
|
||||
|
||||
#~ msgid "Buy VM"
|
||||
#~ msgstr "VM Kaufen"
|
||||
#: templates/datacenterlight/success.html:64
|
||||
msgid "as soon as possible!"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Based in Switzerland"
|
||||
#~ msgstr "Standort des Datacenters ist in der Schweiz"
|
||||
|
||||
#~ msgid "10 GB Storage (SSD)"
|
||||
#~ msgstr "10 GB Storage (SSD)"
|
||||
|
||||
#~ msgid "Request Newsletter"
|
||||
#~ msgstr "Newsletter abonnieren"
|
||||
|
||||
|
|
|
@ -641,6 +641,9 @@ h6 {
|
|||
color: #fff;
|
||||
font-size: 32px;
|
||||
}
|
||||
.price-calc-section .card .price .price-text{
|
||||
font-size: 14px;
|
||||
}
|
||||
.price-calc-section .card .description{
|
||||
padding: 12px;
|
||||
border-bottom: 1px solid rgba(128, 128, 128, 0.3);
|
||||
|
|
|
@ -69,6 +69,8 @@
|
|||
ignore: []
|
||||
});
|
||||
|
||||
var name_message = "{% trans 'Please enter your name' %}";
|
||||
var email_message = "{% trans 'Please enter a valid email address' %}";
|
||||
$('#order_form').validate({
|
||||
wrapper: 'div',
|
||||
errorLabelContainer: "#error_message_box",
|
||||
|
@ -83,8 +85,8 @@
|
|||
}
|
||||
},
|
||||
messages: {
|
||||
name: "Please enter your name",
|
||||
email: "Please enter a valid email address"
|
||||
name: name_message,
|
||||
email: email_message
|
||||
},
|
||||
submitHandler: function (form) {
|
||||
return true;
|
||||
|
|
|
@ -0,0 +1,129 @@
|
|||
{% 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">
|
||||
Datacenterlight user activation
|
||||
</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>
|
||||
You can activate your datacenterlight account by <a href="{{base_url}}{{activation_link}}">clicking here</a>.</br></br>
|
||||
You can also copy and paste the following link into the address bar of your browser and follow the link in order to activate your datacenterlight account.</br>
|
||||
{{base_url}}{{activation_link}}
|
||||
</p></td>
|
||||
</tr>
|
||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||
<td class="button" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 0;" align="center"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
|
||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 9px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||
</td>
|
||||
</tr></table>
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
{% 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">
|
||||
Datacenterlight user activation
|
||||
</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>
|
||||
You can activate your datacenterlight account by <a href="{{base_url}}{{activation_link}}">clicking here</a>.</br></br>
|
||||
You can also copy and paste the following link into the address bar of your browser and follow the link in order to activate your datacenterlight account.</br>
|
||||
{{base_url}}{{activation_link}}
|
||||
</p></td>
|
||||
</tr>
|
||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||
<td class="button" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 0;" align="center"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
|
||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 9px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||
</td>
|
||||
</tr></table>
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,212 +0,0 @@
|
|||
{% extends "datacenterlight/base.html" %}
|
||||
{% load staticfiles i18n%}
|
||||
{% get_current_language as LANGUAGE_CODE %}
|
||||
|
||||
{% block content %}
|
||||
<!-- Header -->
|
||||
<div class="intro-header" id="home">
|
||||
<div class="container">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
|
||||
<div class="intro-message">
|
||||
<h1>DataCenterLight</h1>
|
||||
<h3>{% trans "Finally, an affordable VM hosting in Switzerland!" %}</h3>
|
||||
<hr class="intro-divider">
|
||||
<ul class="list-inline intro-social-buttons">
|
||||
<li>
|
||||
<a class="btn btn-default btn-lg btn-transparent url" href="javascript:void(0)" data-url="#how" ><i class="#Services"></i> <span class="network-name">{% trans "What is it?" %}</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-lg page-scroll url" href="javascript:void(0)" data-url="#request" ><span class="network-name">{% trans "I want it!" %}</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- /.container -->
|
||||
|
||||
</div>
|
||||
<!-- /.intro-header -->
|
||||
|
||||
<!-- Page Content -->
|
||||
<div class="split-section right what" id="how">
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6 col-md-6 icon-section">
|
||||
<i class="fa fa-cogs" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
<div class="split-text">
|
||||
<div class="split-title">
|
||||
<h2>{% trans "What is it" %}</h2>
|
||||
</div>
|
||||
<div class="split-description title">
|
||||
<p class="lead">{% trans "Our data center" %}</p>
|
||||
|
||||
</div>
|
||||
<div class="split-description">
|
||||
<ul class="fa-ul">
|
||||
<li>
|
||||
<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>
|
||||
<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>
|
||||
</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>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.container -->
|
||||
<!-- /.option 1 -->
|
||||
</div>
|
||||
|
||||
<div class="split-section left" id="your">
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
<div class="split-text">
|
||||
<div class="split-title">
|
||||
<h2>{% trans "Scale out" %}</h2>
|
||||
</div>
|
||||
<div class="split-description">
|
||||
<p class="lead">{% trans "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 called data center." %}</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-6 icon-section">
|
||||
<i class="fa fa-rocket" aria-hidden="true"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.container -->
|
||||
<!-- /.option 1 -->
|
||||
</div>
|
||||
<div class="split-section right" id="our">
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6 col-md-6 icon-section">
|
||||
<i class="fa fa-handshake-o" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
<div class="split-text">
|
||||
<div class="split-title">
|
||||
<h2>{% trans "Reliable and light" %}</h2>
|
||||
</div>
|
||||
<div class="split-description">
|
||||
<p class="lead">{% trans "Our VMs are located in Switzerland, with reliable power supply and fast internet connection. Our VM costs less thanks to our featherlight infrastructure." %}</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.container -->
|
||||
<!-- /.option 1 -->
|
||||
</div>
|
||||
|
||||
<!-- /.content-section-b -->
|
||||
<div class="content-section-a pricing-section" id="price">
|
||||
|
||||
<div class="container">
|
||||
<!-- Page Features -->
|
||||
<div class="row text-center">
|
||||
<div class="col-xs-12 col-md-6 text">
|
||||
<h2 class="section-heading">{% trans "We are cutting down the costs significantly!" %}</h2>
|
||||
<p class="lead">{% trans "Affordable VM hosting based in Switzerland" %}</p>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-md-6 hero-feature">
|
||||
<div class="card">
|
||||
<div class="caption">
|
||||
<div class="title">
|
||||
<h3>{% trans "VM hosting" %} </h3>
|
||||
</div>
|
||||
<div class="price">
|
||||
<span>15 CHF/month</span>
|
||||
</div>
|
||||
<div class="descriptions">
|
||||
<div class="description">
|
||||
<p>{% trans "Based in Switzerland" %}</p>
|
||||
</div>
|
||||
<div class="description">
|
||||
<p>1 Core, </p>
|
||||
</div>
|
||||
<div class="description">
|
||||
<p>2 GB RAM, </p>
|
||||
</div>
|
||||
<div class="description">
|
||||
<p>{% trans "10 GB Storage (SSD)" %}</p>
|
||||
</div>
|
||||
</div>
|
||||
<a href="{% url 'datacenterlight:order' %}" class="btn btn-primary">{% trans "Order Now!" %}</a>
|
||||
</div>
|
||||
<img class="img-beta" src="{% static 'datacenterlight/img/beta-img.png' %}" alt="">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="full-contact-section">
|
||||
<div class="intro-header-2 contact-section" id="contact">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-6 col-md-6">
|
||||
<div class="card">
|
||||
<div class="subtitle">
|
||||
<h3>ungleich GmbH </h3>
|
||||
</div>
|
||||
<div class="description">
|
||||
<p><i class="fa fa-envelope-o"></i> info@datacenterlight.ch</p>
|
||||
<p>In der Au 7, Schwanden 8762</p>
|
||||
<p>{% trans "Switzerland " %}</p>
|
||||
</div>
|
||||
<div class="social">
|
||||
<a target="_blank" class="" href="https://twitter.com/datacenterlight">
|
||||
<i class="fa fa-twitter fa-fw"></i>
|
||||
</a>
|
||||
<a target="_blank" class="" href="https://github.com/ungleich">
|
||||
<i class="fa fa-github fa-fw"></i>
|
||||
</a>
|
||||
<a target="_blank" class="" href="https://www.facebook.com/ungleich.ch/">
|
||||
<i class="fa fa-facebook fa-fw"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6">
|
||||
<div class="title">
|
||||
<h2>{% trans "Questions?" %} {% trans "Contact us!" %}</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -8,7 +8,7 @@
|
|||
<ul class="list-inline">
|
||||
{% if request.resolver_match.url_name == "index" %}
|
||||
<li>
|
||||
<a class="url" href="javascript:void(0)" data-url="#how" >{% trans "What is it" %}</a>
|
||||
<a class="url" href="javascript:void(0)" data-url="#how" >{% trans "Highlights" %}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="url" href="javascript:void(0)" data-url="#your" >{% trans "Scale out" %}</a>
|
||||
|
@ -28,7 +28,7 @@
|
|||
</li>
|
||||
<li class="footer-menu-divider">⋅</li>
|
||||
<li>
|
||||
<a href="{% url 'datacenterlight:index' %}#how">{% trans "What is it" %}</a></li>
|
||||
<a href="{% url 'datacenterlight:index' %}#how">{% trans "Highlights" %}</a></li>
|
||||
<li class="footer-menu-divider">⋅</li>
|
||||
<li>
|
||||
<a href="{% url 'datacenterlight:index' %}#your">{% trans "Scale out" %}</a></li>
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<ul class="nav navbar-nav navbar-right">
|
||||
{% if request.resolver_match.url_name == "index" %}
|
||||
<li>
|
||||
<a class="url" href="javascript:void(0)" data-url="#how" >{% trans "What is it" %}</a>
|
||||
<a class="url" href="javascript:void(0)" data-url="#how" >{% trans "Highlights" %}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="url" href="javascript:void(0)" data-url="#your" >{% trans "Scale out" %}</a>
|
||||
|
|
|
@ -12,12 +12,12 @@
|
|||
<div class="col-lg-12">
|
||||
|
||||
<div class="intro-message">
|
||||
<h1>DataCenterLight</h1>
|
||||
<h1>Data Center Light</h1>
|
||||
<h3>{% trans "Finally, an affordable VM hosting in Switzerland!" %}</h3>
|
||||
<hr class="intro-divider">
|
||||
<ul class="list-inline intro-social-buttons">
|
||||
<li>
|
||||
<a class="btn btn-default btn-lg btn-transparent url" href="javascript:void(0)" data-url="#how" ><i class="#Services"></i> <span class="network-name">{% trans "What is it?" %}</span></a>
|
||||
<a class="btn btn-default btn-lg btn-transparent url" href="javascript:void(0)" data-url="#how" ><i class="#Services"></i> <span class="network-name">{% trans "Highlights" %}</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-lg page-scroll url" href="javascript:void(0)" data-url="#price" ><span class="network-name">{% trans "I want it!" %}</span></a>
|
||||
|
@ -28,8 +28,6 @@
|
|||
</div>
|
||||
|
||||
</div>
|
||||
<div class="triangle-left"></div>
|
||||
<div class="triangle-right"></div>
|
||||
<!-- /.container -->
|
||||
|
||||
</div>
|
||||
|
@ -46,7 +44,7 @@
|
|||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
<div class="split-text">
|
||||
<div class="split-title">
|
||||
<h2>{% trans "What is it" %}</h2>
|
||||
<h2>{% trans "Highlights" %}</h2>
|
||||
</div>
|
||||
<div class="split-description">
|
||||
<ul class="fa-ul">
|
||||
|
@ -149,6 +147,9 @@
|
|||
<div class="price">
|
||||
<span id="total">15</span>
|
||||
<span>CHF/{% trans "month" %}</span>
|
||||
<div class="price-text">
|
||||
<p>{% trans "VAT included" %}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="descriptions">
|
||||
<div class="description">
|
||||
|
@ -207,25 +208,7 @@
|
|||
</div>
|
||||
|
||||
</div>
|
||||
<!-- Configure -->
|
||||
<!-- <div class="request-section" id="request">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-6 col-md-6">
|
||||
<div class="title">
|
||||
<h2>{% trans "I want to have it!" %}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6">
|
||||
<!-- Beta access form, will be loaded via ajax
|
||||
<div class="form" id="beta_access_form">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div> -->
|
||||
<!-- /.content-section-a -->
|
||||
<!-- / contact section -->
|
||||
<div class="full-contact-section">
|
||||
<div class="intro-header-2 contact-section" id="contact">
|
||||
|
|
|
@ -1,95 +0,0 @@
|
|||
{% extends "datacenterlight/base.html" %}
|
||||
{% load staticfiles i18n %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="intro-pricing">
|
||||
|
||||
<div class="intro-message">
|
||||
<h2 class="section-heading">{% trans "We are cutting down the costs significantly!" %}</h2>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="price-calc-section">
|
||||
<div class="card">
|
||||
<img class="img-beta" src="{% static 'datacenterlight/img/beta-img.png' %}" alt="">
|
||||
<div class="caption">
|
||||
<form id="order_form" method="POST" action="">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="title">
|
||||
<h3>{% trans "VM hosting" %} </h3>
|
||||
</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 class="description select-configuration input">
|
||||
<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>
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
||||
</html>
|
|
@ -24,6 +24,9 @@
|
|||
<div class="price">
|
||||
<span id="total">15</span>
|
||||
<span>CHF</span>
|
||||
<div class="price-text">
|
||||
<p>{% trans "VAT included" %}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="descriptions">
|
||||
<div class="description">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from django.conf.urls import url
|
||||
|
||||
from .views import IndexView, BetaProgramView, LandingProgramView, BetaAccessView, PricingView, SuccessView, OrderView
|
||||
from .views import IndexView, BetaProgramView, LandingProgramView, BetaAccessView, PricingView, SuccessView
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
|
@ -8,7 +8,6 @@ urlpatterns = [
|
|||
url(r'^/beta-program/?$', BetaProgramView.as_view(), name='beta'),
|
||||
url(r'^/landing/?$', LandingProgramView.as_view(), name='landing'),
|
||||
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'),
|
||||
]
|
||||
|
|
|
@ -70,78 +70,6 @@ class PricingView(TemplateView):
|
|||
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'))
|
||||
|
||||
context = {
|
||||
'name': name,
|
||||
'email': email,
|
||||
'cores': cores,
|
||||
'memory': memory,
|
||||
'storage': storage,
|
||||
'price': price,
|
||||
'template': template_data['name'],
|
||||
}
|
||||
email_data = {
|
||||
'subject': "Data Center Light Order from %s" % context['email'],
|
||||
'from_address': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>',
|
||||
'to': 'info@ungleich.ch',
|
||||
'context': context,
|
||||
'template_name': 'new_order_notification',
|
||||
'template_path': 'datacenterlight/emails/'
|
||||
}
|
||||
email = EmailMessage(**email_data)
|
||||
email.send()
|
||||
|
||||
return HttpResponseRedirect(reverse('datacenterlight:order_success'))
|
||||
|
||||
|
||||
class BetaAccessView(FormView):
|
||||
template_name = "datacenterlight/beta_access.html"
|
||||
form_class = BetaAccessForm
|
||||
|
@ -277,13 +205,13 @@ class IndexView(CreateView):
|
|||
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'))
|
||||
return HttpResponseRedirect(reverse('datacenterlight:index'))
|
||||
|
||||
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'))
|
||||
return HttpResponseRedirect(reverse('datacenterlight:index'))
|
||||
|
||||
context = {
|
||||
'name': name,
|
||||
|
|
|
@ -24,6 +24,8 @@ class HostingUserLoginForm(forms.Form):
|
|||
is_auth = authenticate(email=email, password=password)
|
||||
if not is_auth:
|
||||
raise forms.ValidationError("Your username and/or password were incorrect.")
|
||||
elif is_auth.validated == 0:
|
||||
raise forms.ValidationError(_("Your account is not activated yet."))
|
||||
return self.cleaned_data
|
||||
|
||||
def clean_email(self):
|
||||
|
|
Binary file not shown.
|
@ -318,6 +318,17 @@ h6 {
|
|||
padding: 15px 20px 0 20px;
|
||||
}
|
||||
|
||||
.sign-up-message {
|
||||
padding: 25px 30px 25px 30px;
|
||||
text-align: justify;
|
||||
font-size: 18px;
|
||||
line-height: 30px;
|
||||
}
|
||||
.sign-up-message a {
|
||||
font-size: 18px;
|
||||
color: #1e94cc !important;
|
||||
}
|
||||
|
||||
@media (max-width: 1199px) {
|
||||
ul.banner-social-buttons {
|
||||
float: left;
|
||||
|
|
|
@ -9,13 +9,11 @@
|
|||
|
||||
$(document).ready(function(){
|
||||
_initOs();
|
||||
_ifOverflow();
|
||||
|
||||
});
|
||||
|
||||
$(window).resize(function(){
|
||||
|
||||
_ifOverflow();
|
||||
|
||||
});
|
||||
|
||||
|
@ -67,20 +65,6 @@
|
|||
}
|
||||
});
|
||||
}
|
||||
function _ifOverflow(){
|
||||
|
||||
var dcContainer= document.getElementById('dcContainer');
|
||||
var containerOs= document.getElementById('containerOs');
|
||||
console.log('d-c', dcContainer.offsetWidth-20);
|
||||
console.log('d-os', containerOs.scrollWidth);
|
||||
|
||||
if(dcContainer.offsetWidth-20 < containerOs.scrollWidth){
|
||||
console.log('oooVerrflowwww');
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -57,14 +57,11 @@
|
|||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand topnav" href="{{ request.session.hosting_url}}"><img src="{% static 'hosting/img/logo_black.svg' %}"></a>
|
||||
<a class="navbar-brand topnav" href="{{ request.session.hosting_url}}"><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a>
|
||||
</div>
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
|
||||
|
||||
|
||||
<li>
|
||||
<a href="{% url 'hosting:virtual_machines' %}">
|
||||
<i class="fa fa-server" aria-hidden="true"></i> {% trans "My Virtual Machines"%}
|
||||
|
@ -75,22 +72,21 @@
|
|||
<i class="fa fa-credit-card"></i> {% trans "My Orders"%}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="{% url 'hosting:notifications' %}">
|
||||
<i class="fa fa-bell"></i> {% trans "Notifications "%}
|
||||
</a>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" role="button" data-toggle="dropdown" href="#">
|
||||
<i class="glyphicon glyphicon-user"></i> {{request.user.name}} <span class="caret"></span></a>
|
||||
<ul id="g-account-menu" class="dropdown-menu" role="menu">
|
||||
<li>
|
||||
<a href="{% url 'hosting:ssh_keys' %}">
|
||||
<i class="fa fa-key"></i> {% trans "Keys"%}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{% url 'hosting:notifications' %}">
|
||||
<i class="fa fa-bell"></i> {% trans "Notifications "%}
|
||||
</a>
|
||||
</li>
|
||||
<li><a href="{% url 'hosting:logout' %}"><i class="glyphicon glyphicon-lock"></i>{% trans "Logout"%} </a></li>
|
||||
<li>
|
||||
<a href="{% url 'hosting:ssh_keys' %}">
|
||||
<i class="fa fa-key"></i> {% trans "Keys"%}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<!--
|
||||
|
|
|
@ -49,8 +49,8 @@
|
|||
<tr>
|
||||
<td>{{ vm.name }}</td>
|
||||
<td><span class="pull-right">{{ vm.cores }}</span></td>
|
||||
<td><span class="pull-right">{{ vm.memory|floatformat }} GiB </span></td>
|
||||
<td><span class="pull-right">{{ vm.disk_size|floatformat }} GiB </span></td>
|
||||
<td><span class="pull-right">{{ vm.memory|floatformat }} GB </span></td>
|
||||
<td><span class="pull-right">{{ vm.disk_size|floatformat }} GB </span></td>
|
||||
<td><span class="pull-right">{{ vm.price|floatformat }} CHF</span></td>
|
||||
|
||||
</tr>
|
||||
|
|
|
@ -42,14 +42,14 @@
|
|||
<li>
|
||||
<div class="form-group">
|
||||
<div class="btn-group">
|
||||
<label for="memory">Memory: {{vm.memory}} GiB</label>
|
||||
<label for="memory">Memory: {{vm.memory}} GB</label>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="form-group row">
|
||||
<div class="col-xs-offset-1 col-xs-9 col-sm-12 col-md-12 col-md-offset-0">
|
||||
<label for="Disk Size">Disk Size: {{vm.disk_size}} GiB</label>
|
||||
<label for="Disk Size">Disk Size: {{vm.disk_size}} GB</label>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
|
|
@ -4,6 +4,19 @@
|
|||
{% block content %}
|
||||
|
||||
<div class="order-detail-container">
|
||||
{% if messages %}
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-8 col-md-offset-2">
|
||||
<br/>
|
||||
<div class="alert alert-warning">
|
||||
{% for message in messages %}
|
||||
<span>{{ message }}</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if not error %}
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-8 col-md-offset-2">
|
||||
<div class="invoice-title">
|
||||
|
@ -51,9 +64,9 @@
|
|||
<div class="content">
|
||||
<p><b>{% trans "Cores"%}</b> <span class="pull-right">{{vm.cores}}</span></p>
|
||||
<hr>
|
||||
<p><b>{% trans "Memory"%}</b> <span class="pull-right">{{vm.memory}} GiB</span></p>
|
||||
<p><b>{% trans "Memory"%}</b> <span class="pull-right">{{vm.memory}} GB</span></p>
|
||||
<hr>
|
||||
<p><b>{% trans "Disk space"%}</b> <span class="pull-right">{{vm.disk_size}} GiB</span></p>
|
||||
<p><b>{% trans "Disk space"%}</b> <span class="pull-right">{{vm.disk_size}} GB</span></p>
|
||||
<hr>
|
||||
<h4>{% trans "Total"%}<p class="pull-right"><b>{{vm.price}} CHF</b></p></h4>
|
||||
</div>
|
||||
|
@ -66,5 +79,6 @@
|
|||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{%endblock%}
|
||||
|
|
|
@ -33,9 +33,8 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-default"><a
|
||||
<a class="btn btn-default"
|
||||
href="{% url 'hosting:orders' order.id %}">{% trans "View Detail"%}</a>
|
||||
</button>
|
||||
<button type="button" class="btn btn-default" data-toggle="modal"
|
||||
data-target="#Modal{{ order.id }}"><a
|
||||
href="#">{% trans "Cancel Order"%}</a>
|
||||
|
|
|
@ -18,10 +18,10 @@
|
|||
class="pull-right">{{request.session.specs.cpu|floatformat}}</span></p>
|
||||
<hr>
|
||||
<p><b>{%trans "Memory"%}</b> <span
|
||||
class="pull-right">{{request.session.specs.memory|floatformat}} GiB</span></p>
|
||||
class="pull-right">{{request.session.specs.memory|floatformat}} GB</span></p>
|
||||
<hr>
|
||||
<p><b>{%trans "Disk space"%}</b> <span
|
||||
class="pull-right">{{request.session.specs.disk_size|floatformat}} GiB</span></p>
|
||||
class="pull-right">{{request.session.specs.disk_size|floatformat}} GB</span></p>
|
||||
<hr>
|
||||
<h4>Total<p
|
||||
class="pull-right"><b>{{request.session.specs.price }} CHF</b></p></h4>
|
||||
|
|
21
hosting/templates/hosting/signup_validate.html
Normal file
21
hosting/templates/hosting/signup_validate.html
Normal file
|
@ -0,0 +1,21 @@
|
|||
{% extends "hosting/base_short.html" %}
|
||||
{% load staticfiles bootstrap3 i18n %}
|
||||
|
||||
{% block content %}
|
||||
<div class="auth-container">
|
||||
<div class="auth-bg"></div>
|
||||
<div class="auth-center">
|
||||
<div class="auth-title">
|
||||
<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">{{section_title}}</h2>
|
||||
<div class="sign-up-message">
|
||||
{{message}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -80,14 +80,14 @@
|
|||
<div class="col-md-3">
|
||||
<div class="well text-center box-setting">
|
||||
<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}} GB</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="well text-center box-setting">
|
||||
<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}} GB</span>
|
||||
</div>
|
||||
</div>
|
||||
</div><!--/row-->
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from django.conf.urls import url
|
||||
|
||||
from .views import DjangoHostingView, RailsHostingView, PaymentVMView,\
|
||||
NodeJSHostingView, LoginView, SignupView, IndexView, \
|
||||
NodeJSHostingView, LoginView, SignupView, SignupValidateView, SignupValidatedView, IndexView, \
|
||||
OrdersHostingListView, OrdersHostingDetailView, VirtualMachinesPlanListView,\
|
||||
VirtualMachineView, OrdersHostingDeleteView, NotificationsView, \
|
||||
MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, HostingPricingView,\
|
||||
|
@ -35,9 +35,11 @@ urlpatterns = [
|
|||
name='read_notification'),
|
||||
url(r'login/?$', LoginView.as_view(), name='login'),
|
||||
url(r'signup/?$', SignupView.as_view(), name='signup'),
|
||||
url(r'signup-validate/?$', SignupValidateView.as_view(), name='signup-validate'),
|
||||
url(r'reset-password/?$', PasswordResetView.as_view(), name='reset_password'),
|
||||
url(r'reset-password-confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
|
||||
PasswordResetConfirmView.as_view(), name='reset_password_confirm'),
|
||||
url(r'^logout/?$', 'django.contrib.auth.views.logout',
|
||||
{'next_page': '/hosting/login?logged_out=true'}, name='logout')
|
||||
{'next_page': '/hosting/login?logged_out=true'}, name='logout'),
|
||||
url(r'^validate/(?P<validate_slug>.*)/$', SignupValidatedView.as_view(), name='validate')
|
||||
]
|
||||
|
|
|
@ -18,7 +18,7 @@ from guardian.mixins import PermissionRequiredMixin
|
|||
from stored_messages.settings import stored_messages_settings
|
||||
from stored_messages.models import Message
|
||||
from stored_messages.api import mark_read
|
||||
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
from membership.models import CustomUser, StripeCustomer
|
||||
from utils.stripe_utils import StripeUtils
|
||||
|
@ -32,10 +32,11 @@ from .mixins import ProcessVMSelectionMixin
|
|||
from opennebula_api.models import OpenNebulaManager
|
||||
from opennebula_api.serializers import VirtualMachineSerializer,\
|
||||
VirtualMachineTemplateSerializer
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
from oca.exceptions import OpenNebulaException
|
||||
from oca.pool import WrongNameError
|
||||
from oca.pool import WrongNameError, WrongIdError
|
||||
|
||||
CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a backend \
|
||||
connection error. please try again in a few minutes."
|
||||
|
@ -199,15 +200,43 @@ class SignupView(CreateView):
|
|||
name = form.cleaned_data.get('name')
|
||||
email = form.cleaned_data.get('email')
|
||||
password = form.cleaned_data.get('password')
|
||||
this_base_url = "{0}://{1}".format(self.request.scheme, self.request.get_host())
|
||||
CustomUser.register(name, password, email, app='dcl', base_url=this_base_url)
|
||||
|
||||
CustomUser.register(name, password, email)
|
||||
auth_user = authenticate(email=email, password=password)
|
||||
login(self.request, auth_user)
|
||||
return HttpResponseRedirect(reverse_lazy('hosting:signup-validate'))
|
||||
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
class SignupValidateView(TemplateView):
|
||||
template_name = "hosting/signup_validate.html"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(SignupValidateView, self).get_context_data(**kwargs)
|
||||
login_url = reverse('hosting:login')
|
||||
message= _("Thank you for signing up. We have sent an email to you. Please follow the instructions in it to activate your account. Once activated, you can login using ") + '<a href="' + login_url +'">login</a>'
|
||||
section_title='Sign up'
|
||||
context['message'] = mark_safe(message)
|
||||
context['section_title'] = section_title
|
||||
return context
|
||||
|
||||
class SignupValidatedView(SignupValidateView):
|
||||
template_name = "hosting/signup_validate.html"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(SignupValidateView, self).get_context_data(**kwargs)
|
||||
validated = CustomUser.validate_url(self.kwargs['validate_slug'])
|
||||
login_url = reverse('hosting:login')
|
||||
if validated:
|
||||
message= _("Your account has been activated. You can now ") + '<a href="' + login_url +'">login</a>'
|
||||
section_title=_('Account activation')
|
||||
else:
|
||||
message= _("Sorry. Your request is invalid.") + '<a href="' + login_url +'">login</a>'
|
||||
section_title=_('Account activation')
|
||||
context['message'] = mark_safe(message)
|
||||
context['section_title'] = section_title
|
||||
return context
|
||||
|
||||
|
||||
class PasswordResetView(PasswordResetViewMixin):
|
||||
site = 'dcl'
|
||||
template_name = 'hosting/reset_password.html'
|
||||
form_class = PasswordResetRequestForm
|
||||
success_url = reverse_lazy('hosting:login')
|
||||
|
@ -583,8 +612,15 @@ class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin, Detai
|
|||
try:
|
||||
vm = manager.get_vm(obj.vm_id)
|
||||
context['vm'] = VirtualMachineSerializer(vm).data
|
||||
except WrongIdError:
|
||||
messages.error(self.request,
|
||||
'The VM you are looking for is unavailable at the moment. \
|
||||
Please contact Data Center Light support.'
|
||||
)
|
||||
self.kwargs['error'] = 'WrongIdError'
|
||||
context['error'] = 'WrongIdError'
|
||||
except ConnectionRefusedError:
|
||||
messages.error(request,
|
||||
messages.error(self.request,
|
||||
'In order to create a VM, you need to create/upload your SSH KEY first.'
|
||||
)
|
||||
return context
|
||||
|
@ -706,6 +742,12 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
|||
try:
|
||||
vm = manager.get_vm(vm_id)
|
||||
return vm
|
||||
except WrongIdError:
|
||||
messages.error(self.request,
|
||||
_('We could not find the requested VM. Please \
|
||||
contact Data Center Light Support.')
|
||||
)
|
||||
return None
|
||||
except ConnectionRefusedError:
|
||||
messages.error(self.request,
|
||||
'We could not load your VM due to a backend connection \
|
||||
|
@ -722,6 +764,8 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
|||
|
||||
def get(self, request, *args, **kwargs):
|
||||
vm = self.get_object()
|
||||
if vm is None:
|
||||
return redirect(reverse('hosting:virtual_machines'))
|
||||
try:
|
||||
serializer = VirtualMachineSerializer(vm)
|
||||
context = {
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
from datetime import datetime
|
||||
|
||||
|
||||
|
||||
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.contrib.auth.models import User, AbstractBaseUser, BaseUserManager, AbstractUser, PermissionsMixin
|
||||
|
@ -13,6 +9,8 @@ from django.contrib.sites.models import Site
|
|||
|
||||
from utils.stripe_utils import StripeUtils
|
||||
from utils.mailer import DigitalGlarusRegistrationMailer
|
||||
from django.core.urlresolvers import reverse
|
||||
from utils.mailer import BaseEmail
|
||||
|
||||
REGISTRATION_MESSAGE = {'subject': "Validation mail",
|
||||
'message': 'Please validate Your account under this link http://localhost:8000/en-us/digitalglarus/login/validate/{}',
|
||||
|
@ -75,13 +73,27 @@ class CustomUser(AbstractBaseUser, PermissionsMixin):
|
|||
REQUIRED_FIELDS = ['name', 'password']
|
||||
|
||||
@classmethod
|
||||
def register(cls, name, password, email):
|
||||
def register(cls, name, password, email, app='digital_glarus', base_url=None):
|
||||
user = cls.objects.filter(email=email).first()
|
||||
if not user:
|
||||
user = cls.objects.create_user(name=name, email=email, password=password)
|
||||
if user:
|
||||
dg = DigitalGlarusRegistrationMailer(user.validation_slug)
|
||||
dg.send_mail(to=user.email)
|
||||
if app == 'digital_glarus':
|
||||
dg = DigitalGlarusRegistrationMailer(user.validation_slug)
|
||||
dg.send_mail(to=user.email)
|
||||
elif app == 'dcl':
|
||||
user.is_active = False
|
||||
email_data = {
|
||||
'subject': _('Activate your Data Center Light account'),
|
||||
'from_address': '(Data Center Light) Data Center Light Support <support@datacenterlight.ch>',
|
||||
'to': user.email,
|
||||
'context': {'base_url' : base_url,
|
||||
'activation_link' : reverse('hosting:validate', kwargs={'validate_slug': user.validation_slug})},
|
||||
'template_name': 'user_activation',
|
||||
'template_path': 'datacenterlight/emails/'
|
||||
}
|
||||
email = BaseEmail(**email_data)
|
||||
email.send()
|
||||
return user
|
||||
else:
|
||||
return None
|
||||
|
|
|
@ -2,7 +2,7 @@ import oca
|
|||
import socket
|
||||
import logging
|
||||
|
||||
from oca.pool import WrongNameError
|
||||
from oca.pool import WrongNameError, WrongIdError
|
||||
from oca.exceptions import OpenNebulaException
|
||||
|
||||
from django.conf import settings
|
||||
|
@ -204,6 +204,8 @@ class OpenNebulaManager():
|
|||
try:
|
||||
vm_pool = self._get_vm_pool()
|
||||
return vm_pool.get_by_id(vm_id)
|
||||
except WrongIdError:
|
||||
raise WrongIdError
|
||||
except:
|
||||
raise ConnectionRefusedError
|
||||
|
||||
|
@ -449,7 +451,6 @@ class OpenNebulaManager():
|
|||
"""
|
||||
# TODO: Check if we can remove this first try because we basically just
|
||||
# raise the possible Errors
|
||||
|
||||
try:
|
||||
open_user = self._get_user(user)
|
||||
try:
|
||||
|
|
|
@ -65,6 +65,8 @@ class LoginViewMixin(FormView):
|
|||
class PasswordResetViewMixin(FormView):
|
||||
# template_name = 'hosting/reset_password.html'
|
||||
# form_class = PasswordResetRequestForm
|
||||
success_message = "The link to reset your email has been sent to your email"
|
||||
site = ''
|
||||
success_message = "Thank you! You will shortly receive a password reset mail from us"
|
||||
# success_url = reverse_lazy('hosting:login')
|
||||
|
||||
|
@ -94,6 +96,8 @@ class PasswordResetViewMixin(FormView):
|
|||
'template_name': 'password_reset_email',
|
||||
'template_path': self.template_email_path
|
||||
}
|
||||
if self.site == 'dcl':
|
||||
email_data['from_address'] = '(Data Center Light) Data Center Light Support <support@datacenterlight.ch>'
|
||||
email = BaseEmail(**email_data)
|
||||
email.send()
|
||||
|
||||
|
|
Loading…
Reference in a new issue