master merged
This commit is contained in:
		
				commit
				
					
						5cea467deb
					
				
			
		
					 34 changed files with 1260 additions and 677 deletions
				
			
		| 
						 | 
					@ -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-07-24 18:51+0300\n"
 | 
					"POT-Creation-Date: 2017-08-03 03:10+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 +18,18 @@ 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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/beta_access.html:13
 | 
					 | 
				
			||||||
msgid "Enter name"
 | 
					msgid "Enter name"
 | 
				
			||||||
msgstr "Name"
 | 
					msgstr "Name"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/beta_access.html:17
 | 
					 | 
				
			||||||
msgid "Enter email"
 | 
					msgid "Enter email"
 | 
				
			||||||
msgstr "E-Mail-Adresse"
 | 
					msgstr "E-Mail-Adresse"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/beta_access.html:21
 | 
					 | 
				
			||||||
msgid "Request Beta Access"
 | 
					msgid "Request Beta Access"
 | 
				
			||||||
msgstr "Beantrage Beta-Zugang"
 | 
					msgstr "Beantrage Beta-Zugang"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/beta_success.html:10
 | 
					 | 
				
			||||||
msgid "Request Sent"
 | 
					msgid "Request Sent"
 | 
				
			||||||
msgstr "Anfrage verschickt"
 | 
					msgstr "Anfrage verschickt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/beta_success.html:13
 | 
					 | 
				
			||||||
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,91 +37,64 @@ 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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:5
 | 
					 | 
				
			||||||
#: templates/datacenterlight/pricing.html:22
 | 
					 | 
				
			||||||
msgid "VM hosting"
 | 
					msgid "VM hosting"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:9
 | 
					 | 
				
			||||||
msgid "month"
 | 
					msgid "month"
 | 
				
			||||||
msgstr "Monat"
 | 
					msgstr "Monat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:11
 | 
					 | 
				
			||||||
#: templates/datacenterlight/pricing.html:28
 | 
					 | 
				
			||||||
msgid "VAT included"
 | 
					msgid "VAT included"
 | 
				
			||||||
msgstr "MwSt. inklusive"
 | 
					msgstr "MwSt. inklusive"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:16
 | 
					 | 
				
			||||||
#: templates/datacenterlight/pricing.html:33
 | 
					 | 
				
			||||||
msgid "Hosted in Switzerland"
 | 
					msgid "Hosted in Switzerland"
 | 
				
			||||||
msgstr "Standort: Schweiz"
 | 
					msgstr "Standort: Schweiz"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:21
 | 
					 | 
				
			||||||
msgid "Please enter a value in range 1 - 48."
 | 
					msgid "Please enter a value in range 1 - 48."
 | 
				
			||||||
msgstr "Bitte gib einen Wert von 1 bis 48 ein."
 | 
					msgstr "Bitte gib einen Wert von 1 bis 48 ein."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:30
 | 
					 | 
				
			||||||
msgid "Please enter a value in range 2 - 200."
 | 
					msgid "Please enter a value in range 2 - 200."
 | 
				
			||||||
msgstr "Bitte gib einen Wert von 2 bis 200 ein."
 | 
					msgstr "Bitte gib einen Wert von 2 bis 200 ein."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:39
 | 
					 | 
				
			||||||
msgid "Please enter a value in range 10 - 2000."
 | 
					msgid "Please enter a value in range 10 - 2000."
 | 
				
			||||||
msgstr "Bitte gib einen Wert von 10 bis 200 ein."
 | 
					msgstr "Bitte gib einen Wert von 10 bis 200 ein."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:40
 | 
					 | 
				
			||||||
#: templates/datacenterlight/pricing.html:50
 | 
					 | 
				
			||||||
msgid "GB Storage (SSD)"
 | 
					msgid "GB Storage (SSD)"
 | 
				
			||||||
msgstr "GB Storage (SSD)"
 | 
					msgstr "GB Storage (SSD)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:59
 | 
					 | 
				
			||||||
msgid "Name"
 | 
					msgid "Name"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:60
 | 
					 | 
				
			||||||
msgid "Your Name"
 | 
					msgid "Your Name"
 | 
				
			||||||
msgstr "Dein Name"
 | 
					msgstr "Dein Name"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:60
 | 
					 | 
				
			||||||
msgid "Please enter your name."
 | 
					msgid "Please enter your name."
 | 
				
			||||||
msgstr "Bitte gib Deinen Namen ein."
 | 
					msgstr "Bitte gib Deinen Namen ein."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:74
 | 
					 | 
				
			||||||
msgid "Email"
 | 
					msgid "Email"
 | 
				
			||||||
msgstr "E-Mail-Adresse"
 | 
					msgstr "E-Mail-Adresse"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:75
 | 
					 | 
				
			||||||
msgid "Your Email"
 | 
					msgid "Your Email"
 | 
				
			||||||
msgstr "Deine E-Mail"
 | 
					msgstr "Deine E-Mail"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:75
 | 
					 | 
				
			||||||
msgid "Please enter a valid email address."
 | 
					msgid "Please enter a valid email address."
 | 
				
			||||||
msgstr "Bitte gib eine gültige E-Mailadresse ein."
 | 
					msgstr "Bitte gib eine gültige E-Mailadresse ein."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/calculator_form.html:88
 | 
					 | 
				
			||||||
msgid "Continue"
 | 
					msgid "Continue"
 | 
				
			||||||
msgstr "Weiter"
 | 
					msgstr "Weiter"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/emails/request_access_confirmation.html: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."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/emails/request_access_confirmation.html: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!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/emails/request_access_confirmation.html: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."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/emails/request_access_confirmation.html: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."
 | 
				
			||||||
| 
						 | 
					@ -134,17 +102,12 @@ 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."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/emails/request_access_confirmation.html:107
 | 
					 | 
				
			||||||
#: templates/datacenterlight/emails/request_access_confirmation.txt:107
 | 
					 | 
				
			||||||
msgid "Thank you!"
 | 
					msgid "Thank you!"
 | 
				
			||||||
msgstr "Vielen Dank!"
 | 
					msgstr "Vielen Dank!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/emails/user_activation.html:99
 | 
					 | 
				
			||||||
#: templates/datacenterlight/emails/user_activation.txt:3
 | 
					 | 
				
			||||||
msgid "account activation"
 | 
					msgid "account activation"
 | 
				
			||||||
msgstr "Accountaktivierung"
 | 
					msgstr "Accountaktivierung"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/emails/user_activation.html:105
 | 
					 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"\n"
 | 
					"\n"
 | 
				
			||||||
| 
						 | 
					@ -165,17 +128,12 @@ msgstr ""
 | 
				
			||||||
"                %(base_url)s%(activation_link)s\n"
 | 
					"                %(base_url)s%(activation_link)s\n"
 | 
				
			||||||
"                "
 | 
					"                "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/emails/user_activation.html:123
 | 
					 | 
				
			||||||
#: templates/datacenterlight/emails/user_activation.txt:11
 | 
					 | 
				
			||||||
msgid "Your"
 | 
					msgid "Your"
 | 
				
			||||||
msgstr "Dein"
 | 
					msgstr "Dein"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/emails/user_activation.html:123
 | 
					 | 
				
			||||||
#: templates/datacenterlight/emails/user_activation.txt:11
 | 
					 | 
				
			||||||
msgid "team"
 | 
					msgid "team"
 | 
				
			||||||
msgstr "Team"
 | 
					msgstr "Team"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/emails/user_activation.txt:5
 | 
					 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"\n"
 | 
					"\n"
 | 
				
			||||||
| 
						 | 
					@ -190,75 +148,50 @@ msgstr ""
 | 
				
			||||||
"Du kannst deinen %(dcl_text)s Account aktivieren, indem du hier klickst "
 | 
					"Du kannst deinen %(dcl_text)s Account aktivieren, indem du hier klickst "
 | 
				
			||||||
"%(base_url)s%(activation_link)s\n"
 | 
					"%(base_url)s%(activation_link)s\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/includes/_footer.html:11
 | 
					 | 
				
			||||||
#: templates/datacenterlight/includes/_footer.html:31
 | 
					 | 
				
			||||||
#: templates/datacenterlight/includes/_navbar.html:27
 | 
					 | 
				
			||||||
#: templates/datacenterlight/includes/_navbar.html:28
 | 
					 | 
				
			||||||
#: templates/datacenterlight/index.html:19
 | 
					 | 
				
			||||||
#: templates/datacenterlight/index.html:46
 | 
					 | 
				
			||||||
msgid "Highlights"
 | 
					msgid "Highlights"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/includes/_footer.html:14
 | 
					 | 
				
			||||||
#: templates/datacenterlight/includes/_footer.html:34
 | 
					 | 
				
			||||||
#: templates/datacenterlight/includes/_navbar.html:30
 | 
					 | 
				
			||||||
#: templates/datacenterlight/index.html:85
 | 
					 | 
				
			||||||
msgid "Scale out"
 | 
					msgid "Scale out"
 | 
				
			||||||
msgstr "Skalierung"
 | 
					msgstr "Skalierung"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/includes/_footer.html:17
 | 
					 | 
				
			||||||
#: templates/datacenterlight/includes/_footer.html:37
 | 
					 | 
				
			||||||
#: templates/datacenterlight/includes/_navbar.html:31
 | 
					 | 
				
			||||||
#: templates/datacenterlight/index.html:111
 | 
					 | 
				
			||||||
msgid "Reliable and light"
 | 
					msgid "Reliable and light"
 | 
				
			||||||
msgstr "Zuverlässig und leicht"
 | 
					msgstr "Zuverlässig und leicht"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/includes/_footer.html:20
 | 
					 | 
				
			||||||
#: templates/datacenterlight/includes/_navbar.html:32
 | 
					 | 
				
			||||||
msgid "Order VM"
 | 
					msgid "Order VM"
 | 
				
			||||||
msgstr "VM bestellen"
 | 
					msgstr "VM bestellen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/includes/_footer.html:23
 | 
					 | 
				
			||||||
#: templates/datacenterlight/includes/_footer.html:44
 | 
					 | 
				
			||||||
#: templates/datacenterlight/includes/_navbar.html:39
 | 
					 | 
				
			||||||
msgid "Contact"
 | 
					msgid "Contact"
 | 
				
			||||||
msgstr "Kontakt"
 | 
					msgstr "Kontakt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/includes/_footer.html:27
 | 
					 | 
				
			||||||
msgid "Home"
 | 
					msgid "Home"
 | 
				
			||||||
msgstr "Home"
 | 
					msgstr "Home"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/includes/_footer.html:40
 | 
					 | 
				
			||||||
msgid "Pricing"
 | 
					msgid "Pricing"
 | 
				
			||||||
msgstr "Preise"
 | 
					msgstr "Preise"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/includes/_navbar.html:36
 | 
					msgid "All Rights Reserved"
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:12
 | 
					msgstr "Alle Rechte vorbehalten"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Why Data Center Light?"
 | 
					msgid "Why Data Center Light?"
 | 
				
			||||||
msgstr "Warum Data Center Light?"
 | 
					msgstr "Warum Data Center Light?"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:15
 | 
					 | 
				
			||||||
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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:22
 | 
					 | 
				
			||||||
msgid "I want it!"
 | 
					msgid "I want it!"
 | 
				
			||||||
msgstr "Das will ich haben!"
 | 
					msgstr "Das will ich haben!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:52
 | 
					 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"Reuses existing factory halls instead of building a new expensive building."
 | 
					"Reuses existing factory halls instead of building a new expensive building."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Verwendet ehemalige Fabrikhallen anstatt ein neues, teures Gebäude zu "
 | 
					"Verwendet ehemalige Fabrikhallen anstatt ein neues, teures Gebäude zu "
 | 
				
			||||||
"errichten.
"
 | 
					"errichten.
"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:57
 | 
					 | 
				
			||||||
msgid "Only wants you to pay for what you actually need."
 | 
					msgid "Only wants you to pay for what you actually need."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Möchte, dass du nur bezahlst, was du auch wirklich brauchst: Wähle deine "
 | 
					"Möchte, dass du nur bezahlst, was du auch wirklich brauchst: Wähle deine "
 | 
				
			||||||
"Ressourcen individuell aus!
"
 | 
					"Ressourcen individuell aus!
"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:61
 | 
					 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"Is creative, using a modern and alternative design for a data center in "
 | 
					"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."
 | 
					"order to make it more sustainable and affordable at the same time."
 | 
				
			||||||
| 
						 | 
					@ -267,7 +200,6 @@ msgstr ""
 | 
				
			||||||
"macht um Nachhaltigkeit zu fördern und somit erschwingliche Preise bieten zu "
 | 
					"macht um Nachhaltigkeit zu fördern und somit erschwingliche Preise bieten zu "
 | 
				
			||||||
"können.
"
 | 
					"können.
"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:65
 | 
					 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"Cuts down the costs for you by using FOSS (Free Open Source Software) "
 | 
					"Cuts down the costs for you by using FOSS (Free Open Source Software) "
 | 
				
			||||||
"exclusively, wherefore we can save money from paying licenses."
 | 
					"exclusively, wherefore we can save money from paying licenses."
 | 
				
			||||||
| 
						 | 
					@ -276,7 +208,6 @@ msgstr ""
 | 
				
			||||||
"mit FOSS (Free Open Source Software) arbeitet und wir daher auf "
 | 
					"mit FOSS (Free Open Source Software) arbeitet und wir daher auf "
 | 
				
			||||||
"Lizenzgebühren verzichten können.
"
 | 
					"Lizenzgebühren verzichten können.
"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:88
 | 
					 | 
				
			||||||
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 "
 | 
				
			||||||
| 
						 | 
					@ -286,7 +217,6 @@ msgstr ""
 | 
				
			||||||
"erschwingliche Systeme. Bei grösserer Auslastung werden mehr "
 | 
					"erschwingliche Systeme. Bei grösserer Auslastung werden mehr "
 | 
				
			||||||
"Standardkomponenten hinzugekauft und skalieren so das Datencenter."
 | 
					"Standardkomponenten hinzugekauft und skalieren so das Datencenter."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:114
 | 
					 | 
				
			||||||
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 "
 | 
				
			||||||
| 
						 | 
					@ -296,86 +226,65 @@ 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."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:132
 | 
					 | 
				
			||||||
#: templates/datacenterlight/pricing.html:86
 | 
					 | 
				
			||||||
msgid "Simple and affordable: Try our virtual machine with featherlight price."
 | 
					msgid "Simple and affordable: Try our virtual machine with featherlight price."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Einfach und bezahlbar: Teste nun unsere virtuellen Maschinen mit "
 | 
					"Einfach und bezahlbar: Teste nun unsere virtuellen Maschinen mit "
 | 
				
			||||||
"federleichten Preisen."
 | 
					"federleichten Preisen."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:133
 | 
					 | 
				
			||||||
msgid "Affordable VM hosting based in Switzerland"
 | 
					msgid "Affordable VM hosting based in Switzerland"
 | 
				
			||||||
msgstr "Bezahlbares VM Hosting in der Schweiz"
 | 
					msgstr "Bezahlbares VM Hosting in der Schweiz"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:166
 | 
					 | 
				
			||||||
msgid "Switzerland "
 | 
					msgid "Switzerland "
 | 
				
			||||||
msgstr "Schweiz"
 | 
					msgstr "Schweiz"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:183
 | 
					 | 
				
			||||||
msgid "Questions?"
 | 
					msgid "Questions?"
 | 
				
			||||||
msgstr "Fragen?"
 | 
					msgstr "Fragen?"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/index.html:183
 | 
					 | 
				
			||||||
msgid "Contact us!"
 | 
					msgid "Contact us!"
 | 
				
			||||||
msgstr "Kontaktiere uns!"
 | 
					msgstr "Kontaktiere uns!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/order_detail.html:24
 | 
					 | 
				
			||||||
msgid "Confirm Order"
 | 
					msgid "Confirm Order"
 | 
				
			||||||
msgstr "Bestellung Bestätigen"
 | 
					msgstr "Bestellung Bestätigen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/order_detail.html:30
 | 
					 | 
				
			||||||
msgid "Date"
 | 
					msgid "Date"
 | 
				
			||||||
msgstr "Datum"
 | 
					msgstr "Datum"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/order_detail.html:36
 | 
					 | 
				
			||||||
msgid "Billed To:"
 | 
					msgid "Billed To:"
 | 
				
			||||||
msgstr "Rechnungsadresse"
 | 
					msgstr "Rechnungsadresse"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/order_detail.html:47
 | 
					 | 
				
			||||||
msgid "Payment Method:"
 | 
					msgid "Payment Method:"
 | 
				
			||||||
msgstr "Bezahlmethode"
 | 
					msgstr "Bezahlmethode"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/order_detail.html:48
 | 
					 | 
				
			||||||
msgid "ending"
 | 
					msgid "ending"
 | 
				
			||||||
msgstr "endend in"
 | 
					msgstr "endend in"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/order_detail.html:58
 | 
					 | 
				
			||||||
msgid "Order summary"
 | 
					msgid "Order summary"
 | 
				
			||||||
msgstr "Bestellungsübersicht"
 | 
					msgstr "Bestellungsübersicht"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/order_detail.html:62
 | 
					 | 
				
			||||||
msgid "Cores"
 | 
					msgid "Cores"
 | 
				
			||||||
msgstr "Prozessorkerne"
 | 
					msgstr "Prozessorkerne"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/order_detail.html:64
 | 
					 | 
				
			||||||
msgid "Memory"
 | 
					msgid "Memory"
 | 
				
			||||||
msgstr "Arbeitsspeicher"
 | 
					msgstr "Arbeitsspeicher"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/order_detail.html:66
 | 
					 | 
				
			||||||
msgid "Disk space"
 | 
					msgid "Disk space"
 | 
				
			||||||
msgstr "Festplattenkapazität"
 | 
					msgstr "Festplattenkapazität"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/order_detail.html:68
 | 
					 | 
				
			||||||
msgid "Configuration"
 | 
					msgid "Configuration"
 | 
				
			||||||
msgstr "Konfiguration"
 | 
					msgstr "Konfiguration"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/order_detail.html:70
 | 
					 | 
				
			||||||
msgid "Total"
 | 
					msgid "Total"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/order_detail.html:77
 | 
					 | 
				
			||||||
msgid "Place order"
 | 
					msgid "Place order"
 | 
				
			||||||
msgstr "Bestellen"
 | 
					msgstr "Bestellen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/pricing.html:9
 | 
					 | 
				
			||||||
msgid "We are cutting down the costs significantly!"
 | 
					msgid "We are cutting down the costs significantly!"
 | 
				
			||||||
msgstr "Wir sorgen dafür, dass die Kosten für Dich signifikant abnehmen"
 | 
					msgstr "Wir sorgen dafür, dass die Kosten für Dich signifikant abnehmen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/pricing.html:79
 | 
					 | 
				
			||||||
msgid "Order Now!"
 | 
					msgid "Order Now!"
 | 
				
			||||||
msgstr "Bestelle jetzt!"
 | 
					msgstr "Bestelle jetzt!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/pricing.html:89
 | 
					 | 
				
			||||||
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 "
 | 
				
			||||||
| 
						 | 
					@ -391,25 +300,20 @@ 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:8
 | 
					 | 
				
			||||||
msgid "Thank you for order! Our team will contact you via email"
 | 
					msgid "Thank you for order! Our team will contact you via email"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Vielen Dank für die Bestellung. Unser Team setzt sich sobald wie möglich mit "
 | 
					"Vielen Dank für die Bestellung. Unser Team setzt sich sobald wie möglich mit "
 | 
				
			||||||
"Ihnen via E-Mail in Verbindung."
 | 
					"Ihnen via E-Mail in Verbindung."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/success.html:10
 | 
					 | 
				
			||||||
msgid "as soon as possible!"
 | 
					msgid "as soon as possible!"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:26
 | 
					 | 
				
			||||||
msgid "Tech Stack"
 | 
					msgid "Tech Stack"
 | 
				
			||||||
msgstr "Tech Stack"
 | 
					msgstr "Tech Stack"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:29
 | 
					 | 
				
			||||||
msgid "We are seriously open source."
 | 
					msgid "We are seriously open source."
 | 
				
			||||||
msgstr "Wir sind vollends opensource."
 | 
					msgstr "Wir sind vollends opensource."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:30
 | 
					 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
" Our full software stack is open source – We don't use anything that isn't "
 | 
					" Our full software stack is open source – We don't use anything that isn't "
 | 
				
			||||||
"open source. <br>Yes, we are that cool. "
 | 
					"open source. <br>Yes, we are that cool. "
 | 
				
			||||||
| 
						 | 
					@ -417,43 +321,33 @@ msgstr ""
 | 
				
			||||||
"Unser gesamter Softwaresstack ist Open-Source – Wir verwenden nichts, das "
 | 
					"Unser gesamter Softwaresstack ist Open-Source – Wir verwenden nichts, das "
 | 
				
			||||||
"nicht Open-Source ist.<br/>Yep, so cool sind wir."
 | 
					"nicht Open-Source ist.<br/>Yep, so cool sind wir."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:37
 | 
					 | 
				
			||||||
msgid "Our services run on"
 | 
					msgid "Our services run on"
 | 
				
			||||||
msgstr "Unsere Dienste läuft auf"
 | 
					msgstr "Unsere Dienste läuft auf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:41
 | 
					 | 
				
			||||||
msgid "Our monitoring"
 | 
					msgid "Our monitoring"
 | 
				
			||||||
msgstr "Unser Monitoring"
 | 
					msgstr "Unser Monitoring"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:45
 | 
					 | 
				
			||||||
msgid "Our storage layer"
 | 
					msgid "Our storage layer"
 | 
				
			||||||
msgstr "Unser Storage-Layer"
 | 
					msgstr "Unser Storage-Layer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:49
 | 
					 | 
				
			||||||
msgid "Our web frontend"
 | 
					msgid "Our web frontend"
 | 
				
			||||||
msgstr "Unser Web-Frontend"
 | 
					msgstr "Unser Web-Frontend"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:53
 | 
					 | 
				
			||||||
msgid "Our cloud"
 | 
					msgid "Our cloud"
 | 
				
			||||||
msgstr "Unsere Cloud"
 | 
					msgstr "Unsere Cloud"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:57
 | 
					 | 
				
			||||||
msgid "Our configuration management system"
 | 
					msgid "Our configuration management system"
 | 
				
			||||||
msgstr "Unser Konfigurationsmanagementsystem"
 | 
					msgstr "Unser Konfigurationsmanagementsystem"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:61
 | 
					 | 
				
			||||||
msgid "Our awesome juice"
 | 
					msgid "Our awesome juice"
 | 
				
			||||||
msgstr "Unser Treibstoff"
 | 
					msgstr "Unser Treibstoff"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:65
 | 
					 | 
				
			||||||
msgid "Our NAT64 gateway"
 | 
					msgid "Our NAT64 gateway"
 | 
				
			||||||
msgstr "Unser NAT64 Gateway"
 | 
					msgstr "Unser NAT64 Gateway"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:90
 | 
					 | 
				
			||||||
msgid "We believe in giving back to the FOSS community."
 | 
					msgid "We believe in giving back to the FOSS community."
 | 
				
			||||||
msgstr "Wir unterstützen die FOSS Community."
 | 
					msgstr "Wir unterstützen die FOSS Community."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:91
 | 
					 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"Data Center Light is the child of free and open source software (FOSS) "
 | 
					"Data Center Light is the child of free and open source software (FOSS) "
 | 
				
			||||||
"movement. <br>We grew up with it, live by it, and believe in it.<br> The "
 | 
					"movement. <br>We grew up with it, live by it, and believe in it.<br> The "
 | 
				
			||||||
| 
						 | 
					@ -465,22 +359,18 @@ msgstr ""
 | 
				
			||||||
"<br/> Je weiter wir mit unserem Data Center Light vorankommen, desto mehr "
 | 
					"<br/> Je weiter wir mit unserem Data Center Light vorankommen, desto mehr "
 | 
				
			||||||
"können wir etwas an die FOSS Community zurückgeben."
 | 
					"können wir etwas an die FOSS Community zurückgeben."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:104
 | 
					 | 
				
			||||||
msgid "We bring the future to you."
 | 
					msgid "We bring the future to you."
 | 
				
			||||||
msgstr "Wir bringen die Zukunft zu dir."
 | 
					msgstr "Wir bringen die Zukunft zu dir."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:107
 | 
					 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
" Data Center Light uses the most modern technologies out there.<br>\n"
 | 
					"Data Center Light uses the most modern technologies out there.<br>Your VM "
 | 
				
			||||||
"                            Your VM needs only IPv6. Data Center Light "
 | 
					"needs only IPv6. Data Center Light provides<br> transparent two-way IPv6/"
 | 
				
			||||||
"provides<br> transparent two-way IPv6/IPv4 translation.\n"
 | 
					"IPv4 translation."
 | 
				
			||||||
"                            "
 | 
					 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Data Center Light verwendet die zur Zeit modernsten Technologien.<br/>Deine "
 | 
					"Data Center Light verwendet die zur Zeit modernsten Technologien.<br/>Deine "
 | 
				
			||||||
"VM läuft mit IPv6. Data Center Light bietet eine transparente IPv6/IPv4-"
 | 
					"VM läuft mit IPv6. Data Center Light bietet eine transparente IPv6/IPv4-"
 | 
				
			||||||
"Zweiweglösung."
 | 
					"Zweiweglösung."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:122
 | 
					 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
" No more spinning metal plates! Data Center Light uses only SSDs. We keep "
 | 
					" No more spinning metal plates! Data Center Light uses only SSDs. We keep "
 | 
				
			||||||
"things faster and lighter. "
 | 
					"things faster and lighter. "
 | 
				
			||||||
| 
						 | 
					@ -488,19 +378,24 @@ msgstr ""
 | 
				
			||||||
"Keine drehenden Metallplatten mehr! Data Center Light verwendet "
 | 
					"Keine drehenden Metallplatten mehr! Data Center Light verwendet "
 | 
				
			||||||
"ausschliesslich SSDs. Wir halten die Dinge schnell, leicht und effizient."
 | 
					"ausschliesslich SSDs. Wir halten die Dinge schnell, leicht und effizient."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:138
 | 
					 | 
				
			||||||
msgid "Starting from only 15CHF per month. Try now."
 | 
					msgid "Starting from only 15CHF per month. Try now."
 | 
				
			||||||
msgstr "Unser Angebot beginnt bei 15 CHF pro Monat. Probier's jetzt aus!"
 | 
					msgstr "Unser Angebot beginnt bei 15 CHF pro Monat. Probier's jetzt aus!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/datacenterlight/whydatacenterlight.html:139
 | 
					 | 
				
			||||||
msgid "Actions speak louder than words. Let's do it, try our VM now."
 | 
					msgid "Actions speak louder than words. Let's do it, try our VM now."
 | 
				
			||||||
msgstr "Tagen sagen mehr als Worte – Teste jetzt unsere VM!"
 | 
					msgstr "Tagen sagen mehr als Worte – Teste jetzt unsere VM!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: views.py:235
 | 
					msgid "Invalid number of cores"
 | 
				
			||||||
 | 
					msgstr "Ungültige Anzahle CPU-Kerne"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Invalid RAM size"
 | 
				
			||||||
 | 
					msgstr "Ungültige RAM-Grösse"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Invalid storage size"
 | 
				
			||||||
 | 
					msgstr "Ungültige Speicher-Grösse"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "is not a proper name"
 | 
					msgid "is not a proper name"
 | 
				
			||||||
msgstr "ist kein gültiger Name"
 | 
					msgstr "ist kein gültiger Name"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: views.py:242
 | 
					 | 
				
			||||||
msgid "is not a proper email"
 | 
					msgid "is not a proper email"
 | 
				
			||||||
msgstr "ist keine gültige E-Mailadresse"
 | 
					msgstr "ist keine gültige E-Mailadresse"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										23
									
								
								datacenterlight/migrations/0006_vmtemplate.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								datacenterlight/migrations/0006_vmtemplate.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2017-08-02 20:22
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('datacenterlight', '0005_betaaccess_name'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.CreateModel(
 | 
				
			||||||
 | 
					            name='VMTemplate',
 | 
				
			||||||
 | 
					            fields=[
 | 
				
			||||||
 | 
					                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 | 
				
			||||||
 | 
					                ('name', models.CharField(max_length=50)),
 | 
				
			||||||
 | 
					                ('opennebula_vm_template_id', models.IntegerField()),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -45,6 +45,12 @@ h6 {
 | 
				
			||||||
    font-weight: 400;
 | 
					    font-weight: 400;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@media (min-width: 768px) {
 | 
				
			||||||
 | 
					    .lead-right {
 | 
				
			||||||
 | 
					        text-align: right;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.btn {
 | 
					.btn {
 | 
				
			||||||
    box-shadow: 0 1px 4px rgba(0, 0, 0, .6);
 | 
					    box-shadow: 0 1px 4px rgba(0, 0, 0, .6);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -786,6 +792,7 @@ tech-sub-sec h2 {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.percent-text {
 | 
					.percent-text {
 | 
				
			||||||
 | 
					    font-family: 'Lato', sans-serif;
 | 
				
			||||||
    font-size: 50px;
 | 
					    font-size: 50px;
 | 
				
			||||||
    color: #999;
 | 
					    color: #999;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -794,17 +801,25 @@ tech-sub-sec h2 {
 | 
				
			||||||
    font-size: 40px;
 | 
					    font-size: 40px;
 | 
				
			||||||
    line-height: 55px;
 | 
					    line-height: 55px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.space-middle{
 | 
				
			||||||
.space-middle {
 | 
						padding: 45px 0;
 | 
				
			||||||
    padding: 45px 0;
 | 
						display: inline-block;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.ssdimg {
 | 
				
			||||||
.padding-vertical {
 | 
						vertical-align: middle;
 | 
				
			||||||
    padding: 35px 0;
 | 
						display: inline-block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media (max-width: 768px) {
 | 
				
			||||||
 | 
					    .ssdimg img {
 | 
				
			||||||
 | 
					        width: 100px;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.padding-vertical{
 | 
				
			||||||
 | 
						padding: 30px 2px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.percent-text img {
 | 
					.percent-text img {
 | 
				
			||||||
    margin-left: 20px;
 | 
					    /* margin-left: 20px; */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.space-block {
 | 
					.space-block {
 | 
				
			||||||
| 
						 | 
					@ -1085,24 +1100,24 @@ tech-sub-sec h2 {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@media(max-width:767px) {
 | 
					@media(max-width:767px) {
 | 
				
			||||||
    .percent-text {
 | 
						.percent-text {
 | 
				
			||||||
        font-size: 50px;
 | 
							/* font-size: 50px; */
 | 
				
			||||||
    }
 | 
						}
 | 
				
			||||||
    #tech_stack h3 {
 | 
						#tech_stack h3 {
 | 
				
			||||||
        font-size: 30px;
 | 
							font-size: 30px;
 | 
				
			||||||
        line-height: 40px;
 | 
							line-height: 40px;
 | 
				
			||||||
        width: 100%;
 | 
							width: 100%;
 | 
				
			||||||
    }
 | 
						}
 | 
				
			||||||
    .navbar-nav .open .dropdown-menu {
 | 
						.navbar-nav .open .dropdown-menu {
 | 
				
			||||||
        text-align: left;
 | 
					    text-align: left;
 | 
				
			||||||
        font-size: 12px;
 | 
					    font-size: 12px;
 | 
				
			||||||
    }
 | 
						}
 | 
				
			||||||
    .visible-mobile {
 | 
						.visible-mobile {
 | 
				
			||||||
        display: block;
 | 
						display:block;
 | 
				
			||||||
    }
 | 
						}
 | 
				
			||||||
    .visible-desktop {
 | 
						.visible-desktop {
 | 
				
			||||||
        display: none !important;
 | 
						display:none !important;
 | 
				
			||||||
    }
 | 
						}
 | 
				
			||||||
    .navbar-default .navbar-nav>.open>a,
 | 
					    .navbar-default .navbar-nav>.open>a,
 | 
				
			||||||
    .navbar-default .navbar-nav>.open>a:focus,
 | 
					    .navbar-default .navbar-nav>.open>a:focus,
 | 
				
			||||||
    .navbar-default .navbar-nav>.open>a:hover {
 | 
					    .navbar-default .navbar-nav>.open>a:hover {
 | 
				
			||||||
| 
						 | 
					@ -1158,11 +1173,12 @@ tech-sub-sec h2 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@media(max-width:768px) {
 | 
					@media(max-width:768px) {
 | 
				
			||||||
    .percent-text {
 | 
					    .percent-text {
 | 
				
			||||||
        font-size: 43px;
 | 
					        /* font-size: 43px; */
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    .tech-sub-sec h2 {
 | 
						   .tech-sub-sec h2 {
 | 
				
			||||||
        font-size: 30px;
 | 
					        /* font-size: 30px; */
 | 
				
			||||||
        line-height: 40px;
 | 
					        /* line-height: 40px; */
 | 
				
			||||||
 | 
					        /* font-weight: 500; */
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    .single-heading h2 {
 | 
					    .single-heading h2 {
 | 
				
			||||||
        font-size: 50px;
 | 
					        font-size: 50px;
 | 
				
			||||||
| 
						 | 
					@ -1348,7 +1364,9 @@ tech-sub-sec h2 {
 | 
				
			||||||
        padding: 30px;
 | 
					        padding: 30px;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    .percent-text {
 | 
					    .percent-text {
 | 
				
			||||||
        text-align: center;
 | 
					        font-family: 'Lato';
 | 
				
			||||||
 | 
					        font-size: 37px;
 | 
				
			||||||
 | 
					        /* text-align: center; */
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    .pricing-section .card {
 | 
					    .pricing-section .card {
 | 
				
			||||||
        width: 90%;
 | 
					        width: 90%;
 | 
				
			||||||
| 
						 | 
					@ -1472,3 +1490,33 @@ a#forgotpassword {
 | 
				
			||||||
.error-message-box {
 | 
					.error-message-box {
 | 
				
			||||||
    margin-top: 20px;
 | 
					    margin-top: 20px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.flex-row-rev {
 | 
				
			||||||
 | 
						margin-top: 25px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@media (min-width: 768px) {
 | 
				
			||||||
 | 
						.flex-row {
 | 
				
			||||||
 | 
							display: flex;
 | 
				
			||||||
 | 
							align-items: center;
 | 
				
			||||||
 | 
							justify-content: space-between;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						.flex-row .percent-text {
 | 
				
			||||||
 | 
							flex-shrink : 0;
 | 
				
			||||||
 | 
							padding: 0 15px;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						.flex-row .percent-text,
 | 
				
			||||||
 | 
						.flex-row .desc-text {
 | 
				
			||||||
 | 
							max-width: 710px;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						.flex-row-rev .percent-text {
 | 
				
			||||||
 | 
							order: 2;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						.flex-row-rev {
 | 
				
			||||||
 | 
							margin-bottom: 25px;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.w380 {
 | 
				
			||||||
 | 
						max-width: 380px !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -2,19 +2,18 @@
 | 
				
			||||||
{% load i18n %}
 | 
					{% load i18n %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<div class="modal fade bs-example-modal-sm" style="color:black;"  id="successModal" tabindex="-1" role="dialog">
 | 
					<div class="modal fade bs-example-modal-sm" style="color:black;"  id="successModal" tabindex="-1" role="dialog">
 | 
				
			||||||
    <div class="vertical-alignment-helper">
 | 
					    <div class="modal-dialog">
 | 
				
			||||||
        <div class="modal-dialog vertical-align-center">
 | 
					        <div class="modal-content">
 | 
				
			||||||
			<div class="modal-content">
 | 
					            <div class="modal-header">
 | 
				
			||||||
			  <div class="modal-header">
 | 
					              <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
 | 
				
			||||||
				<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
 | 
					            </div>
 | 
				
			||||||
				<h4 class="modal-title">{% trans "Request Sent" %}</h4>
 | 
					            <div class="modal-body">
 | 
				
			||||||
			  </div>
 | 
					              <div class="modal-icon"><i class="fa fa-check" aria-hidden="true"></i></div>
 | 
				
			||||||
			  <div class="modal-body">
 | 
					              <h4 class="modal-title">{% trans "Request Sent" %}</h4>
 | 
				
			||||||
				<p>{% trans "Thank you for your subscription! You will receive a confirmation mail from our team" %}</p>
 | 
					              <p class="modal-text">{% trans "Thank you for your subscription! You will receive a confirmation mail from our team" %}</p>
 | 
				
			||||||
			  </div>
 | 
					            </div>
 | 
				
			||||||
			</div><!-- /.modal-content -->
 | 
					        </div><!-- /.modal-content -->
 | 
				
			||||||
		</div>
 | 
					    </div>
 | 
				
			||||||
	</div>
 | 
					 | 
				
			||||||
</div><!-- /.modal -->
 | 
					</div><!-- /.modal -->
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
	// Show modal
 | 
						// Show modal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,7 +46,7 @@
 | 
				
			||||||
                        {% endif %}
 | 
					                        {% endif %}
 | 
				
			||||||
                    </ul>
 | 
					                    </ul>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    <p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
 | 
					                    <p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. {% trans "All Rights Reserved" %}</p>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,30 +98,23 @@
 | 
				
			||||||
        <hr class="thick-divider"/><!-- Divider -->
 | 
					        <hr class="thick-divider"/><!-- Divider -->
 | 
				
			||||||
        <div class="space">
 | 
					        <div class="space">
 | 
				
			||||||
        <div class="container">
 | 
					        <div class="container">
 | 
				
			||||||
            <div class="row">
 | 
					            <div class="tech-sub-sec">
 | 
				
			||||||
                <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
 | 
					                <h3>{% trans "We bring the future to you." %}</h3>
 | 
				
			||||||
                    <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 tech-sub-sec">
 | 
					            </div>
 | 
				
			||||||
                        <h2>{% trans "We bring the future to you." %}</h2>
 | 
					            <div class="flex-row flex-row-rev">
 | 
				
			||||||
                    </div>
 | 
					                <div class="percent-text">
 | 
				
			||||||
                    <div class="col-xs-12 col-sm-7 col-md-8 col-lg-8 text-left tech-sub-sec landscape-xs-6">
 | 
					                    100% <strong>IPv6</strong>
 | 
				
			||||||
                            <p class="lead new-lead">{% blocktrans %} Data Center Light uses the most modern technologies out there.<br>
 | 
					 | 
				
			||||||
                            Your VM needs only IPv6. Data Center Light provides<br> transparent two-way IPv6/IPv4 translation.
 | 
					 | 
				
			||||||
                            {% endblocktrans %}</p>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="col-xs-12 col-sm-5 col-md-4 col-lg-4 percent-text text-right landscape-xs-6">
 | 
					 | 
				
			||||||
                            100% <strong>IPv6</strong>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
                <div class="col-lg-12 space-block"></div>
 | 
					                <div class="desc-text padding-vertical">
 | 
				
			||||||
                <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
 | 
					                    <p class="lead new-lead">{% blocktrans %}Data Center Light uses the most modern technologies out there.<br>Your VM needs only IPv6. Data Center Light provides<br> transparent two-way IPv6/IPv4 translation.{% endblocktrans %}</p>
 | 
				
			||||||
                    <div class="col-xs-12 col-sm-7 col-md-8 col-lg-8 percent-text landscape-xs-8">
 | 
					                </div>
 | 
				
			||||||
                            <span class="pull-left space-middle"> 100% <strong>SSD</strong></span> <span class="pull-left ssdimg"><img class="img-responsive" src="{% static 'datacenterlight/img/ssd.jpg' %}" alt="SSD"></span>
 | 
					            </div>
 | 
				
			||||||
                    </div>
 | 
					            <div class="flex-row">
 | 
				
			||||||
                    <div class="col-xs-12 col-sm-5 col-md-4 col-lg-4 text-right tech-sub-sec  padding-vertical landscape-xs-4">
 | 
					                <div class="percent-text">
 | 
				
			||||||
                        <div>
 | 
					                    <span class="space-middle"> 100% <strong>SSD</strong></span> <span class="ssdimg"><img class="img-responsive" src="{% static 'datacenterlight/img/ssd.jpg' %}" alt="SSD"></span>
 | 
				
			||||||
                            <p class="lead new-lead">{% blocktrans %} No more spinning metal plates! Data Center Light uses only SSDs. We keep things faster and lighter. {% endblocktrans %}</p>
 | 
					                </div>
 | 
				
			||||||
                        </div>
 | 
					                <div class="desc-text padding-vertical w380">
 | 
				
			||||||
                    </div>
 | 
					                    <p class="lead new-lead lead-right">{% blocktrans %} No more spinning metal plates! Data Center Light uses only SSDs. We keep things faster and lighter. {% endblocktrans %}</p>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,6 @@ from hosting.models import HostingOrder, HostingBill
 | 
				
			||||||
from utils.stripe_utils import StripeUtils
 | 
					from utils.stripe_utils import StripeUtils
 | 
				
			||||||
from datetime import datetime
 | 
					from datetime import datetime
 | 
				
			||||||
from membership.models import CustomUser, StripeCustomer
 | 
					from membership.models import CustomUser, StripeCustomer
 | 
				
			||||||
 | 
					 | 
				
			||||||
from opennebula_api.models import OpenNebulaManager
 | 
					from opennebula_api.models import OpenNebulaManager
 | 
				
			||||||
from opennebula_api.serializers import VirtualMachineTemplateSerializer, VirtualMachineSerializer, VMTemplateSerializer
 | 
					from opennebula_api.serializers import VirtualMachineTemplateSerializer, VirtualMachineSerializer, VMTemplateSerializer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,6 +33,7 @@ class SuccessView(TemplateView):
 | 
				
			||||||
    def get(self, request, *args, **kwargs):
 | 
					    def get(self, request, *args, **kwargs):
 | 
				
			||||||
        if 'specs' not in request.session or 'user' not in request.session:
 | 
					        if 'specs' not in request.session or 'user' not in request.session:
 | 
				
			||||||
            return HttpResponseRedirect(reverse('datacenterlight:index'))
 | 
					            return HttpResponseRedirect(reverse('datacenterlight:index'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        elif 'token' not in request.session:
 | 
					        elif 'token' not in request.session:
 | 
				
			||||||
            return HttpResponseRedirect(reverse('datacenterlight:payment'))
 | 
					            return HttpResponseRedirect(reverse('datacenterlight:payment'))
 | 
				
			||||||
        elif 'order_confirmation' not in request.session:
 | 
					        elif 'order_confirmation' not in request.session:
 | 
				
			||||||
| 
						 | 
					@ -199,15 +199,15 @@ class IndexView(CreateView):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def validate_cores(self, value):
 | 
					    def validate_cores(self, value):
 | 
				
			||||||
        if (value > 48) or (value < 1):
 | 
					        if (value > 48) or (value < 1):
 | 
				
			||||||
            raise ValidationError(_('Not a proper cores number'))
 | 
					            raise ValidationError(_('Invalid number of cores'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def validate_memory(self, value):
 | 
					    def validate_memory(self, value):
 | 
				
			||||||
        if (value > 200) or (value < 2):
 | 
					        if (value > 200) or (value < 2):
 | 
				
			||||||
            raise ValidationError(_('Not a proper ram number'))
 | 
					            raise ValidationError(_('Invalid RAM size'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def validate_storage(self, value):
 | 
					    def validate_storage(self, value):
 | 
				
			||||||
        if (value > 2000) or (value < 10):
 | 
					        if (value > 2000) or (value < 10):
 | 
				
			||||||
            raise ValidationError(_('Not a proper storage number'))
 | 
					            raise ValidationError(_('Invalid storage size'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @cache_control(no_cache=True, must_revalidate=True, no_store=True)
 | 
					    @cache_control(no_cache=True, must_revalidate=True, no_store=True)
 | 
				
			||||||
    def get(self, request, *args, **kwargs):
 | 
					    def get(self, request, *args, **kwargs):
 | 
				
			||||||
| 
						 | 
					@ -411,6 +411,7 @@ class PaymentOrderView(FormView):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Create Billing Address
 | 
					            # Create Billing Address
 | 
				
			||||||
            billing_address = form.save()
 | 
					            billing_address = form.save()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            request.session['billing_address_data'] = billing_address_data
 | 
					            request.session['billing_address_data'] = billing_address_data
 | 
				
			||||||
            request.session['billing_address'] = billing_address.id
 | 
					            request.session['billing_address'] = billing_address.id
 | 
				
			||||||
            request.session['token'] = token
 | 
					            request.session['token'] = token
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -195,7 +195,7 @@ CMS_TEMPLATES = (
 | 
				
			||||||
DATABASES = {
 | 
					DATABASES = {
 | 
				
			||||||
    'default': {
 | 
					    'default': {
 | 
				
			||||||
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
 | 
					        'ENGINE': 'django.db.backends.postgresql_psycopg2',
 | 
				
			||||||
        'NAME': 'app'
 | 
					        'NAME': 'app',
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
from .base import * # flake8: noqa
 | 
					from .base import *  # flake8: noqa
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# List of people that get admin messages
 | 
					# List of people that get admin messages
 | 
				
			||||||
ADMINS = ((x, x + "@ungleich.ch") for x in ["web-team"])
 | 
					ADMINS = ((x, x + "@ungleich.ch") for x in ["web-team"])
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					import datetime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from django import forms
 | 
					from django import forms
 | 
				
			||||||
from membership.models import CustomUser
 | 
					from membership.models import CustomUser
 | 
				
			||||||
from django.contrib.auth import authenticate
 | 
					from django.contrib.auth import authenticate
 | 
				
			||||||
| 
						 | 
					@ -7,6 +9,10 @@ from django.utils.translation import ugettext_lazy as _
 | 
				
			||||||
from .models import UserHostingKey
 | 
					from .models import UserHostingKey
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def generate_ssh_key_name():
 | 
				
			||||||
 | 
					    return 'dcl-generated-key-' + datetime.datetime.now().strftime('%m%d%y%H%M')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HostingUserLoginForm(forms.Form):
 | 
					class HostingUserLoginForm(forms.Form):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    email = forms.CharField(widget=forms.EmailInput())
 | 
					    email = forms.CharField(widget=forms.EmailInput())
 | 
				
			||||||
| 
						 | 
					@ -20,9 +26,11 @@ class HostingUserLoginForm(forms.Form):
 | 
				
			||||||
        password = self.cleaned_data.get('password')
 | 
					        password = self.cleaned_data.get('password')
 | 
				
			||||||
        is_auth = authenticate(email=email, password=password)
 | 
					        is_auth = authenticate(email=email, password=password)
 | 
				
			||||||
        if not is_auth:
 | 
					        if not is_auth:
 | 
				
			||||||
            raise forms.ValidationError("Your username and/or password were incorrect.")
 | 
					            raise forms.ValidationError(
 | 
				
			||||||
 | 
					                _("Your username and/or password were incorrect."))
 | 
				
			||||||
        elif is_auth.validated == 0:
 | 
					        elif is_auth.validated == 0:
 | 
				
			||||||
            raise forms.ValidationError(_("Your account is not activated yet."))
 | 
					            raise forms.ValidationError(
 | 
				
			||||||
 | 
					                _("Your account is not activated yet."))
 | 
				
			||||||
        return self.cleaned_data
 | 
					        return self.cleaned_data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def clean_email(self):
 | 
					    def clean_email(self):
 | 
				
			||||||
| 
						 | 
					@ -58,15 +66,19 @@ class HostingUserSignupForm(forms.ModelForm):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class UserHostingKeyForm(forms.ModelForm):
 | 
					class UserHostingKeyForm(forms.ModelForm):
 | 
				
			||||||
    private_key = forms.CharField(widget=forms.HiddenInput(), required=False)
 | 
					    private_key = forms.CharField(widget=forms.HiddenInput(), required=False)
 | 
				
			||||||
    public_key = forms.CharField(widget=forms.Textarea(), required=False,
 | 
					    public_key = forms.CharField(widget=forms.Textarea(
 | 
				
			||||||
                                 help_text=_('Paste here your public key'))
 | 
					        attrs={'class': 'form_public_key', 'placeholder': _('Paste here your public key')}),
 | 
				
			||||||
 | 
					        required=False,
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    user = forms.models.ModelChoiceField(queryset=CustomUser.objects.all(),
 | 
					    user = forms.models.ModelChoiceField(queryset=CustomUser.objects.all(),
 | 
				
			||||||
                                         required=False, widget=forms.HiddenInput())
 | 
					                                         required=False, widget=forms.HiddenInput())
 | 
				
			||||||
    name = forms.CharField(required=True)
 | 
					    name = forms.CharField(required=False, widget=forms.TextInput(
 | 
				
			||||||
 | 
					        attrs={'class': 'form_key_name', 'placeholder': _('Give a name to your key')}))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self, *args, **kwargs):
 | 
					    def __init__(self, *args, **kwargs):
 | 
				
			||||||
        self.request = kwargs.pop("request")
 | 
					        self.request = kwargs.pop("request")
 | 
				
			||||||
        super(UserHostingKeyForm, self).__init__(*args, **kwargs)
 | 
					        super(UserHostingKeyForm, self).__init__(*args, **kwargs)
 | 
				
			||||||
 | 
					        self.fields['name'].label = _('Key name')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def clean_name(self):
 | 
					    def clean_name(self):
 | 
				
			||||||
        return self.data.get('name')
 | 
					        return self.data.get('name')
 | 
				
			||||||
| 
						 | 
					@ -76,7 +88,8 @@ class UserHostingKeyForm(forms.ModelForm):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def clean(self):
 | 
					    def clean(self):
 | 
				
			||||||
        cleaned_data = self.cleaned_data
 | 
					        cleaned_data = self.cleaned_data
 | 
				
			||||||
 | 
					        if not self.cleaned_data.get('name', ''):
 | 
				
			||||||
 | 
					            self.cleaned_data['name'] = generate_ssh_key_name()
 | 
				
			||||||
        if not cleaned_data.get('public_key'):
 | 
					        if not cleaned_data.get('public_key'):
 | 
				
			||||||
            private_key, public_key = UserHostingKey.generate_keys()
 | 
					            private_key, public_key = UserHostingKey.generate_keys()
 | 
				
			||||||
            cleaned_data.update({
 | 
					            cleaned_data.update({
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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-07-17 00:53+0530\n"
 | 
					"POT-Creation-Date: 2017-08-04 18:25+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"
 | 
				
			||||||
| 
						 | 
					@ -18,359 +18,274 @@ 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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: forms.py:25
 | 
					msgid "Your username and/or password were incorrect."
 | 
				
			||||||
 | 
					msgstr "Dein Benutzername und/oder Dein Passwort ist falsch."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Your account is not activated yet."
 | 
					msgid "Your account is not activated yet."
 | 
				
			||||||
msgstr "Dein Account wurde noch nicht aktiviert."
 | 
					msgstr "Dein Account wurde noch nicht aktiviert."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: forms.py:62
 | 
					 | 
				
			||||||
msgid "Paste here your public key"
 | 
					msgid "Paste here your public key"
 | 
				
			||||||
msgstr "Fügen Sie Ihren public key ein"
 | 
					msgstr "Füge deinen Public Key ein"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Give a name to your key"
 | 
				
			||||||
 | 
					msgstr "Gebe deinem SSH-Key einen Name"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Key name"
 | 
				
			||||||
 | 
					msgstr "Key-Name"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/base_short.html:71
 | 
					 | 
				
			||||||
msgid "My Virtual Machines"
 | 
					msgid "My Virtual Machines"
 | 
				
			||||||
msgstr "Meine virtuellen Maschinen"
 | 
					msgstr "Meine virtuellen Maschinen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/base_short.html:76 templates/hosting/orders.html.py:12
 | 
					 | 
				
			||||||
msgid "My Orders"
 | 
					msgid "My Orders"
 | 
				
			||||||
msgstr "Meine Bestellungen"
 | 
					msgstr "Meine Bestellungen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/base_short.html:85
 | 
					msgid "SSH Keys"
 | 
				
			||||||
msgid "Keys"
 | 
					msgstr "SSH Key"
 | 
				
			||||||
msgstr "Schlüssel"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/base_short.html:90
 | 
					 | 
				
			||||||
msgid "Notifications "
 | 
					msgid "Notifications "
 | 
				
			||||||
msgstr "Benachrichtigungen"
 | 
					msgstr "Benachrichtigungen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/base_short.html:93
 | 
					 | 
				
			||||||
msgid "Logout"
 | 
					msgid "Logout"
 | 
				
			||||||
msgstr "Abmelden"
 | 
					msgstr "Abmelden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/base_short.html:98
 | 
					msgid "All Rights Reserved"
 | 
				
			||||||
msgid "How it works"
 | 
					msgstr "Alle Rechte vorbehalten"
 | 
				
			||||||
msgstr "So funktioniert es"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/base_short.html:101
 | 
					 | 
				
			||||||
msgid "Your infrastructure"
 | 
					 | 
				
			||||||
msgstr "deine Infrastruktur"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#: templates/hosting/base_short.html:104
 | 
					 | 
				
			||||||
msgid "Our inftrastructure"
 | 
					 | 
				
			||||||
msgstr "Unsere Infrastruktur"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#: templates/hosting/base_short.html:107
 | 
					 | 
				
			||||||
msgid "Pricing"
 | 
					 | 
				
			||||||
msgstr "Preise"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#: templates/hosting/base_short.html:110
 | 
					 | 
				
			||||||
msgid "Contact"
 | 
					 | 
				
			||||||
msgstr "Kontakt"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#: templates/hosting/base_short.html:113
 | 
					 | 
				
			||||||
#: templates/hosting/confirm_reset_password.html:38
 | 
					 | 
				
			||||||
#: templates/hosting/login.html:17 templates/hosting/login.html.py:26
 | 
					 | 
				
			||||||
#: templates/hosting/reset_password.html:32 templates/hosting/signup.html:30
 | 
					 | 
				
			||||||
msgid "Login"
 | 
					 | 
				
			||||||
msgstr "Anmelden"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#: templates/hosting/bill_detail.html:11
 | 
					 | 
				
			||||||
msgid "Invoice"
 | 
					msgid "Invoice"
 | 
				
			||||||
msgstr "Rechnung"
 | 
					msgstr "Rechnung"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bill_detail.html:11 templates/hosting/order_detail.html:23
 | 
					 | 
				
			||||||
msgid "Order #"
 | 
					msgid "Order #"
 | 
				
			||||||
msgstr "Bestellung #"
 | 
					msgstr "Bestellung #"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bill_detail.html:25
 | 
					 | 
				
			||||||
msgid "ungleich GmbH"
 | 
					msgid "ungleich GmbH"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bill_detail.html:26
 | 
					 | 
				
			||||||
msgid "buchhaltung@ungleich.ch"
 | 
					msgid "buchhaltung@ungleich.ch"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bill_detail.html:27
 | 
					 | 
				
			||||||
msgid "Hauptstrasse 14"
 | 
					msgid "Hauptstrasse 14"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bill_detail.html:28
 | 
					 | 
				
			||||||
msgid "CH-8775 Luchsingen"
 | 
					msgid "CH-8775 Luchsingen"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bill_detail.html:29
 | 
					 | 
				
			||||||
msgid "Mwst-Nummer: CHE-109.549.333 MWST"
 | 
					msgid "Mwst-Nummer: CHE-109.549.333 MWST"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bill_detail.html:60
 | 
					 | 
				
			||||||
msgid "Total:"
 | 
					msgid "Total:"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: 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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: 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 ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bill_detail.html:70
 | 
					 | 
				
			||||||
msgid "Kontoverbindung:"
 | 
					msgid "Kontoverbindung:"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bill_detail.html:73
 | 
					 | 
				
			||||||
msgid "IBAN:"
 | 
					msgid "IBAN:"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bill_detail.html:76
 | 
					 | 
				
			||||||
msgid "BIC:"
 | 
					msgid "BIC:"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bill_detail.html:81
 | 
					 | 
				
			||||||
msgid "CH02 0900 0000 6071 8848 8"
 | 
					msgid "CH02 0900 0000 6071 8848 8"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bill_detail.html:84
 | 
					 | 
				
			||||||
msgid "POFICHBEXXX"
 | 
					msgid "POFICHBEXXX"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bills.html:12
 | 
					 | 
				
			||||||
msgid "Customers"
 | 
					msgid "Customers"
 | 
				
			||||||
msgstr "Kunden"
 | 
					msgstr "Kunden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bills.html:16 templates/hosting/user_keys.html.py:25
 | 
					 | 
				
			||||||
msgid "Name"
 | 
					msgid "Name"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bills.html:17
 | 
					 | 
				
			||||||
msgid "Email"
 | 
					msgid "Email"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bills.html:28
 | 
					 | 
				
			||||||
msgid "View Bill"
 | 
					msgid "View Bill"
 | 
				
			||||||
msgstr "Rechnung anzeigen"
 | 
					msgstr "Rechnung anzeigen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bills.html:41 templates/hosting/orders.html.py:82
 | 
					 | 
				
			||||||
#: templates/hosting/virtual_machines.html:70
 | 
					 | 
				
			||||||
msgid "previous"
 | 
					msgid "previous"
 | 
				
			||||||
msgstr "vorherige"
 | 
					msgstr "vorherige"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/bills.html:47 templates/hosting/orders.html.py:88
 | 
					 | 
				
			||||||
#: templates/hosting/virtual_machines.html:76
 | 
					 | 
				
			||||||
msgid "next"
 | 
					msgid "next"
 | 
				
			||||||
msgstr "nächste"
 | 
					msgstr "nächste"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/confirm_reset_password.html:10
 | 
					msgid "SSH Key"
 | 
				
			||||||
#: templates/hosting/login.html:12 templates/hosting/reset_password.html:10
 | 
					msgstr "SSH Key"
 | 
				
			||||||
#: templates/hosting/signup.html:9 templates/hosting/signup_validate.html:9
 | 
					
 | 
				
			||||||
 | 
					msgid "Choose a key option in order to access your VM"
 | 
				
			||||||
 | 
					msgstr "Wähle eine Option um Zugriff auf deine VM zu erhalten"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Generating a new key pair"
 | 
				
			||||||
 | 
					msgstr "Neuen SSH-Key erstellen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "I want to generate a new key pair"
 | 
				
			||||||
 | 
					msgstr "Ich möchte einen neuen SSH-Key erstellen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Generate"
 | 
				
			||||||
 | 
					msgstr "Generieren"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Using existing key"
 | 
				
			||||||
 | 
					msgstr "Nutzung eines existierenden SSH-Keys"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "I want to use my existing public key"
 | 
				
			||||||
 | 
					msgstr "Ich möchte einen existierenden SSH-Key nutzen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Upload"
 | 
				
			||||||
 | 
					msgstr "Hochladen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Your VM hosted in Switzerland"
 | 
					msgid "Your VM hosted in Switzerland"
 | 
				
			||||||
msgstr "deine VM in der Schweiz"
 | 
					msgstr "deine VM in der Schweiz"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/confirm_reset_password.html:14
 | 
					 | 
				
			||||||
msgid "Set your new password"
 | 
					msgid "Set your new password"
 | 
				
			||||||
msgstr "Setze dein neues Passwort"
 | 
					msgstr "Setze dein neues Passwort"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/confirm_reset_password.html:29
 | 
					 | 
				
			||||||
#: templates/hosting/reset_password.html:23
 | 
					 | 
				
			||||||
msgid "Reset"
 | 
					msgid "Reset"
 | 
				
			||||||
msgstr "Zurücksetzen"
 | 
					msgstr "Zurücksetzen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/confirm_reset_password.html:35
 | 
					 | 
				
			||||||
#: templates/hosting/reset_password.html:29 templates/hosting/signup.html:27
 | 
					 | 
				
			||||||
msgid "Already have an account ?"
 | 
					msgid "Already have an account ?"
 | 
				
			||||||
msgstr "Hast Du bereits ein Benutzerkonto?"
 | 
					msgstr "Hast Du bereits ein Benutzerkonto?"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/create_virtual_machine.html:20
 | 
					msgid "Login"
 | 
				
			||||||
 | 
					msgstr "Anmelden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "New Virtual Machine"
 | 
					msgid "New Virtual Machine"
 | 
				
			||||||
msgstr "Neue virtuelle Maschine"
 | 
					msgstr "Neue virtuelle Maschine"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/create_virtual_machine.html:28
 | 
					 | 
				
			||||||
msgid "Step 1. Select VM Template:"
 | 
					msgid "Step 1. Select VM Template:"
 | 
				
			||||||
msgstr "Wähle eine Vorlage"
 | 
					msgstr "Wähle eine Vorlage"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/create_virtual_machine.html:42
 | 
					 | 
				
			||||||
msgid "Step2. Select VM Configuration"
 | 
					msgid "Step2. Select VM Configuration"
 | 
				
			||||||
msgstr "Wähle eine Konfiguration"
 | 
					msgstr "Wähle eine Konfiguration"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/create_virtual_machine.html:59
 | 
					 | 
				
			||||||
msgid "Price "
 | 
					msgid "Price "
 | 
				
			||||||
msgstr "Preis"
 | 
					msgstr "Preis"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/create_virtual_machine.html:59
 | 
					 | 
				
			||||||
msgid "CHF/Month"
 | 
					msgid "CHF/Month"
 | 
				
			||||||
msgstr "CHF/Monat"
 | 
					msgstr "CHF/Monat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/create_virtual_machine.html:61
 | 
					 | 
				
			||||||
msgid "Start VM"
 | 
					msgid "Start VM"
 | 
				
			||||||
msgstr "VM jetzt starten"
 | 
					msgstr "VM jetzt starten"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/emails/password_reset_email.html: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 ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/emails/password_reset_email.html: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 ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/emails/password_reset_email.html:9
 | 
					 | 
				
			||||||
#: templates/hosting/emails/password_reset_email.txt:9
 | 
					 | 
				
			||||||
msgid "Thanks for using our site!"
 | 
					msgid "Thanks for using our site!"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/emails/password_reset_email.html: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 ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/login.html:34
 | 
					 | 
				
			||||||
msgid "Don't have an account yet ? "
 | 
					msgid "Don't have an account yet ? "
 | 
				
			||||||
msgstr "Besitzt du kein Benutzerkonto?"
 | 
					msgstr "Besitzt du kein Benutzerkonto?"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/login.html:37 templates/hosting/signup.html.py:13
 | 
					 | 
				
			||||||
#: templates/hosting/signup.html:21 views.py:219
 | 
					 | 
				
			||||||
msgid "Sign up"
 | 
					msgid "Sign up"
 | 
				
			||||||
msgstr "Registrieren"
 | 
					msgstr "Registrieren"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/login.html:39
 | 
					 | 
				
			||||||
msgid "Forgot your password ? "
 | 
					msgid "Forgot your password ? "
 | 
				
			||||||
msgstr "Passwort vergessen?"
 | 
					msgstr "Passwort vergessen?"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/notifications.html:9
 | 
					 | 
				
			||||||
msgid "Notifications"
 | 
					msgid "Notifications"
 | 
				
			||||||
msgstr "Benachrichtigungen"
 | 
					msgstr "Benachrichtigungen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/notifications.html:16
 | 
					 | 
				
			||||||
msgid "Unread"
 | 
					msgid "Unread"
 | 
				
			||||||
msgstr "Ungelesen"
 | 
					msgstr "Ungelesen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/notifications.html:26
 | 
					 | 
				
			||||||
msgid "All"
 | 
					msgid "All"
 | 
				
			||||||
msgstr "Alle"
 | 
					msgstr "Alle"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/notifications.html:38
 | 
					 | 
				
			||||||
msgid "Unread notifications"
 | 
					msgid "Unread notifications"
 | 
				
			||||||
msgstr "Ungelesene Benachrichtigungen"
 | 
					msgstr "Ungelesene Benachrichtigungen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/notifications.html:48
 | 
					 | 
				
			||||||
msgid "Mark as read"
 | 
					msgid "Mark as read"
 | 
				
			||||||
msgstr "Als gelesen markieren"
 | 
					msgstr "Als gelesen markieren"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/notifications.html:59
 | 
					 | 
				
			||||||
msgid "All notifications"
 | 
					msgid "All notifications"
 | 
				
			||||||
msgstr "Alle Benachrichtigungen"
 | 
					msgstr "Alle Benachrichtigungen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/order_detail.html:23
 | 
					 | 
				
			||||||
msgid "Confirm Order"
 | 
					 | 
				
			||||||
msgstr "Bestellung Bestätigen"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#: templates/hosting/order_detail.html:29
 | 
					 | 
				
			||||||
msgid "Billed To:"
 | 
					 | 
				
			||||||
msgstr "Rechnungsadresse"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#: templates/hosting/order_detail.html:37 templates/hosting/orders.html:17
 | 
					 | 
				
			||||||
msgid "Date"
 | 
					msgid "Date"
 | 
				
			||||||
msgstr "Datum"
 | 
					msgstr "Datum"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/order_detail.html:39
 | 
					 | 
				
			||||||
msgid "Status:"
 | 
					msgid "Status:"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/order_detail.html:51
 | 
					msgid "Billed To:"
 | 
				
			||||||
 | 
					msgstr "Rechnungsadresse"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Payment Method:"
 | 
					msgid "Payment Method:"
 | 
				
			||||||
msgstr "Bezahlmethode"
 | 
					msgstr "Bezahlmethode"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/order_detail.html:62
 | 
					 | 
				
			||||||
msgid "Order summary"
 | 
					msgid "Order summary"
 | 
				
			||||||
msgstr "Bestellungsübersicht"
 | 
					msgstr "Bestellungsübersicht"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/order_detail.html:65 templates/hosting/payment.html:13
 | 
					 | 
				
			||||||
#: templates/hosting/virtual_machine_detail.html:76
 | 
					 | 
				
			||||||
msgid "Cores"
 | 
					msgid "Cores"
 | 
				
			||||||
msgstr "Prozessorkerne"
 | 
					msgstr "Prozessorkerne"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/order_detail.html:67 templates/hosting/payment.html:16
 | 
					 | 
				
			||||||
#: templates/hosting/virtual_machine_detail.html:82
 | 
					 | 
				
			||||||
msgid "Memory"
 | 
					msgid "Memory"
 | 
				
			||||||
msgstr "Arbeitsspeicher"
 | 
					msgstr "Arbeitsspeicher"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/order_detail.html:69 templates/hosting/payment.html:19
 | 
					 | 
				
			||||||
msgid "Disk space"
 | 
					msgid "Disk space"
 | 
				
			||||||
msgstr "Festplattenkapazität"
 | 
					msgstr "Festplattenkapazität"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/order_detail.html:71 templates/hosting/payment.html:41
 | 
					 | 
				
			||||||
msgid "Total"
 | 
					msgid "Total"
 | 
				
			||||||
msgstr "Gesamt"
 | 
					msgstr "Gesamt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/order_detail.html:77
 | 
					 | 
				
			||||||
msgid "Finish Configuration"
 | 
					msgid "Finish Configuration"
 | 
				
			||||||
msgstr "Konfiguration beenden"
 | 
					msgstr "Konfiguration beenden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/orders.html:18
 | 
					 | 
				
			||||||
msgid "Amount"
 | 
					msgid "Amount"
 | 
				
			||||||
msgstr "Betrag"
 | 
					msgstr "Betrag"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/orders.html:19 templates/hosting/user_keys.html.py:27
 | 
					 | 
				
			||||||
#: templates/hosting/virtual_machine_detail.html:30
 | 
					 | 
				
			||||||
#: templates/hosting/virtual_machines.html:31
 | 
					 | 
				
			||||||
msgid "Status"
 | 
					msgid "Status"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/orders.html:30
 | 
					 | 
				
			||||||
msgid "Approved"
 | 
					msgid "Approved"
 | 
				
			||||||
msgstr "Akzeptiert"
 | 
					msgstr "Akzeptiert"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/orders.html:32
 | 
					 | 
				
			||||||
msgid "Declined"
 | 
					msgid "Declined"
 | 
				
			||||||
msgstr "Abgelehnt"
 | 
					msgstr "Abgelehnt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/orders.html:37 templates/hosting/virtual_machines.html:58
 | 
					 | 
				
			||||||
msgid "View Detail"
 | 
					msgid "View Detail"
 | 
				
			||||||
msgstr "Details anzeigen"
 | 
					msgstr "Details anzeigen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/orders.html:40
 | 
					 | 
				
			||||||
msgid "Cancel Order"
 | 
					msgid "Cancel Order"
 | 
				
			||||||
msgstr "Bestellung stornieren"
 | 
					msgstr "Bestellung stornieren"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/orders.html:55
 | 
					#, fuzzy
 | 
				
			||||||
msgid "Do You want to delete your order?"
 | 
					#| msgid "Do You want to delete your order?"
 | 
				
			||||||
 | 
					msgid "Do you want to delete your order?"
 | 
				
			||||||
msgstr "Willst du deine Bestellung löschen?"
 | 
					msgstr "Willst du deine Bestellung löschen?"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/orders.html:63 templates/hosting/user_keys.html.py:63
 | 
					 | 
				
			||||||
msgid "Close"
 | 
					 | 
				
			||||||
msgstr "Schliessen"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#: templates/hosting/orders.html:65 templates/hosting/user_keys.html.py:65
 | 
					 | 
				
			||||||
msgid "Delete"
 | 
					msgid "Delete"
 | 
				
			||||||
msgstr "Löschen"
 | 
					msgstr "Löschen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:10
 | 
					 | 
				
			||||||
msgid "Your Order"
 | 
					msgid "Your Order"
 | 
				
			||||||
msgstr "Deine Bestellung"
 | 
					msgstr "Deine Bestellung"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:22
 | 
					 | 
				
			||||||
#: templates/hosting/virtual_machine_detail.html:98
 | 
					 | 
				
			||||||
msgid "Configuration"
 | 
					msgid "Configuration"
 | 
				
			||||||
msgstr "Konfiguration"
 | 
					msgstr "Konfiguration"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:41
 | 
					 | 
				
			||||||
msgid "including VAT"
 | 
					msgid "including VAT"
 | 
				
			||||||
msgstr "inkl. Mehrwertsteuer"
 | 
					msgstr "inkl. Mehrwertsteuer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:55
 | 
					 | 
				
			||||||
msgid "Billing Address"
 | 
					msgid "Billing Address"
 | 
				
			||||||
msgstr "Rechnungsadresse"
 | 
					msgstr "Rechnungsadresse"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:66
 | 
					 | 
				
			||||||
msgid "Credit Card"
 | 
					msgid "Credit Card"
 | 
				
			||||||
msgstr "Kreditkarte"
 | 
					msgstr "Kreditkarte"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:71
 | 
					 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"\n"
 | 
					"\n"
 | 
				
			||||||
"                                Please fill in your credit card information "
 | 
					"                                Please fill in your credit card information "
 | 
				
			||||||
| 
						 | 
					@ -385,7 +300,6 @@ msgstr ""
 | 
				
			||||||
"\"https://stripe.com\" target=\"_blank\">Stripe</a> für die Bezahlung und "
 | 
					"\"https://stripe.com\" target=\"_blank\">Stripe</a> für die Bezahlung und "
 | 
				
			||||||
"speichern keine Informationen in unserer Datenbank."
 | 
					"speichern keine Informationen in unserer Datenbank."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:90
 | 
					 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"\n"
 | 
					"\n"
 | 
				
			||||||
"                                        You are not making any payment yet. "
 | 
					"                                        You are not making any payment yet. "
 | 
				
			||||||
| 
						 | 
					@ -399,27 +313,21 @@ msgstr ""
 | 
				
			||||||
"Kreditkateninformationen wirst du auf die Bestellbestätigungsseite "
 | 
					"Kreditkateninformationen wirst du auf die Bestellbestätigungsseite "
 | 
				
			||||||
"weitergeleitet."
 | 
					"weitergeleitet."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:101 templates/hosting/payment.html.py:143
 | 
					 | 
				
			||||||
msgid "Submit"
 | 
					msgid "Submit"
 | 
				
			||||||
msgstr "Absenden"
 | 
					msgstr "Absenden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:113
 | 
					 | 
				
			||||||
msgid "Card Number"
 | 
					msgid "Card Number"
 | 
				
			||||||
msgstr "Kreditkartennummer"
 | 
					msgstr "Kreditkartennummer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:117
 | 
					 | 
				
			||||||
msgid "Expiry Date"
 | 
					msgid "Expiry Date"
 | 
				
			||||||
msgstr "Ablaufdatum"
 | 
					msgstr "Ablaufdatum"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:122
 | 
					 | 
				
			||||||
msgid "CVC"
 | 
					msgid "CVC"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:126
 | 
					 | 
				
			||||||
msgid "Card Type"
 | 
					msgid "Card Type"
 | 
				
			||||||
msgstr "Kartentyp"
 | 
					msgstr "Kartentyp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:135
 | 
					 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"\n"
 | 
					"\n"
 | 
				
			||||||
"                                            You are not making any payment "
 | 
					"                                            You are not making any payment "
 | 
				
			||||||
| 
						 | 
					@ -433,125 +341,115 @@ msgstr ""
 | 
				
			||||||
"Kreditkateninformationen wirst du auf die Bestellbestätigungsseite "
 | 
					"Kreditkateninformationen wirst du auf die Bestellbestätigungsseite "
 | 
				
			||||||
"weitergeleitet."
 | 
					"weitergeleitet."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:178
 | 
					 | 
				
			||||||
msgid "Processing"
 | 
					msgid "Processing"
 | 
				
			||||||
msgstr "Weiter"
 | 
					msgstr "Weiter"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/payment.html:179
 | 
					 | 
				
			||||||
msgid "Enter your credit card number"
 | 
					msgid "Enter your credit card number"
 | 
				
			||||||
msgstr "Deine Kreditkartennummer"
 | 
					msgstr "Deine Kreditkartennummer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/reset_password.html:15
 | 
					 | 
				
			||||||
msgid "Reset your password"
 | 
					msgid "Reset your password"
 | 
				
			||||||
msgstr "Passwort zurücksetzen"
 | 
					msgstr "Passwort zurücksetzen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/user_key.html:11 templates/hosting/user_keys.html.py:9
 | 
					msgid "Add your public SSH key"
 | 
				
			||||||
msgid "Access Key"
 | 
					msgstr "Füge deinen öffentlichen SSH-Key hinzu"
 | 
				
			||||||
msgstr "Zugriffsschlüssel"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/user_key.html:24
 | 
					msgid "Use your created key to access to the VM"
 | 
				
			||||||
msgid "Upload your own key. "
 | 
					msgstr "Benutze deinen erstellten SSH-Key um auf deine VM zugreifen zu können"
 | 
				
			||||||
msgstr "Lade deinen Key hoch"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/user_key.html:28
 | 
					msgid "Add SSH Key"
 | 
				
			||||||
msgid "Or generate a new key pair."
 | 
					msgstr "Hinzufügen"
 | 
				
			||||||
msgstr "Oder erstelle dein neues Keypaar"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/user_key.html:30
 | 
					msgid "Or you can generate a new key pair"
 | 
				
			||||||
msgid "Generate Key Pair"
 | 
					msgstr "Erstelle dein neues Keypaar"
 | 
				
			||||||
msgstr "Schlüsselpaar generieren"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/user_key.html:40
 | 
					 | 
				
			||||||
msgid "Warning!"
 | 
					msgid "Warning!"
 | 
				
			||||||
msgstr "Achtung!"
 | 
					msgstr "Achtung!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/user_key.html:40
 | 
					#, fuzzy
 | 
				
			||||||
msgid "You can download your SSH  private key once. Don't lost your key"
 | 
					#| msgid "You can download your SSH  private key once. Don't lost your key"
 | 
				
			||||||
 | 
					msgid "You can download your SSH  private key once. Don't loose your key"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Du kannst deinen privaten SSH Schlüssel nur einmal herunterladen. Beware ihn "
 | 
					"Du kannst deinen privaten SSH Schlüssel nur einmal herunterladen. Beware ihn "
 | 
				
			||||||
"sicher auf."
 | 
					"sicher auf."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/user_keys.html:18
 | 
					msgid "Your SSH Keys"
 | 
				
			||||||
msgid "Add Key"
 | 
					msgstr "Deine SSH Keys"
 | 
				
			||||||
msgstr "Schlüssel hinzufügen"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/user_keys.html:26
 | 
					msgid ""
 | 
				
			||||||
msgid "Created at"
 | 
					"To generate a new key pair or to upload your existing key, click 'Add Key'"
 | 
				
			||||||
msgstr "Erstellt am"
 | 
					msgstr ""
 | 
				
			||||||
 | 
					"Um einen neuen SSH-Key zu erstellen oder um einen vorhandenen SSH-Key "
 | 
				
			||||||
 | 
					"hinzuzufügen, klicke auf 'Hinzufügen'"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/user_keys.html:43
 | 
					 | 
				
			||||||
msgid "Delete Key"
 | 
					msgid "Delete Key"
 | 
				
			||||||
msgstr "Löschen"
 | 
					msgstr "Löschen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/user_keys.html:56
 | 
					msgid "Public Key"
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Private Key"
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Delete SSH Key"
 | 
				
			||||||
 | 
					msgstr "SSH Key löschen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Do You want to delete this key?"
 | 
					msgid "Do You want to delete this key?"
 | 
				
			||||||
msgstr "Möchtest Du den Schlüssel löschen?"
 | 
					msgstr "Möchtest Du den Schlüssel löschen?"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/virtual_machine_detail.html:19
 | 
					msgid "Show"
 | 
				
			||||||
 | 
					msgstr "Anzeigen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Public ssh key"
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgid "Download"
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid "Settings"
 | 
					msgid "Settings"
 | 
				
			||||||
msgstr "Einstellungen"
 | 
					msgstr "Einstellungen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/virtual_machine_detail.html:25
 | 
					 | 
				
			||||||
msgid "Billing"
 | 
					msgid "Billing"
 | 
				
			||||||
msgstr "Abrechnungen"
 | 
					msgstr "Abrechnungen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: 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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/virtual_machine_detail.html:89
 | 
					 | 
				
			||||||
msgid "Disk"
 | 
					msgid "Disk"
 | 
				
			||||||
msgstr "Festplatte"
 | 
					msgstr "Festplatte"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/virtual_machine_detail.html:108
 | 
					 | 
				
			||||||
msgid "Current pricing"
 | 
					msgid "Current pricing"
 | 
				
			||||||
msgstr "Aktueller Preis"
 | 
					msgstr "Aktueller Preis"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/virtual_machine_detail.html:117
 | 
					 | 
				
			||||||
msgid "Current status"
 | 
					msgid "Current status"
 | 
				
			||||||
msgstr "Aktueller Status"
 | 
					msgstr "Aktueller Status"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/virtual_machine_detail.html:142
 | 
					 | 
				
			||||||
msgid "Terminate Virtual Machine"
 | 
					msgid "Terminate Virtual Machine"
 | 
				
			||||||
msgstr "Virtuelle Maschine beenden"
 | 
					msgstr "Virtuelle Maschine beenden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: 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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: 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 "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/virtual_machine_detail.html:169
 | 
					 | 
				
			||||||
msgid "Cancel"
 | 
					 | 
				
			||||||
msgstr "Beenden"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#: templates/hosting/virtual_machines.html:9
 | 
					 | 
				
			||||||
msgid "Virtual Machines"
 | 
					msgid "Virtual Machines"
 | 
				
			||||||
msgstr "Virtuelle Maschinen"
 | 
					msgstr "Virtuelle Maschinen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/virtual_machines.html:22
 | 
					 | 
				
			||||||
msgid "Create VM"
 | 
					msgid "Create VM"
 | 
				
			||||||
msgstr "Neue VM"
 | 
					msgstr "Neue VM"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/virtual_machines.html:28
 | 
					 | 
				
			||||||
msgid "ID"
 | 
					msgid "ID"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/virtual_machines.html:29
 | 
					 | 
				
			||||||
msgid "Ipv4"
 | 
					msgid "Ipv4"
 | 
				
			||||||
msgstr "IPv4"
 | 
					msgstr "IPv4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: templates/hosting/virtual_machines.html:30
 | 
					 | 
				
			||||||
msgid "Ipv6"
 | 
					msgid "Ipv6"
 | 
				
			||||||
msgstr "IPv6"
 | 
					msgstr "IPv6"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: views.py:207 views.py:229
 | 
					 | 
				
			||||||
msgid "login"
 | 
					msgid "login"
 | 
				
			||||||
msgstr "einloggen"
 | 
					msgstr "einloggen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: views.py:212
 | 
					 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"Thank you for signing up. We have sent an email to you. Please follow the "
 | 
					"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 "
 | 
					"instructions in it to activate your account. Once activated, you can login "
 | 
				
			||||||
| 
						 | 
					@ -561,32 +459,141 @@ msgstr ""
 | 
				
			||||||
"den Anweisungen um deinen Account zu aktivieren. Danach kannst du dich über "
 | 
					"den Anweisungen um deinen Account zu aktivieren. Danach kannst du dich über "
 | 
				
			||||||
"diesen"
 | 
					"diesen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: views.py:214 views.py:240
 | 
					 | 
				
			||||||
msgid "Go back to"
 | 
					msgid "Go back to"
 | 
				
			||||||
msgstr "Zurück"
 | 
					msgstr "Zurück"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: views.py:230
 | 
					 | 
				
			||||||
msgid "Account activation"
 | 
					msgid "Account activation"
 | 
				
			||||||
msgstr "Accountaktivierung"
 | 
					msgstr "Accountaktivierung"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: views.py:233
 | 
					 | 
				
			||||||
msgid "Your account has been activated."
 | 
					msgid "Your account has been activated."
 | 
				
			||||||
msgstr "Dein Account wurde aktiviert."
 | 
					msgstr "Dein Account wurde aktiviert."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: views.py:234
 | 
					 | 
				
			||||||
msgid "You can now"
 | 
					msgid "You can now"
 | 
				
			||||||
msgstr "Du kannst dich nun"
 | 
					msgstr "Du kannst dich nun"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: views.py:239
 | 
					 | 
				
			||||||
msgid "Sorry. Your request is invalid."
 | 
					msgid "Sorry. Your request is invalid."
 | 
				
			||||||
msgstr "Entschuldigung, deine Anfrage ist ungültig."
 | 
					msgstr "Entschuldigung, deine Anfrage ist ungültig."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: views.py:757
 | 
					msgid "Confirm Order"
 | 
				
			||||||
 | 
					msgstr "Bestellung Bestätigen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"We could not find the requested VM. Please                            "
 | 
					"We could not find the requested VM. Please                            "
 | 
				
			||||||
"contact Data Center Light Support."
 | 
					"contact Data Center Light Support."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Close"
 | 
				
			||||||
 | 
					#~ msgstr "Schliessen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Cancel"
 | 
				
			||||||
 | 
					#~ msgstr "Beenden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Add SSH key"
 | 
				
			||||||
 | 
					#~ msgstr "Hinzufügen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Keys"
 | 
				
			||||||
 | 
					#~ msgstr "Schlüssel"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "Contact"
 | 
				
			||||||
 | 
					#~ msgid "Content"
 | 
				
			||||||
 | 
					#~ msgstr "Kontakt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "Contact"
 | 
				
			||||||
 | 
					#~ msgid "DG.Contact"
 | 
				
			||||||
 | 
					#~ msgstr "Kontakt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "Home"
 | 
				
			||||||
 | 
					#~ msgid "DG.Home"
 | 
				
			||||||
 | 
					#~ msgstr "Home"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "Amount"
 | 
				
			||||||
 | 
					#~ msgid "Country"
 | 
				
			||||||
 | 
					#~ msgstr "Betrag"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Log in"
 | 
				
			||||||
 | 
					#~ msgstr "Anmelden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "Configuration"
 | 
				
			||||||
 | 
					#~ msgid "Donation #"
 | 
				
			||||||
 | 
					#~ msgstr "Konfiguration"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "Billing Address"
 | 
				
			||||||
 | 
					#~ msgid "Billing Address:"
 | 
				
			||||||
 | 
					#~ msgstr "Rechnungsadresse"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "Date"
 | 
				
			||||||
 | 
					#~ msgid "Date:"
 | 
				
			||||||
 | 
					#~ msgstr "Datum"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "Configuration"
 | 
				
			||||||
 | 
					#~ msgid "Donation"
 | 
				
			||||||
 | 
					#~ msgstr "Konfiguration"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "View Detail"
 | 
				
			||||||
 | 
					#~ msgid "View Donations"
 | 
				
			||||||
 | 
					#~ msgstr "Details anzeigen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "You haven been logged out"
 | 
				
			||||||
 | 
					#~ msgstr "Sie wurden abgmeldet"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "Log in"
 | 
				
			||||||
 | 
					#~ msgid "Log in "
 | 
				
			||||||
 | 
					#~ msgstr "Anmelden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "View Detail"
 | 
				
			||||||
 | 
					#~ msgid "DG.Detail"
 | 
				
			||||||
 | 
					#~ msgstr "Details anzeigen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "Cancel"
 | 
				
			||||||
 | 
					#~ msgid "France"
 | 
				
			||||||
 | 
					#~ msgstr "Beenden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "Enter your credit card number"
 | 
				
			||||||
 | 
					#~ msgid "Enter your name or company name"
 | 
				
			||||||
 | 
					#~ msgstr "Deine Kreditkartennummer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					#~| msgid "Card Number"
 | 
				
			||||||
 | 
					#~ msgid "Cardholder Name"
 | 
				
			||||||
 | 
					#~ msgstr "Kreditkartennummer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "How it works"
 | 
				
			||||||
 | 
					#~ msgstr "So funktioniert es"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Your infrastructure"
 | 
				
			||||||
 | 
					#~ msgstr "deine Infrastruktur"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Our inftrastructure"
 | 
				
			||||||
 | 
					#~ msgstr "Unsere Infrastruktur"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Pricing"
 | 
				
			||||||
 | 
					#~ msgstr "Preise"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Access Key"
 | 
				
			||||||
 | 
					#~ msgstr "Zugriffsschlüssel"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Upload your own key. "
 | 
				
			||||||
 | 
					#~ msgstr "Lade deinen Key hoch"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Generate Key Pair"
 | 
				
			||||||
 | 
					#~ msgstr "Schlüsselpaar generieren"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Created at"
 | 
				
			||||||
 | 
					#~ msgstr "Erstellt am"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#~ msgid "Billing Amount"
 | 
					#~ msgid "Billing Amount"
 | 
				
			||||||
#~ msgstr "Rechnungsbetrag"
 | 
					#~ msgstr "Rechnungsbetrag"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -610,25 +617,6 @@ msgstr ""
 | 
				
			||||||
#~ msgid "EXPIRATION DATE"
 | 
					#~ msgid "EXPIRATION DATE"
 | 
				
			||||||
#~ msgstr "Ablaufdatum"
 | 
					#~ msgstr "Ablaufdatum"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#~ msgid "Home"
 | 
					 | 
				
			||||||
#~ msgstr "Home"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#~ msgid "Log in"
 | 
					 | 
				
			||||||
#~ msgstr "Anmelden"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#~ msgid "You haven been logged out"
 | 
					 | 
				
			||||||
#~ msgstr "Sie wurden abgmeldet"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#~ msgid "Upload Key"
 | 
					 | 
				
			||||||
#~ msgstr "Schlüssel hochladen"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#~ msgid ""
 | 
					 | 
				
			||||||
#~ "Use your created key to access to the machine. If you lost it, contact us."
 | 
					 | 
				
			||||||
#~ msgstr ""
 | 
					 | 
				
			||||||
#~ "Verwende deinen privaten SSH Schlüssel, um dich mit deinen Maschinen zu "
 | 
					 | 
				
			||||||
#~ "verbinden. Solltest du deinen privaten Schlüssel verloren haben, dann "
 | 
					 | 
				
			||||||
#~ "kontaktiere uns."
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#~ msgid "Copy to Clipboard"
 | 
					#~ msgid "Copy to Clipboard"
 | 
				
			||||||
#~ msgstr "Kopieren"
 | 
					#~ msgstr "Kopieren"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -638,6 +626,3 @@ msgstr ""
 | 
				
			||||||
#~ msgstr ""
 | 
					#~ msgstr ""
 | 
				
			||||||
#~ "Dein privater SSH Schlüssel wurde bereits generiert und heruntergeladen. "
 | 
					#~ "Dein privater SSH Schlüssel wurde bereits generiert und heruntergeladen. "
 | 
				
			||||||
#~ "Falls du ihn verloren hast, kontaktiere uns."
 | 
					#~ "Falls du ihn verloren hast, kontaktiere uns."
 | 
				
			||||||
 | 
					 | 
				
			||||||
#~ msgid "Generate my key"
 | 
					 | 
				
			||||||
#~ msgstr "Generiere meinen Schlüssel"
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										20
									
								
								hosting/migrations/0041_userhostingkey_private_key.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								hosting/migrations/0041_userhostingkey_private_key.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2017-07-06 09:06
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('hosting', '0040_hostingplan'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='userhostingkey',
 | 
				
			||||||
 | 
					            name='private_key',
 | 
				
			||||||
 | 
					            field=models.FileField(blank=True, upload_to='private_keys'),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -101,6 +101,7 @@ class HostingOrder(AssignPermissionsMixin, models.Model):
 | 
				
			||||||
class UserHostingKey(models.Model):
 | 
					class UserHostingKey(models.Model):
 | 
				
			||||||
    user = models.ForeignKey(CustomUser)
 | 
					    user = models.ForeignKey(CustomUser)
 | 
				
			||||||
    public_key = models.TextField()
 | 
					    public_key = models.TextField()
 | 
				
			||||||
 | 
					    private_key = models.FileField(upload_to='private_keys',  blank=True)
 | 
				
			||||||
    created_at = models.DateTimeField(auto_now_add=True)
 | 
					    created_at = models.DateTimeField(auto_now_add=True)
 | 
				
			||||||
    name = models.CharField(max_length=100)
 | 
					    name = models.CharField(max_length=100)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,24 +5,25 @@
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.dashboard-container {
 | 
					.dashboard-container {
 | 
				
			||||||
	padding-top:70px; padding-bottom: 70px;
 | 
					  padding-top:70px;
 | 
				
			||||||
	width: 90%;
 | 
					  padding-bottom: 70px;
 | 
				
			||||||
	margin: 0 auto;
 | 
					  width: 90%;
 | 
				
			||||||
	max-width: 768px;
 | 
					  margin: 0 auto;
 | 
				
			||||||
 | 
					  max-width: 768px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.content-dashboard{
 | 
					.content-dashboard{
 | 
				
			||||||
	min-height: 100vh;
 | 
						min-height: calc(100vh - 120px);
 | 
				
			||||||
	width: 80%;
 | 
						width: 80%;
 | 
				
			||||||
	margin: 0 auto;
 | 
						margin: 0 auto;
 | 
				
			||||||
	max-width: 1120px;
 | 
						max-width: 1120px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.container-table{
 | 
					.container-table{
 | 
				
			||||||
	margin-top: 35px;
 | 
					  margin-top: 35px;
 | 
				
			||||||
	overflow-y: hidden; 
 | 
					  overflow-y: hidden;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.container-table table{
 | 
					.container-table table{
 | 
				
			||||||
	overflow-y: auto; 
 | 
					  overflow-y: auto;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.borderless td {
 | 
					.borderless td {
 | 
				
			||||||
    border: none !important;
 | 
					    border: none !important;
 | 
				
			||||||
| 
						 | 
					@ -42,25 +43,150 @@
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.space-above {
 | 
					.space-above {
 | 
				
			||||||
	margin-top: 4%;
 | 
					  margin-top: 4%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.space-above-big {
 | 
					.space-above-big {
 | 
				
			||||||
	margin-top: 20%;
 | 
					  margin-top: 20%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.table>tbody>tr>td{
 | 
					.table>tbody>tr>td{
 | 
				
			||||||
	vertical-align: middle;
 | 
					  vertical-align: middle;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.fa-separate{
 | 
					.fa-separate{
 | 
				
			||||||
	margin-right: 15px;
 | 
					  margin-right: 15px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@media (max-width: 540px) {
 | 
					@media (max-width: 540px) {
 | 
				
			||||||
    select {
 | 
					    select {
 | 
				
			||||||
    	width: 280px; 
 | 
					      width: 280px;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    .content-dashboard {
 | 
					    .content-dashboard {
 | 
				
			||||||
	    width: 90%;
 | 
					      width: 90%;
 | 
				
			||||||
	}
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.btn:focus, .btn:active:focus {
 | 
				
			||||||
 | 
						outline: 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***********Styles for Model********************/
 | 
				
			||||||
 | 
					.modal-content {
 | 
				
			||||||
 | 
					    border-radius: 0px;
 | 
				
			||||||
 | 
					    font-family: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					  float: left;
 | 
				
			||||||
 | 
					  border-radius: 0;
 | 
				
			||||||
 | 
					  font-weight: 300;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.modal-header {
 | 
				
			||||||
 | 
					  min-height: 30px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.modal-header .close {
 | 
				
			||||||
 | 
					    font-size: 75px;
 | 
				
			||||||
 | 
					    font-weight: 300;
 | 
				
			||||||
 | 
					    margin-top: 0;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    right: 11px;
 | 
				
			||||||
 | 
					    z-index: 10;
 | 
				
			||||||
 | 
					    line-height: 60px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.modal-header .close span {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.modal-header .close:focus {
 | 
				
			||||||
 | 
					  outline: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.modal-header {
 | 
				
			||||||
 | 
					    border-bottom: 0px solid #e5e5e5;
 | 
				
			||||||
 | 
					    padding: 0px 15px;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					.modal-body {
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    padding: 0px 40px 15px 30px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.modal-body .modal-icon i {
 | 
				
			||||||
 | 
					    font-size: 80px;
 | 
				
			||||||
 | 
					    font-weight: 100;
 | 
				
			||||||
 | 
					    color: #999;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.modal-title {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    line-height: 1.42857143;
 | 
				
			||||||
 | 
					    font-size: 25px;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    font-family: 'Lato', sans-serif;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.modal-text {
 | 
				
			||||||
 | 
					    padding-top: 15px;
 | 
				
			||||||
 | 
					    font-size: 16px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.modal-footer {
 | 
				
			||||||
 | 
					    border-top: 0px solid #e5e5e5;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    padding: 15px 15px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.modal-footer button[type="submit"] {
 | 
				
			||||||
 | 
					  min-width: 80px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media (min-width: 1300px) {
 | 
				
			||||||
 | 
					    .modal-dialog {/*     top: 30%; */width: 35%;}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media (max-width: 1299px) {
 | 
				
			||||||
 | 
					    .modal-dialog {
 | 
				
			||||||
 | 
					/*     top: 20%; */
 | 
				
			||||||
 | 
					    width: 43%;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media (max-width: 900px) {
 | 
				
			||||||
 | 
					    .modal-dialog {
 | 
				
			||||||
 | 
					/*     top: 20%; */
 | 
				
			||||||
 | 
					    width: 50%;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media (max-width: 767px) {
 | 
				
			||||||
 | 
					    .modal-dialog {
 | 
				
			||||||
 | 
					/*     top: 30%; */
 | 
				
			||||||
 | 
					    width: 95%;
 | 
				
			||||||
 | 
					    margin: 0 auto !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ========= */
 | 
				
			||||||
 | 
					@media(min-width: 320px) {
 | 
				
			||||||
 | 
					   .modal:before {
 | 
				
			||||||
 | 
					     content: '';
 | 
				
			||||||
 | 
					     display: inline-block;
 | 
				
			||||||
 | 
					     height: 100%;
 | 
				
			||||||
 | 
					     vertical-align: middle;
 | 
				
			||||||
 | 
					     margin-right: -4px;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 @media (min-width: 768px) {
 | 
				
			||||||
 | 
					   .modal-dialog {
 | 
				
			||||||
 | 
					/*        width: 520px; */
 | 
				
			||||||
 | 
					       margin: 15px auto;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 .modal {
 | 
				
			||||||
 | 
					   text-align: center;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 .modal-dialog {
 | 
				
			||||||
 | 
					   display: inline-block;
 | 
				
			||||||
 | 
					   text-align: left;
 | 
				
			||||||
 | 
					   vertical-align: middle;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,6 +55,11 @@ h6 {
 | 
				
			||||||
    box-shadow: none;
 | 
					    box-shadow: none;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.navbar-transparent.topnav {
 | 
				
			||||||
 | 
					    z-index: 1005;
 | 
				
			||||||
 | 
					    margin-bottom: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.navbar-transparent .navbar-nav>li>a {
 | 
					.navbar-transparent .navbar-nav>li>a {
 | 
				
			||||||
    color: #fff;
 | 
					    color: #fff;
 | 
				
			||||||
    cursor: pointer;
 | 
					    cursor: pointer;
 | 
				
			||||||
| 
						 | 
					@ -71,6 +76,7 @@ h6 {
 | 
				
			||||||
.navbar-transparent #logoWhite{
 | 
					.navbar-transparent #logoWhite{
 | 
				
			||||||
    display: block;
 | 
					    display: block;
 | 
				
			||||||
    width: 220px;
 | 
					    width: 220px;
 | 
				
			||||||
 | 
					    /* color: #fff; */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.lead {
 | 
					.lead {
 | 
				
			||||||
| 
						 | 
					@ -230,12 +236,16 @@ h6 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*------Auth section---------*/
 | 
					/*------Auth section---------*/
 | 
				
			||||||
.auth-container {
 | 
					.auth-container {
 | 
				
			||||||
    height: 100vh;
 | 
					    min-height: calc(100vh - 120px);
 | 
				
			||||||
    position: relative;
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    /* flex-grow: 1; */
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    flex-direction: column;
 | 
				
			||||||
 | 
					    justify-content: center;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-bg {
 | 
					.auth-bg {
 | 
				
			||||||
    background: url(../img/auth-bg.jpg);
 | 
					    background: url(../img/auth-bg-sm.jpg);
 | 
				
			||||||
    position: fixed;
 | 
					    position: fixed;
 | 
				
			||||||
    left: 0;
 | 
					    left: 0;
 | 
				
			||||||
    top: 0;
 | 
					    top: 0;
 | 
				
			||||||
| 
						 | 
					@ -270,11 +280,11 @@ h6 {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-container .auth-center {
 | 
					.auth-container .auth-center {
 | 
				
			||||||
    position: absolute;
 | 
					    /* position: absolute; */
 | 
				
			||||||
    left: 50%;
 | 
					    /* left: 50%; */
 | 
				
			||||||
    top: 50%;
 | 
					    /* top: 50%; */
 | 
				
			||||||
    transform: translate(-50%, -50%);
 | 
					    /* transform: translate(-50%, -50%); */
 | 
				
			||||||
    width: 100%;
 | 
					    /* width: 100%; */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.auth-container .auth-title {
 | 
					.auth-container .auth-title {
 | 
				
			||||||
| 
						 | 
					@ -426,6 +436,11 @@ h6 {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.auth-box .msg-list {
 | 
				
			||||||
 | 
					    padding: 15px 25px 5px;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@media (max-width: 540px) {
 | 
					@media (max-width: 540px) {
 | 
				
			||||||
    .auth-container .auth-title h2 {
 | 
					    .auth-container .auth-title h2 {
 | 
				
			||||||
        font-size: 32px;
 | 
					        font-size: 32px;
 | 
				
			||||||
| 
						 | 
					@ -548,6 +563,10 @@ a.unlink:hover {
 | 
				
			||||||
    padding: 5px;
 | 
					    padding: 5px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.card-warning-addtional-margin {
 | 
				
			||||||
 | 
					    margin-top: 15px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.stripe-payment-btn {
 | 
					.stripe-payment-btn {
 | 
				
			||||||
    outline: none;
 | 
					    outline: none;
 | 
				
			||||||
    width: auto;
 | 
					    width: auto;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										326
									
								
								hosting/static/hosting/css/user_keys.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										326
									
								
								hosting/static/hosting/css/user_keys.css
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,326 @@
 | 
				
			||||||
 | 
					/* ssh_keys_choice */
 | 
				
			||||||
 | 
					.h1-thin {
 | 
				
			||||||
 | 
					    font-family: Lato, sans-serif;
 | 
				
			||||||
 | 
					    font-weight: 300;
 | 
				
			||||||
 | 
					    font-size: 32px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.dashboard-container .page-header {
 | 
				
			||||||
 | 
					    border: 0;
 | 
				
			||||||
 | 
					    margin-top: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.dashboard-choice-container .page-header p {
 | 
				
			||||||
 | 
					    font-size: 16px;
 | 
				
			||||||
 | 
					    font-family: Lato, sans-serif;
 | 
				
			||||||
 | 
					    font-weight: 300;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.dashboard-choice-container h2 {
 | 
				
			||||||
 | 
					    font-family: Lato, sans-serif;
 | 
				
			||||||
 | 
					    font-weight: 400;
 | 
				
			||||||
 | 
					    font-size: 22px;
 | 
				
			||||||
 | 
					    margin-top: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choice-container {
 | 
				
			||||||
 | 
					    border: 1px solid #C9C6C6;
 | 
				
			||||||
 | 
					    padding: 25px;
 | 
				
			||||||
 | 
					    border-radius: 1px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choice-container p{
 | 
				
			||||||
 | 
					    font-size: 18px;
 | 
				
			||||||
 | 
					    font-family: Lato, sans-serif;
 | 
				
			||||||
 | 
					    font-weight: 300;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choice-container-top {
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #C9C6C6;
 | 
				
			||||||
 | 
					    padding-bottom: 25px;
 | 
				
			||||||
 | 
					    margin-bottom: 25px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choice-container .choice-btn {
 | 
				
			||||||
 | 
					    margin-top: 25px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choice-btn {
 | 
				
			||||||
 | 
					    min-width: 110px;
 | 
				
			||||||
 | 
					    background-color: #3C5480;
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					    border: 2px solid #3C5480;
 | 
				
			||||||
 | 
					    padding: 4px 10px;
 | 
				
			||||||
 | 
					    transition: 0.3s all ease-out;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choice-btn:focus,
 | 
				
			||||||
 | 
					.choice-btn:hover,
 | 
				
			||||||
 | 
					.choice-btn:active {
 | 
				
			||||||
 | 
					    color: #3C5480;
 | 
				
			||||||
 | 
					    background-color: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choice-btn-faded {
 | 
				
			||||||
 | 
					    background-color: #8396C4;
 | 
				
			||||||
 | 
					    border: 2px solid #8396C4;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@media (max-width: 767px) {
 | 
				
			||||||
 | 
					    .h1-thin {
 | 
				
			||||||
 | 
					        font-size: 27px;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    .dashboard-choice-container h2 {
 | 
				
			||||||
 | 
					        font-size: 20px;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    .choice-container p {
 | 
				
			||||||
 | 
					        font-size: 16px;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    .choice-btn{
 | 
				
			||||||
 | 
					        margin-top: 15px;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@media (max-width: 420px) {
 | 
				
			||||||
 | 
					    .ssh-keys-table {table-layout: fixed;}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ssh-keys-table thead tr th,
 | 
				
			||||||
 | 
					.ssh-keys-table tbody tr td{
 | 
				
			||||||
 | 
					    color: #717274;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #cbcbcb;
 | 
				
			||||||
 | 
					    vertical-align: middle;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.ssh-keys-table tbody tr{
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #cbcbcb;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.ssh-keys-table thead tr th:first-of-type,
 | 
				
			||||||
 | 
					.ssh-keys-table tbody tr td:first-of-type{
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.ssh-keys-table thead tr th:last-of-type,
 | 
				
			||||||
 | 
					.ssh-keys-table tbody tr td:last-of-type{
 | 
				
			||||||
 | 
					    width: 20%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.ssh-key-header {
 | 
				
			||||||
 | 
					    color: #717274;
 | 
				
			||||||
 | 
					    font-size: 16px;
 | 
				
			||||||
 | 
					    font-weight: 300;
 | 
				
			||||||
 | 
					    text-align: justify;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.ssh-header-container{
 | 
				
			||||||
 | 
					    padding-top: 15px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@media (min-width: 768px) {
 | 
				
			||||||
 | 
					    .ssh-header-container {
 | 
				
			||||||
 | 
					        display: flex;
 | 
				
			||||||
 | 
					        justify-content: space-between;
 | 
				
			||||||
 | 
					        align-items: flex-start;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    .ssh-header-container p{
 | 
				
			||||||
 | 
					        margin-bottom: 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ssh-header-container p{
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    color: #717274;
 | 
				
			||||||
 | 
					    font-size: 16px;
 | 
				
			||||||
 | 
					    font-weight: 300;
 | 
				
			||||||
 | 
					    font-family: 'Lato';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.borderless tbody:before {
 | 
				
			||||||
 | 
					    display: none !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.btn-custom-download{
 | 
				
			||||||
 | 
					    background-color: #337ab7;
 | 
				
			||||||
 | 
					    margin-top: auto;
 | 
				
			||||||
 | 
					    margin-bottom: auto;
 | 
				
			||||||
 | 
					    /* font-weight: 700; */
 | 
				
			||||||
 | 
					    vertical-align: middle;
 | 
				
			||||||
 | 
					    margin-right: 25px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.btn-custom-delete{
 | 
				
			||||||
 | 
					    width: 100px;
 | 
				
			||||||
 | 
					    background-color: #f1f0f0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.btn-custom-delete a, .btn-custom-download a{
 | 
				
			||||||
 | 
					    text-decoration: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.modal-body p.ssh-key{
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					    word-wrap: break-word;
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					    margin-top: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@media screen and (max-width: 768px) {
 | 
				
			||||||
 | 
					    .ssh-header-container{
 | 
				
			||||||
 | 
					        flex-direction: column-reverse;
 | 
				
			||||||
 | 
					        align-items: flex-start;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    .btn-custom-delete{
 | 
				
			||||||
 | 
					    width: auto;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    .dashboard-container {
 | 
				
			||||||
 | 
					     width: 100% !important;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    .row {
 | 
				
			||||||
 | 
					     /* margin-right: 0; */
 | 
				
			||||||
 | 
					     /* margin-left: 0; */
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    .col-md-12, .col-sm-12{
 | 
				
			||||||
 | 
					        padding-left: 5px;
 | 
				
			||||||
 | 
					        padding-right: 5px;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media (max-width: 360px){
 | 
				
			||||||
 | 
					    .content-dashboard {
 | 
				
			||||||
 | 
					        /* width: 100% !important; */
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    .container {
 | 
				
			||||||
 | 
					        padding-right: 5px;
 | 
				
			||||||
 | 
					        padding-left: 5px;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.dashboard-choice-container {
 | 
				
			||||||
 | 
					    max-width: 834px !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.form_public_key{
 | 
				
			||||||
 | 
					    resize: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media (min-width: 768px) {
 | 
				
			||||||
 | 
					    .form_key_name{
 | 
				
			||||||
 | 
					        width:60%;
 | 
				
			||||||
 | 
					        min-width: 215px;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.form_public_key,
 | 
				
			||||||
 | 
					.form_key_name{
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    border:none;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid grey;
 | 
				
			||||||
 | 
					    box-shadow: none;
 | 
				
			||||||
 | 
					    border-radius: 0;
 | 
				
			||||||
 | 
					    font-family: 'Lato-Light', sans-serif;
 | 
				
			||||||
 | 
					    font-size: 20px;
 | 
				
			||||||
 | 
					    padding-left: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.form_key_name::-webkit-input-placeholder{
 | 
				
			||||||
 | 
					    font-size: 20px;
 | 
				
			||||||
 | 
					    font-weight:100;
 | 
				
			||||||
 | 
					    font-family: 'Lato-Light', sans-serif;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.form_key_name::-moz-input-placeholder{
 | 
				
			||||||
 | 
					    font-size: 20px;
 | 
				
			||||||
 | 
					    font-weight:200;
 | 
				
			||||||
 | 
					    font-family: 'Lato-Light', sans-serif;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.form_key_name:-moz-input-placeholder{
 | 
				
			||||||
 | 
					    font-family: 'Lato-Light', sans-serif;
 | 
				
			||||||
 | 
					    font-size: 20px;
 | 
				
			||||||
 | 
					    font-weight:200;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.form_key_name:-ms-input-placeholder {
 | 
				
			||||||
 | 
					    font-size: 20px;
 | 
				
			||||||
 | 
					    font-family: 'Lato-Light', sans-serif;
 | 
				
			||||||
 | 
					    font-weight:200;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.form_public_key::-webkit-input-placeholder{
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    top: 110px;
 | 
				
			||||||
 | 
					    font-size: 20px;
 | 
				
			||||||
 | 
					    font-weight: 200;
 | 
				
			||||||
 | 
					    font-family: 'Lato-Light', sans-serif;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.form_public_key::-moz-input-placeholder{
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    top: 110px;
 | 
				
			||||||
 | 
					    font-size: 20px;
 | 
				
			||||||
 | 
					    font-family: 'Lato-Light', sans-serif;
 | 
				
			||||||
 | 
					    font-weight:200;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.form_public_key:-moz-input-placeholder{
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    top: 110px;
 | 
				
			||||||
 | 
					    font-size: 20px;
 | 
				
			||||||
 | 
					    font-weight:200;
 | 
				
			||||||
 | 
					    font-family: 'Lato-Light', sans-serif;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.form_public_key:-ms-input-placeholder {
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    top: 110px;
 | 
				
			||||||
 | 
					    font-size: 20px;
 | 
				
			||||||
 | 
					    font-weight:200;
 | 
				
			||||||
 | 
					    font-family: 'Lato-Light', sans-serif;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.underform-contaner{
 | 
				
			||||||
 | 
					    margin-bottom: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media (min-width: 767px) {
 | 
				
			||||||
 | 
					    .underform-contaner {
 | 
				
			||||||
 | 
					        display: flex;
 | 
				
			||||||
 | 
					        vertical-align: middle;
 | 
				
			||||||
 | 
					        align-items: center;
 | 
				
			||||||
 | 
					        justify-content: space-between;
 | 
				
			||||||
 | 
					        flex-direction: row;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media (max-width: 767px) {
 | 
				
			||||||
 | 
					    .underform-contaner .btn-container {
 | 
				
			||||||
 | 
					        text-align: right;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.underform-contaner h4{
 | 
				
			||||||
 | 
					    font-family: 'Lato-Light', sans-serif;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.underform-contaner button{
 | 
				
			||||||
 | 
					    /* font-family: Lato; */
 | 
				
			||||||
 | 
					    /* font-weight: 600; */
 | 
				
			||||||
 | 
					    min-width: 120px;
 | 
				
			||||||
 | 
					    height: 35px;
 | 
				
			||||||
 | 
					    margin-top: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.underform-contaner .btn-default{
 | 
				
			||||||
 | 
					    background-color: #ccc;
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.control-label{
 | 
				
			||||||
 | 
					    font-family: 'Lato-Light', sans-serif;
 | 
				
			||||||
 | 
					    font-size: 20px;
 | 
				
			||||||
 | 
					    font-weight:200;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.form-ssh h3{
 | 
				
			||||||
 | 
					    margin-bottom: 40px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.custom_form_button{
 | 
				
			||||||
 | 
					    border-radius: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.form_key_name:focus,
 | 
				
			||||||
 | 
					.form_public_key:focus,
 | 
				
			||||||
 | 
					.has-error .form_key_name,
 | 
				
			||||||
 | 
					.has-error .form_key_name:focus,
 | 
				
			||||||
 | 
					.has-error .form_public_key,
 | 
				
			||||||
 | 
					.has-error .form_public_key:focus,
 | 
				
			||||||
 | 
					.has-success .form_key_name,
 | 
				
			||||||
 | 
					.has-success .form_key_name:focus,
 | 
				
			||||||
 | 
					.has-success .form_public_key,
 | 
				
			||||||
 | 
					.has-success .form_public_key:focus {
 | 
				
			||||||
 | 
					    box-shadow: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.wide440 {
 | 
				
			||||||
 | 
					    max-width: 440px;
 | 
				
			||||||
 | 
					    margin: auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.mob-only {
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media (max-width: 767px) {
 | 
				
			||||||
 | 
					    .mob-only {
 | 
				
			||||||
 | 
					        display: initial;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    .pc-only {
 | 
				
			||||||
 | 
					        display: none;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								hosting/static/hosting/img/auth-bg-sm.jpg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								hosting/static/hosting/img/auth-bg-sm.jpg
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 114 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								hosting/static/hosting/img/g222.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								hosting/static/hosting/img/g222.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 774 B  | 
| 
						 | 
					@ -18,6 +18,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Custom CSS -->
 | 
					    <!-- Custom CSS -->
 | 
				
			||||||
    <link href="{% static 'hosting/css/landing-page.css' %}" rel="stylesheet">
 | 
					    <link href="{% static 'hosting/css/landing-page.css' %}" rel="stylesheet">
 | 
				
			||||||
 | 
					    <link href="{% static 'hosting/css/user_keys.css' %}" rel="stylesheet">
 | 
				
			||||||
    <link href="{% static 'hosting/css/payment.css' %}" rel="stylesheet">
 | 
					    <link href="{% static 'hosting/css/payment.css' %}" rel="stylesheet">
 | 
				
			||||||
    <link href="{% static 'hosting/css/order.css' %}" rel="stylesheet">
 | 
					    <link href="{% static 'hosting/css/order.css' %}" rel="stylesheet">
 | 
				
			||||||
    <link href="{% static 'hosting/css/orders.css' %}" rel="stylesheet">
 | 
					    <link href="{% static 'hosting/css/orders.css' %}" rel="stylesheet">
 | 
				
			||||||
| 
						 | 
					@ -27,7 +28,7 @@
 | 
				
			||||||
    <!-- Custom Fonts -->
 | 
					    <!-- Custom Fonts -->
 | 
				
			||||||
    <link href='//fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
 | 
					    <link href='//fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
 | 
				
			||||||
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
 | 
					    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
 | 
				
			||||||
    <link href="//fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
 | 
					    <link href="//fonts.googleapis.com/css?family=Lato:300,400,500,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
 | 
				
			||||||
    <link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
 | 
					    <link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
 | 
				
			||||||
    <link rel="stylesheet" href="{% static 'hosting/css/owl.carousel.min.css' %}">
 | 
					    <link rel="stylesheet" href="{% static 'hosting/css/owl.carousel.min.css' %}">
 | 
				
			||||||
    <link rel="stylesheet" href="{% static 'hosting/css/owl.theme.default.min.css' %}">
 | 
					    <link rel="stylesheet" href="{% static 'hosting/css/owl.theme.default.min.css' %}">
 | 
				
			||||||
| 
						 | 
					@ -86,7 +87,7 @@
 | 
				
			||||||
                          <ul id="g-account-menu" class="dropdown-menu" role="menu">
 | 
					                          <ul id="g-account-menu" class="dropdown-menu" role="menu">
 | 
				
			||||||
                            <li>
 | 
					                            <li>
 | 
				
			||||||
                                <a href="{% url 'hosting:ssh_keys' %}">
 | 
					                                <a href="{% url 'hosting:ssh_keys' %}">
 | 
				
			||||||
                                    <i class="fa fa-key"></i> {% trans "Keys"%}
 | 
					                                    <i class="fa fa-key"></i> {% trans "SSH Keys" %}
 | 
				
			||||||
                                </a>
 | 
					                                </a>
 | 
				
			||||||
                            </li>
 | 
					                            </li>
 | 
				
			||||||
                            <li>
 | 
					                            <li>
 | 
				
			||||||
| 
						 | 
					@ -116,7 +117,7 @@
 | 
				
			||||||
    {% if request.user.is_authenticated %}
 | 
					    {% if request.user.is_authenticated %}
 | 
				
			||||||
    <footer class="footer-vm">
 | 
					    <footer class="footer-vm">
 | 
				
			||||||
        <div class="container">
 | 
					        <div class="container">
 | 
				
			||||||
            <p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
 | 
					            <p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. {% trans "All Rights Reserved" %}</p>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    </footer>
 | 
					    </footer>
 | 
				
			||||||
    {% else %}
 | 
					    {% else %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										66
									
								
								hosting/templates/hosting/choice_ssh_keys.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								hosting/templates/hosting/choice_ssh_keys.html
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,66 @@
 | 
				
			||||||
 | 
					{% extends "hosting/base_short.html" %}
 | 
				
			||||||
 | 
					{% load staticfiles bootstrap3 i18n %}
 | 
				
			||||||
 | 
					{% block content %}
 | 
				
			||||||
 | 
					<div>
 | 
				
			||||||
 | 
						<div class="container virtual-machine-container dashboard-container dashboard-choice-container">
 | 
				
			||||||
 | 
							<div class="wide440">
 | 
				
			||||||
 | 
					            <div class="page-header">
 | 
				
			||||||
 | 
					                <h1 class="h1-thin"><i class="fa fa-key" aria-hidden="true"></i> {% trans "SSH Key"%}</h1>
 | 
				
			||||||
 | 
					                <p>{% trans "Choose a key option in order to access your VM" %}.</p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            {% if messages %}
 | 
				
			||||||
 | 
					            <div class="alert alert-warning">
 | 
				
			||||||
 | 
					                {% for message in messages %}
 | 
				
			||||||
 | 
					                <span>{{ message }}</span>
 | 
				
			||||||
 | 
					                {% endfor %}
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            {% endif %}
 | 
				
			||||||
 | 
					            <div class="choice-container">
 | 
				
			||||||
 | 
					                <div class="choice-container-top">
 | 
				
			||||||
 | 
					                    <h2>{% trans "Generating a new key pair" %}</h2>
 | 
				
			||||||
 | 
					                    <p>{% trans "I want to generate a new key pair" %}.</p>
 | 
				
			||||||
 | 
					                    <form class="text-right" action="" method="post">
 | 
				
			||||||
 | 
					                        {% csrf_token %}
 | 
				
			||||||
 | 
					                        <button type="submit" class="btn choice-btn choice-btn-faded">
 | 
				
			||||||
 | 
					                            {% trans "Generate" %}
 | 
				
			||||||
 | 
					                        </button>
 | 
				
			||||||
 | 
					                    </form>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <div>
 | 
				
			||||||
 | 
					                    <h2>{% trans "Using existing key" %}</h2>
 | 
				
			||||||
 | 
					                    <p>{% trans "I want to use my existing public key"%}.</p>
 | 
				
			||||||
 | 
					                    <form class="text-right" action="{% url 'hosting:create_ssh_key' %}">
 | 
				
			||||||
 | 
					                        <button type="submit" class="btn choice-btn">
 | 
				
			||||||
 | 
					                            {% trans "Upload" %}
 | 
				
			||||||
 | 
					                        </button>
 | 
				
			||||||
 | 
					                    </form>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
						    </div>
 | 
				
			||||||
 | 
						</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% if next_url %}
 | 
				
			||||||
 | 
					    <script type="text/javascript">
 | 
				
			||||||
 | 
					        window.location.href = '{{next_url}}';
 | 
				
			||||||
 | 
					    </script>
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script type="text/javascript">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    window.onload = function () {
 | 
				
			||||||
 | 
					        {% for user_key in keys %}
 | 
				
			||||||
 | 
					            var locale_date = moment.utc(document.getElementById("ssh-created_at-{{user_key.id}}").textContent,'YYYY-MM-DD HH:mm').toDate();
 | 
				
			||||||
 | 
					            locale_date =  moment(locale_date).format("YYYY-MM-DD h:mm:ss a");
 | 
				
			||||||
 | 
					            document.getElementById('ssh-created_at-{{user_key.id}}').innerHTML = locale_date;
 | 
				
			||||||
 | 
					        {% endfor %}
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{%endblock%}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,10 @@
 | 
				
			||||||
{% load staticfiles bootstrap3%}
 | 
					{% load staticfiles bootstrap3%}
 | 
				
			||||||
{% load i18n %}
 | 
					{% load i18n %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block navbar %}
 | 
				
			||||||
 | 
					    {% include  'hosting/includes/_navbar_transparent.html' %}
 | 
				
			||||||
 | 
					{% endblock navbar %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<div class="auth-container">
 | 
					<div class="auth-container">
 | 
				
			||||||
   <div class="auth-bg"></div>
 | 
					   <div class="auth-bg"></div>
 | 
				
			||||||
| 
						 | 
					@ -13,7 +17,7 @@
 | 
				
			||||||
                <div class="intro-message auth-box sign-up">
 | 
					                <div class="intro-message auth-box sign-up">
 | 
				
			||||||
                     <h2  class="section-heading">{% trans "Set your new password"%}</h2>
 | 
					                     <h2  class="section-heading">{% trans "Set your new password"%}</h2>
 | 
				
			||||||
                    {% if messages %}
 | 
					                    {% if messages %}
 | 
				
			||||||
                        <ul class="list-unstyled">
 | 
					                        <ul class="list-unstyled msg-list">
 | 
				
			||||||
                        {% for message in messages %}
 | 
					                        {% for message in messages %}
 | 
				
			||||||
                            <li>{{ message }}</li>
 | 
					                            <li>{{ message }}</li>
 | 
				
			||||||
                        {% endfor %}
 | 
					                        {% endfor %}
 | 
				
			||||||
| 
						 | 
					@ -25,7 +29,7 @@
 | 
				
			||||||
                            {% bootstrap_field field show_label=False %}
 | 
					                            {% bootstrap_field field show_label=False %}
 | 
				
			||||||
                        {% endfor %}
 | 
					                        {% endfor %}
 | 
				
			||||||
                        {% buttons %}
 | 
					                        {% buttons %}
 | 
				
			||||||
                            <button type="submit" class="btn btn-default">
 | 
					                            <button type="submit" class="btn btn-block btn-success">
 | 
				
			||||||
                            {% trans "Reset"%}
 | 
					                            {% trans "Reset"%}
 | 
				
			||||||
                            </button>
 | 
					                            </button>
 | 
				
			||||||
                        {% endbuttons %}
 | 
					                        {% endbuttons %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,7 +26,7 @@
 | 
				
			||||||
                        <a href="#contact">Contact</a>
 | 
					                        <a href="#contact">Contact</a>
 | 
				
			||||||
                    </li>
 | 
					                    </li>
 | 
				
			||||||
                </ul>
 | 
					                </ul>
 | 
				
			||||||
                <p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
 | 
					                <p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. {% trans "All Rights Reserved" %}</p>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
{% load static i18n %}
 | 
					{% load static i18n %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<nav class="navbar navbar-default  navbar-fixed-top topnav navbar-transparent" role="navigation">
 | 
					<nav class="navbar navbar-default  topnav navbar-transparent" role="navigation">
 | 
				
			||||||
    <div class="container topnav">
 | 
					    <div class="container 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">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,46 +7,47 @@
 | 
				
			||||||
{% endblock navbar %}
 | 
					{% endblock navbar %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
 | 
					 | 
				
			||||||
<div class="auth-container">
 | 
					<div class="auth-container">
 | 
				
			||||||
    <div class="auth-bg"></div>
 | 
					    <div class="auth-bg"></div>
 | 
				
			||||||
 | 
					    <div class="auth-center">
 | 
				
			||||||
        <div class="auth-center">
 | 
					        <div class="auth-title">
 | 
				
			||||||
 | 
					            <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
 | 
				
			||||||
            <div class="auth-title">
 | 
					        </div>
 | 
				
			||||||
                <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
 | 
					        <div class="auth-content">
 | 
				
			||||||
            </div>
 | 
					            <div class="intro-message auth-box">
 | 
				
			||||||
            <div class="auth-content">
 | 
					                <h2 class="section-heading">{% trans "Login"%}</h2>
 | 
				
			||||||
 | 
					                {% if messages %}
 | 
				
			||||||
                <div class="intro-message auth-box">
 | 
					                    <ul class="list-unstyled msg-list">
 | 
				
			||||||
                    <h2 class="section-heading">{% trans "Login"%}</h2>
 | 
					                    {% for message in messages %}
 | 
				
			||||||
                    <form action="{% url 'hosting:login' %}" method="post" class="form" novalidated>
 | 
					                        <li>{{ message }}</li>
 | 
				
			||||||
                        {% csrf_token %}
 | 
					                    {% endfor %}
 | 
				
			||||||
                        {% for field in form %}
 | 
					                    </ul>
 | 
				
			||||||
                            {% bootstrap_field field show_label=False type='fields'%}
 | 
					                {% endif %}
 | 
				
			||||||
                        {% endfor %}
 | 
					                <form action="{% url 'hosting:login' %}" method="post" class="form" novalidated>
 | 
				
			||||||
                        <p class="red">{{form.non_field_errors|striptags}}</p>
 | 
					                    {% csrf_token %}
 | 
				
			||||||
                        {% buttons %}
 | 
					                    {% for field in form %}
 | 
				
			||||||
                            <button type="submit" class="btn btn-block btn-success">
 | 
					                        {% bootstrap_field field show_label=False type='fields'%}
 | 
				
			||||||
                                {% trans "Login"%}
 | 
					                    {% endfor %}
 | 
				
			||||||
                            </button>
 | 
					                    <p class="red">{{form.non_field_errors|striptags}}</p>
 | 
				
			||||||
                        {% endbuttons %}
 | 
					                    {% buttons %}
 | 
				
			||||||
 | 
					                        <button type="submit" class="btn btn-block btn-success">
 | 
				
			||||||
						<input type='hidden' name='next' value='{{request.GET.next}}'/>
 | 
					                            {% trans "Login"%}
 | 
				
			||||||
                    </form>
 | 
					                        </button>
 | 
				
			||||||
                    <div class="auth-footer">
 | 
					                    {% endbuttons %}
 | 
				
			||||||
                        <div class="text">
 | 
										<input type='hidden' name='next' value='{{request.GET.next}}'/>
 | 
				
			||||||
                            <span>{% trans "Don't have an account yet ? "%}</span>
 | 
					                </form>
 | 
				
			||||||
                        </div>
 | 
					                <div class="auth-footer">
 | 
				
			||||||
                        <div class="links">
 | 
					                    <div class="text">
 | 
				
			||||||
                            <a class="unlink" href="{% url 'hosting:signup' %}">{% trans "Sign up"%}</a>
 | 
					                        <span>{% trans "Don't have an account yet ? "%}</span>
 | 
				
			||||||
                            <span class="text"> or </span>
 | 
					                    </div>
 | 
				
			||||||
                            <a class="unlink" href="{% url 'hosting:reset_password' %}">{% trans "Forgot your password ? "%}</a>
 | 
					                    <div class="links">
 | 
				
			||||||
                        </div>
 | 
					                        <a class="unlink" href="{% url 'hosting:signup' %}">{% trans "Sign up"%}</a>
 | 
				
			||||||
 | 
					                        <span class="text"> or </span>
 | 
				
			||||||
 | 
					                        <a class="unlink" href="{% url 'hosting:reset_password' %}">{% trans "Forgot your password ? "%}</a>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,7 +20,7 @@
 | 
				
			||||||
    <div class="row">  
 | 
					    <div class="row">  
 | 
				
			||||||
        <div class="col-xs-12 col-md-8 col-md-offset-2">
 | 
					        <div class="col-xs-12 col-md-8 col-md-offset-2">
 | 
				
			||||||
    		<div class="invoice-title">
 | 
					    		<div class="invoice-title">
 | 
				
			||||||
    			<h2>{% trans "Confirm Order"%}</h2><h3 class="pull-right">{% trans "Order #"%} {{order.id}}</h3>
 | 
					    			<h2>{{page_header_text}}</h2><h3 class="pull-right">{% trans "Order #"%} {{order.id}}</h3>
 | 
				
			||||||
    		</div>
 | 
					    		</div>
 | 
				
			||||||
    		<hr>
 | 
					    		<hr>
 | 
				
			||||||
    		<div class="row">
 | 
					    		<div class="row">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,17 +52,14 @@
 | 
				
			||||||
                                            </button>
 | 
					                                            </button>
 | 
				
			||||||
                                        </div>
 | 
					                                        </div>
 | 
				
			||||||
                                        <div class="modal-body">
 | 
					                                        <div class="modal-body">
 | 
				
			||||||
                                            <h4 class="modal-title" id="ModalLabel">{% trans "Do You want to delete your order?"%}</h4>
 | 
					                                            <div class="modal-icon"><i class="fa fa-trash" aria-hidden="true"></i></div>
 | 
				
			||||||
 | 
					                                            <h4 class="modal-title" id="ModalLabel">{% trans "Do you want to delete your order?"%}</h4>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                            <form method="post"
 | 
					                                            <form method="post"
 | 
				
			||||||
                                                  action="{% url 'hosting:delete_order' order.id %}">
 | 
					                                                  action="{% url 'hosting:delete_order' order.id %}">
 | 
				
			||||||
                                                {% csrf_token %}
 | 
					                                                {% csrf_token %}
 | 
				
			||||||
                                                <div class="modal-footer">
 | 
					                                                <div class="modal-footer">
 | 
				
			||||||
                                                    <button type="button" class="btn btn-default"
 | 
					                                                    <button type="submit" class="btn btn-danger">{% trans "Delete"%}
 | 
				
			||||||
                                                            data-dismiss="modal">
 | 
					 | 
				
			||||||
                                                        {% trans "Close"%}
 | 
					 | 
				
			||||||
                                                    </button>
 | 
					 | 
				
			||||||
                                                    <button type="submit" class="btn btn-primary">{% trans "Delete"%}
 | 
					 | 
				
			||||||
                                                    </button>
 | 
					                                                    </button>
 | 
				
			||||||
                                                </div>
 | 
					                                                </div>
 | 
				
			||||||
                                            </form>
 | 
					                                            </form>
 | 
				
			||||||
| 
						 | 
					@ -71,7 +68,6 @@
 | 
				
			||||||
                                </div>
 | 
					                                </div>
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
                        {% endfor %}
 | 
					                        {% endfor %}
 | 
				
			||||||
 | 
					 | 
				
			||||||
                        </tbody>
 | 
					                        </tbody>
 | 
				
			||||||
                    </table>
 | 
					                    </table>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -91,7 +91,7 @@
 | 
				
			||||||
                            </form>
 | 
					                            </form>
 | 
				
			||||||
                            <div class="row">
 | 
					                            <div class="row">
 | 
				
			||||||
                                <div class="col-xs-12">
 | 
					                                <div class="col-xs-12">
 | 
				
			||||||
                                    <p>
 | 
					                                    <p class="card-warning-content card-warning-addtional-margin">
 | 
				
			||||||
                                        {% blocktrans %}
 | 
					                                        {% blocktrans %}
 | 
				
			||||||
                                        You are not making any payment yet. After submitting your card
 | 
					                                        You are not making any payment yet. After submitting your card
 | 
				
			||||||
                                        information, you will be taken to the Confirm Order Page.
 | 
					                                        information, you will be taken to the Confirm Order Page.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,7 +15,6 @@
 | 
				
			||||||
                <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
 | 
					                <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="auth-content">
 | 
					            <div class="auth-content">
 | 
				
			||||||
 | 
					 | 
				
			||||||
                <div class="intro-message auth-box sign-up">
 | 
					                <div class="intro-message auth-box sign-up">
 | 
				
			||||||
                    <h2  class="section-heading">{% trans "Reset your password"%}</h2>
 | 
					                    <h2  class="section-heading">{% trans "Reset your password"%}</h2>
 | 
				
			||||||
                    <form action="{% url 'hosting:reset_password' %}" method="post" class="form" novalidate>
 | 
					                    <form action="{% url 'hosting:reset_password' %}" method="post" class="form" novalidate>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,35 +8,34 @@
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<div class="auth-container auth-signup">
 | 
					<div class="auth-container auth-signup">
 | 
				
			||||||
   <div class="auth-bg"></div>
 | 
					   <div class="auth-bg"></div>
 | 
				
			||||||
        <div class="auth-center ">
 | 
					    <div class="auth-center ">
 | 
				
			||||||
            <div class="auth-title">
 | 
					        <div class="auth-title">
 | 
				
			||||||
                <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
 | 
					            <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
 | 
				
			||||||
            </div>
 | 
					        </div>
 | 
				
			||||||
            <div class="auth-content">
 | 
					        <div class="auth-content">
 | 
				
			||||||
                <div class="intro-message auth-box sign-up">
 | 
					            <div class="intro-message auth-box sign-up">
 | 
				
			||||||
                    <h2  class="section-heading">{% trans "Sign up"%}</h2>
 | 
					                <h2  class="section-heading">{% trans "Sign up"%}</h2>
 | 
				
			||||||
                    <form action="{% url 'hosting:signup' %}" method="post" class="form" novalidate>
 | 
					                <form action="{% url 'hosting:signup' %}" method="post" class="form" novalidate>
 | 
				
			||||||
                        {% csrf_token %}
 | 
					                    {% csrf_token %}
 | 
				
			||||||
                        {% for field in form %}
 | 
					                    {% for field in form %}
 | 
				
			||||||
                            {% bootstrap_field field show_label=False %}
 | 
					                        {% bootstrap_field field show_label=False %}
 | 
				
			||||||
                        {% endfor %}
 | 
					                    {% endfor %}
 | 
				
			||||||
                        {% buttons %}
 | 
					                    {% buttons %}
 | 
				
			||||||
                            <button type="submit" class="btn btn-block btn-info">
 | 
					                        <button type="submit" class="btn btn-block btn-info">
 | 
				
			||||||
                                {% trans "Sign up"%}
 | 
					                            {% trans "Sign up"%}
 | 
				
			||||||
                            </button>
 | 
					                        </button>
 | 
				
			||||||
                        {% endbuttons %}
 | 
					                    {% endbuttons %}
 | 
				
			||||||
                    </form>
 | 
					                </form>
 | 
				
			||||||
                    <div class="auth-footer">
 | 
					                <div class="auth-footer">
 | 
				
			||||||
                        <div class="text">
 | 
					                    <div class="text">
 | 
				
			||||||
                            <span>{% trans "Already have an account ?"%}</span>
 | 
					                        <span>{% trans "Already have an account ?"%}</span>
 | 
				
			||||||
                        </div>
 | 
					                    </div>
 | 
				
			||||||
                        <div class="links">
 | 
					                    <div class="links">
 | 
				
			||||||
                           <a class="unlink" href="{% url 'hosting:login' %}">{% trans "Login"%}</a>
 | 
					                       <a class="unlink" href="{% url 'hosting:login' %}">{% trans "Login"%}</a>
 | 
				
			||||||
                        </div>
 | 
					 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
             </div>
 | 
					            </div>
 | 
				
			||||||
 | 
					         </div>
 | 
				
			||||||
        </div>
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,52 +2,53 @@
 | 
				
			||||||
{% load staticfiles bootstrap3 i18n %}
 | 
					{% load staticfiles bootstrap3 i18n %}
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<div>
 | 
					<div>
 | 
				
			||||||
	<div class="virtual-machine-container dashboard-container ">
 | 
						<div class="virtual-machine-container dashboard-container">
 | 
				
			||||||
		<div class="row">
 | 
							<div class="row">
 | 
				
			||||||
			<div class="container-table col-md-9 col-md-offset-2">
 | 
								<div class="col-md-9 col-md-offset-2">
 | 
				
			||||||
				 <div  class="col-sm-12">
 | 
					                <form method="POST" action="" novalidate class="form-ssh">
 | 
				
			||||||
                    <form method="POST" action="" novalidate class="form-ssh">
 | 
					                    {% csrf_token %}
 | 
				
			||||||
                        {% csrf_token %}
 | 
					                    <div class="page-header">
 | 
				
			||||||
				        <h3><i class="fa fa-key fa-separate" aria-hidden="true"></i>{% trans "Access Key"%} </h3>
 | 
					                        <h1 class="h1-thin"><i class="fa fa-key" aria-hidden="true"></i> {% trans "Add your public SSH key" %}</h1>
 | 
				
			||||||
                        {% if messages %}
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    {% if messages %}
 | 
				
			||||||
                        <div class="alert alert-warning">
 | 
					                        <div class="alert alert-warning">
 | 
				
			||||||
                            {% for message in messages %}
 | 
					                            {% for message in messages %}
 | 
				
			||||||
                            <span>{{ message }}</span>
 | 
					                            <span>{{ message }}</span>
 | 
				
			||||||
                            {% endfor %}
 | 
					                            {% endfor %}
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
						{% endif %}
 | 
										{% endif %}
 | 
				
			||||||
                        {% for field in form %}
 | 
					                    {% for field in form %}
 | 
				
			||||||
                            {% bootstrap_field field %}
 | 
					                        {% bootstrap_field field %}
 | 
				
			||||||
                        {% endfor %}
 | 
					                    {% endfor %}
 | 
				
			||||||
                        {% buttons %}
 | 
					                    {% buttons %}
 | 
				
			||||||
                            <button type="submit" class="btn btn-success">
 | 
					                    <div class="underform-contaner">
 | 
				
			||||||
                                {% trans "Upload your own key. "%} 
 | 
					                        <h4>{% trans "Use your created key to access to the VM" %}.</h4>
 | 
				
			||||||
 | 
					                        <div class="btn-container">
 | 
				
			||||||
 | 
					                            <button type="submit" name="add_ssh" class="btn choice-btn choice-btn-faded">
 | 
				
			||||||
 | 
					                                {% trans "Add SSH Key" %}
 | 
				
			||||||
                            </button>
 | 
					                            </button>
 | 
				
			||||||
<br />
 | 
					                        </div>
 | 
				
			||||||
<br />
 | 
					                    </div>
 | 
				
			||||||
							{% trans "Or generate a new key pair."%} <br />
 | 
					                    <div class="underform-contaner">
 | 
				
			||||||
<br />
 | 
					                        <h4>{% trans "Or you can generate a new key pair"%}.</h4>
 | 
				
			||||||
                                <button class="btn btn-success">{% trans "Generate Key Pair"%} </a>
 | 
					                        <div class="btn-container">
 | 
				
			||||||
 | 
					                            <button type="submit" name="generate" class="btn choice-btn">
 | 
				
			||||||
 | 
					                                {% trans "Generate" %}
 | 
				
			||||||
                            </button>
 | 
					                            </button>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    {% endbuttons %}
 | 
				
			||||||
 | 
					                </form>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        {% endbuttons %} 
 | 
							        {% if private_key %}
 | 
				
			||||||
                        </form>
 | 
					    		 		<div class="alert alert-warning">
 | 
				
			||||||
                        <h5> Use your created key to access to the machine. If you lost it, contact us. </h5>
 | 
											<strong>{% trans "Warning!"%}</strong>{% trans "You can download your SSH  private key once. Don't loose your key" %}
 | 
				
			||||||
 | 
					    				</div>
 | 
				
			||||||
				        {% if private_key %}
 | 
					    				<div class="form-group">
 | 
				
			||||||
				 		<div class="alert alert-warning">
 | 
					    				    <textarea class="form-control" rows="6" id="ssh_key" type="hidden" style="display:none">{{private_key}}</textarea>
 | 
				
			||||||
				 			 
 | 
					    				</div>
 | 
				
			||||||
  							<strong>{% trans "Warning!"%}</strong>{% trans "You can download your SSH  private key once. Don't lost your key"%}  
 | 
									{% endif %}
 | 
				
			||||||
						</div>
 | 
					 | 
				
			||||||
						<div class="form-group">
 | 
					 | 
				
			||||||
						  <textarea class="form-control" rows="6" id="ssh_key" type="hidden" style="display:none">{{private_key}}</textarea>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						</div>
 | 
					 | 
				
			||||||
						{% endif %}
 | 
					 | 
				
			||||||
						<div class="clearfix"></div>
 | 
					 | 
				
			||||||
				</div>
 | 
					 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
 | 
					 | 
				
			||||||
	    </div>
 | 
						    </div>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,88 +3,106 @@
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<div>
 | 
					<div>
 | 
				
			||||||
	<div class="container virtual-machine-container dashboard-container ">
 | 
						<div class="container virtual-machine-container dashboard-container ">
 | 
				
			||||||
		<div class="row">
 | 
					        <h1 class="h1-thin"><i class="fa fa-key" aria-hidden="true"></i> {% trans "Your SSH Keys" %}</h1>
 | 
				
			||||||
			<div class="col-md-9 col-md-offset-2">
 | 
					        {% if messages %}
 | 
				
			||||||
				 <div  class="col-sm-12">
 | 
					        <div class="alert alert-warning">
 | 
				
			||||||
                    <h3><i class="fa fa-key" aria-hidden="true"></i>{% trans "Access Key"%} </h3>
 | 
					            {% for message in messages %}
 | 
				
			||||||
                    {% if messages %}
 | 
					            <span>{{ message }}</span>
 | 
				
			||||||
                    <div class="alert alert-warning">
 | 
					            {% endfor %}
 | 
				
			||||||
                        {% for message in messages %}
 | 
					 | 
				
			||||||
                        <span>{{ message }}</span>
 | 
					 | 
				
			||||||
                        {% endfor %}
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    {% endif %}
 | 
					 | 
				
			||||||
                    <p class="pull-right">
 | 
					 | 
				
			||||||
                        <a class="btn btn-success" href="{% url 'hosting:create_ssh_key' %}" >{% trans "Add Key"%} </a>
 | 
					 | 
				
			||||||
                    </p>
 | 
					 | 
				
			||||||
                    <h5> Use your created key to access to the machine. If you lost it, contact us. </h5>
 | 
					 | 
				
			||||||
                    <table class="table borderless table-hover"> 
 | 
					 | 
				
			||||||
                        <br/>
 | 
					 | 
				
			||||||
                        <thead> 
 | 
					 | 
				
			||||||
                        <tr> 
 | 
					 | 
				
			||||||
                            <th>{% trans "Name"%}</th>
 | 
					 | 
				
			||||||
                            <th>{% trans "Created at"%} </th>
 | 
					 | 
				
			||||||
                            <th>{% trans "Status"%} </th>
 | 
					 | 
				
			||||||
                            <th></th>
 | 
					 | 
				
			||||||
                        </tr>
 | 
					 | 
				
			||||||
                        </thead>
 | 
					 | 
				
			||||||
                        <tbody> 
 | 
					 | 
				
			||||||
                            {% for user_key in keys %}
 | 
					 | 
				
			||||||
                            <tr> 
 | 
					 | 
				
			||||||
                                <td scope="row">{{user_key.name}}</td> 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                <td><span id="ssh-created_at-{{user_key.id}}">{{user_key.created_at|date:'Y-m-d H:i' }}</span></td> 
 | 
					 | 
				
			||||||
                                <td>
 | 
					 | 
				
			||||||
                                    <span class="h3 label label-success"><strong>Active</strong></span>
 | 
					 | 
				
			||||||
                                </td> 
 | 
					 | 
				
			||||||
                                <td> 
 | 
					 | 
				
			||||||
                                <button type="button" class="btn btn-default" data-toggle="modal"
 | 
					 | 
				
			||||||
                                        data-target="#Modal{{ user_key.id }}"><a
 | 
					 | 
				
			||||||
                                        href="#">{% trans "Delete Key"%}</a>
 | 
					 | 
				
			||||||
                                </button>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <div class="modal fade" id="Modal{{user_key.id }}" tabindex="-1" role="dialog">
 | 
					 | 
				
			||||||
        <div class="modal-dialog" role="document">
 | 
					 | 
				
			||||||
            <div class="modal-content">
 | 
					 | 
				
			||||||
                <div class="modal-header">
 | 
					 | 
				
			||||||
                    <button type="button" class="close" data-dismiss="modal"
 | 
					 | 
				
			||||||
                            aria-label="Confirm"><span
 | 
					 | 
				
			||||||
                            aria-hidden="true">×</span>
 | 
					 | 
				
			||||||
                    </button>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <div class="modal-body">
 | 
					 | 
				
			||||||
                    <h4 class="modal-title" id="ModalLabel">{% trans "Do You want to delete this key?"%}</h4>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    <form method="post" action="{% url 'hosting:delete_ssh_key' user_key.id %}">
 | 
					 | 
				
			||||||
                        {% csrf_token %}
 | 
					 | 
				
			||||||
                        <div class="modal-footer">
 | 
					 | 
				
			||||||
                            <button type="button" class="btn btn-default"
 | 
					 | 
				
			||||||
                                    data-dismiss="modal">
 | 
					 | 
				
			||||||
                                {% trans "Close"%}
 | 
					 | 
				
			||||||
                            </button>
 | 
					 | 
				
			||||||
                            <button type="submit" class="btn btn-primary">{% trans "Delete"%}
 | 
					 | 
				
			||||||
                            </button>
 | 
					 | 
				
			||||||
                        </div>
 | 
					 | 
				
			||||||
                    </form>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    </div>
 | 
					        {% endif %}
 | 
				
			||||||
                                 </td>
 | 
					         <div class="ssh-header-container">
 | 
				
			||||||
                            </tr>
 | 
					            <p>{% trans "To generate a new key pair or to upload your existing key, click 'Add Key'" %}</p>
 | 
				
			||||||
                            {% endfor %}
 | 
					            <a class="btn choice-btn" href="{% url 'hosting:choice_ssh_keys' %}" >
 | 
				
			||||||
                                </tbody> 
 | 
					                <span class="fa fa-plus"></span>  {% trans "Add SSH Key" %}
 | 
				
			||||||
                            </table>
 | 
					            </a>
 | 
				
			||||||
 | 
					         </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <table class="table borderless table-hover ssh-keys-table">
 | 
				
			||||||
 | 
					            <br/>
 | 
				
			||||||
						<div class="clearfix"></div>
 | 
					            <thead>
 | 
				
			||||||
				</div>
 | 
					            <tr>
 | 
				
			||||||
			</div>
 | 
					                <th>{% trans "Name" %}</th>
 | 
				
			||||||
 | 
					                <th>{% trans "Delete Key" %}</th>
 | 
				
			||||||
	    </div>
 | 
					                <th>{% trans "Public Key" %}</th>
 | 
				
			||||||
 | 
					                <th>{% trans "Private Key" %}</th>
 | 
				
			||||||
 | 
					            </tr>
 | 
				
			||||||
 | 
					            </thead>
 | 
				
			||||||
 | 
					            <tbody>
 | 
				
			||||||
 | 
					                {% for user_key in keys %}
 | 
				
			||||||
 | 
					                <tr>
 | 
				
			||||||
 | 
					                    <td scope="row">{{user_key.name}}</td>
 | 
				
			||||||
 | 
					                    <td>
 | 
				
			||||||
 | 
					                        <button type="button" class="btn btn-default btn-custom-delete" data-toggle="modal"
 | 
				
			||||||
 | 
					                                data-target="#Modal{{ user_key.id }}" style="color: #717274">
 | 
				
			||||||
 | 
					                            <span class="pc-only">{% trans "Delete" %}</span>
 | 
				
			||||||
 | 
					                            <span class="mob-only"><i class="fa fa-trash"></i></span>
 | 
				
			||||||
 | 
					                        </button>
 | 
				
			||||||
 | 
					                        <div class="modal fade" id="Modal{{user_key.id }}" tabindex="-1" role="dialog">
 | 
				
			||||||
 | 
					                            <div class="modal-dialog" role="document">
 | 
				
			||||||
 | 
					                                <div class="modal-content">
 | 
				
			||||||
 | 
					                                    <div class="modal-header">
 | 
				
			||||||
 | 
					                                        <button type="button" class="close" data-dismiss="modal"
 | 
				
			||||||
 | 
					                                                aria-label="Confirm"><span
 | 
				
			||||||
 | 
					                                                aria-hidden="true">×</span>
 | 
				
			||||||
 | 
					                                        </button>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <div class="modal-body">
 | 
				
			||||||
 | 
					                                     <div class="modal-icon"><i class="fa fa-trash" aria-hidden="true"></i></div>
 | 
				
			||||||
 | 
					                                      <h4 class="modal-title" id="ModalLabel">{% trans "Delete SSH Key"%}</h4>
 | 
				
			||||||
 | 
					                                        <p class="modal-text">{% trans "Do You want to delete this key?"%}</p>
 | 
				
			||||||
 | 
					                                        <form method="post" action="{% url 'hosting:delete_ssh_key' user_key.id %}">
 | 
				
			||||||
 | 
					                                            {% csrf_token %}
 | 
				
			||||||
 | 
					                                            <div class="modal-footer">
 | 
				
			||||||
 | 
					                                                <button type="submit" class="btn btn-danger">{% trans "Delete"%}
 | 
				
			||||||
 | 
					                                                </button>
 | 
				
			||||||
 | 
					                                            </div>
 | 
				
			||||||
 | 
					                                        </form>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                     </td>
 | 
				
			||||||
 | 
					                    <td>
 | 
				
			||||||
 | 
					                        <p type="button"  data-toggle="modal" style="margin: 0" data-target="#Modal_public_key{{ user_key.id }}">
 | 
				
			||||||
 | 
					                            <a href="#">{% trans "Show" %}</a>
 | 
				
			||||||
 | 
					                        </p>
 | 
				
			||||||
 | 
					                        <div class="modal fade" id="Modal_public_key{{user_key.id }}" tabindex="-1" role="dialog">
 | 
				
			||||||
 | 
					                            <div class="modal-dialog" role="document">
 | 
				
			||||||
 | 
					                                <div class="modal-content">
 | 
				
			||||||
 | 
					                                    <div class="modal-header">
 | 
				
			||||||
 | 
					                                        <button type="button" class="close" data-dismiss="modal"
 | 
				
			||||||
 | 
					                                                aria-label="Confirm"><span
 | 
				
			||||||
 | 
					                                                aria-hidden="true">×</span>
 | 
				
			||||||
 | 
					                                        </button>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <div class="modal-body">
 | 
				
			||||||
 | 
					                                        <h4 class="modal-title" id="ModalLabel_Public_Key">{% trans "Public ssh key" %}</h4>
 | 
				
			||||||
 | 
					                                        <p style="margin-top: 10px;">{{ user_key.public_key }}</p>
 | 
				
			||||||
 | 
					                                        <div class="modal-footer">
 | 
				
			||||||
 | 
					                                        </div>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                     </td>
 | 
				
			||||||
 | 
					                    </td>
 | 
				
			||||||
 | 
					                    <td>
 | 
				
			||||||
 | 
					                        {% if user_key.private_key %}
 | 
				
			||||||
 | 
					                        <form action="{{ user_key.private_key.url }}">
 | 
				
			||||||
 | 
					                            <button style="color: #717274" type="submit" class="btn btn-default" data-toggle="modal"
 | 
				
			||||||
 | 
					                                    >
 | 
				
			||||||
 | 
					                                    <span class="pc-only">{% trans "Download" %}</span>
 | 
				
			||||||
 | 
					                                    <span class="mob-only"><i class="fa fa-download"></i></span>
 | 
				
			||||||
 | 
					                            </button>
 | 
				
			||||||
 | 
					                        </form>
 | 
				
			||||||
 | 
					                        {% endif %}
 | 
				
			||||||
 | 
					                    </td>
 | 
				
			||||||
 | 
					                </tr>
 | 
				
			||||||
 | 
					                {% endfor %}
 | 
				
			||||||
 | 
					            </tbody>
 | 
				
			||||||
 | 
					        </table>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% if next_url %}
 | 
					{% if next_url %}
 | 
				
			||||||
| 
						 | 
					@ -98,7 +116,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    window.onload = function () {
 | 
					    window.onload = function () {
 | 
				
			||||||
        {% for user_key in keys %}
 | 
					        {% for user_key in keys %}
 | 
				
			||||||
            // var locale_date = new Date(document.getElementById("ssh-created_at-{{user_key.id}}").textContent).toISOString();
 | 
					 | 
				
			||||||
            var locale_date = moment.utc(document.getElementById("ssh-created_at-{{user_key.id}}").textContent,'YYYY-MM-DD HH:mm').toDate();
 | 
					            var locale_date = moment.utc(document.getElementById("ssh-created_at-{{user_key.id}}").textContent,'YYYY-MM-DD HH:mm').toDate();
 | 
				
			||||||
            locale_date =  moment(locale_date).format("YYYY-MM-DD h:mm:ss a");
 | 
					            locale_date =  moment(locale_date).format("YYYY-MM-DD h:mm:ss a");
 | 
				
			||||||
            document.getElementById('ssh-created_at-{{user_key.id}}').innerHTML = locale_date;
 | 
					            document.getElementById('ssh-created_at-{{user_key.id}}').innerHTML = locale_date;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -159,14 +159,18 @@
 | 
				
			||||||
									<div class="modal fade" id="confirm-cancel" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
 | 
														<div class="modal fade" id="confirm-cancel" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
 | 
				
			||||||
									    <div class="modal-dialog">
 | 
														    <div class="modal-dialog">
 | 
				
			||||||
									        <div class="modal-content">
 | 
														        <div class="modal-content">
 | 
				
			||||||
									            <div class="modal-header">
 | 
																	<div class="modal-header">
 | 
				
			||||||
									                {% trans "Terminate your Virtual Machine"%}
 | 
																		<button type="button" class="close" data-dismiss="modal"
 | 
				
			||||||
									            </div>
 | 
																				aria-label="Confirm"><span
 | 
				
			||||||
 | 
																				aria-hidden="true">×</span>
 | 
				
			||||||
 | 
																		</button>
 | 
				
			||||||
 | 
																	</div>
 | 
				
			||||||
									            <div class="modal-body">
 | 
														            <div class="modal-body">
 | 
				
			||||||
									                {% trans "Are you sure do you want to cancel your Virtual Machine "%} {{virtual_machine.name}} ?
 | 
																		<div class="modal-icon"><i class="fa fa-ban" aria-hidden="true"></i></div>
 | 
				
			||||||
 | 
																		<h4 class="modal-title" id="ModalLabel">{% trans "Terminate your Virtual Machine"%}</h4>
 | 
				
			||||||
 | 
														                <p class="modal-text">{% trans "Are you sure do you want to cancel your Virtual Machine "%} {{virtual_machine.name}} ?</p>
 | 
				
			||||||
									            </div>
 | 
														            </div>
 | 
				
			||||||
									            <div class="modal-footer">
 | 
														            <div class="modal-footer">
 | 
				
			||||||
									                <button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Cancel"%}</button>
 | 
					 | 
				
			||||||
									                <a class="btn btn-danger btn-ok">OK</a>
 | 
														                <a class="btn btn-danger btn-ok">OK</a>
 | 
				
			||||||
									            </div>
 | 
														            </div>
 | 
				
			||||||
									        </div>
 | 
														        </div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@ from .views import DjangoHostingView, RailsHostingView, PaymentVMView,\
 | 
				
			||||||
    VirtualMachineView, OrdersHostingDeleteView, NotificationsView, \
 | 
					    VirtualMachineView, OrdersHostingDeleteView, NotificationsView, \
 | 
				
			||||||
    MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, HostingPricingView,\
 | 
					    MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, HostingPricingView,\
 | 
				
			||||||
    CreateVirtualMachinesView, HostingBillListView, HostingBillDetailView, \
 | 
					    CreateVirtualMachinesView, HostingBillListView, HostingBillDetailView, \
 | 
				
			||||||
    SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView
 | 
					    SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView, SSHKeyChoiceView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
urlpatterns = [
 | 
					urlpatterns = [
 | 
				
			||||||
    url(r'index/?$', IndexView.as_view(), name='index'),
 | 
					    url(r'index/?$', IndexView.as_view(), name='index'),
 | 
				
			||||||
| 
						 | 
					@ -27,6 +27,8 @@ urlpatterns = [
 | 
				
			||||||
        name='virtual_machines'),
 | 
					        name='virtual_machines'),
 | 
				
			||||||
    url(r'ssh_keys/?$', SSHKeyListView.as_view(),
 | 
					    url(r'ssh_keys/?$', SSHKeyListView.as_view(),
 | 
				
			||||||
        name='ssh_keys'),
 | 
					        name='ssh_keys'),
 | 
				
			||||||
 | 
					    url(r'ssh_keys_choice/?$', SSHKeyChoiceView.as_view(),
 | 
				
			||||||
 | 
					        name='choice_ssh_keys'),
 | 
				
			||||||
    url(r'delete_ssh_key/(?P<pk>\d+)/?$', SSHKeyDeleteView.as_view(),
 | 
					    url(r'delete_ssh_key/(?P<pk>\d+)/?$', SSHKeyDeleteView.as_view(),
 | 
				
			||||||
        name='delete_ssh_key'),
 | 
					        name='delete_ssh_key'),
 | 
				
			||||||
    url(r'create_ssh_key/?$', SSHKeyCreateView.as_view(),
 | 
					    url(r'create_ssh_key/?$', SSHKeyCreateView.as_view(),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,7 @@
 | 
				
			||||||
 | 
					import uuid
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.core.files.base import ContentFile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from oca.pool import WrongNameError, WrongIdError
 | 
					from oca.pool import WrongNameError, WrongIdError
 | 
				
			||||||
from django.shortcuts import render
 | 
					from django.shortcuts import render
 | 
				
			||||||
from django.http import Http404
 | 
					from django.http import Http404
 | 
				
			||||||
| 
						 | 
					@ -24,7 +28,7 @@ from utils.forms import BillingAddressForm, PasswordResetRequestForm, UserBillin
 | 
				
			||||||
from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, LoginViewMixin
 | 
					from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, LoginViewMixin
 | 
				
			||||||
from utils.mailer import BaseEmail
 | 
					from utils.mailer import BaseEmail
 | 
				
			||||||
from .models import HostingOrder, HostingBill, HostingPlan, UserHostingKey
 | 
					from .models import HostingOrder, HostingBill, HostingPlan, UserHostingKey
 | 
				
			||||||
from .forms import HostingUserSignupForm, HostingUserLoginForm, UserHostingKeyForm
 | 
					from .forms import HostingUserSignupForm, HostingUserLoginForm, UserHostingKeyForm, generate_ssh_key_name
 | 
				
			||||||
from .mixins import ProcessVMSelectionMixin
 | 
					from .mixins import ProcessVMSelectionMixin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from opennebula_api.models import OpenNebulaManager
 | 
					from opennebula_api.models import OpenNebulaManager
 | 
				
			||||||
| 
						 | 
					@ -32,7 +36,6 @@ from opennebula_api.serializers import VirtualMachineSerializer, \
 | 
				
			||||||
    VirtualMachineTemplateSerializer
 | 
					    VirtualMachineTemplateSerializer
 | 
				
			||||||
from django.utils.translation import ugettext_lazy as _
 | 
					from django.utils.translation import ugettext_lazy as _
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a backend \
 | 
					CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a backend \
 | 
				
			||||||
                    connection error. please try again in a few minutes."
 | 
					                    connection error. please try again in a few minutes."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -193,8 +196,10 @@ class SignupView(CreateView):
 | 
				
			||||||
        name = form.cleaned_data.get('name')
 | 
					        name = form.cleaned_data.get('name')
 | 
				
			||||||
        email = form.cleaned_data.get('email')
 | 
					        email = form.cleaned_data.get('email')
 | 
				
			||||||
        password = form.cleaned_data.get('password')
 | 
					        password = form.cleaned_data.get('password')
 | 
				
			||||||
        this_base_url = "{0}://{1}".format(self.request.scheme, self.request.get_host())
 | 
					        this_base_url = "{0}://{1}".format(self.request.scheme,
 | 
				
			||||||
        CustomUser.register(name, password, email, app='dcl', base_url=this_base_url)
 | 
					                                           self.request.get_host())
 | 
				
			||||||
 | 
					        CustomUser.register(name, password, email,
 | 
				
			||||||
 | 
					                            app='dcl', base_url=this_base_url)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return HttpResponseRedirect(reverse_lazy('hosting:signup-validate'))
 | 
					        return HttpResponseRedirect(reverse_lazy('hosting:signup-validate'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -204,8 +209,10 @@ class SignupValidateView(TemplateView):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_context_data(self, **kwargs):
 | 
					    def get_context_data(self, **kwargs):
 | 
				
			||||||
        context = super(SignupValidateView, self).get_context_data(**kwargs)
 | 
					        context = super(SignupValidateView, self).get_context_data(**kwargs)
 | 
				
			||||||
        login_url = '<a href="' + reverse('hosting:login') + '">' + str(_('login')) + '</a>'
 | 
					        login_url = '<a href="' + \
 | 
				
			||||||
        home_url = '<a href="' + reverse('datacenterlight:index') + '">Data Center Light</a>'
 | 
					            reverse('hosting:login') + '">' + str(_('login')) + '</a>'
 | 
				
			||||||
 | 
					        home_url = '<a href="' + \
 | 
				
			||||||
 | 
					            reverse('datacenterlight:index') + '">Data Center Light</a>'
 | 
				
			||||||
        message = '{signup_success_message} {lurl}</a> \
 | 
					        message = '{signup_success_message} {lurl}</a> \
 | 
				
			||||||
                 <br />{go_back} {hurl}.'.format(
 | 
					                 <br />{go_back} {hurl}.'.format(
 | 
				
			||||||
            signup_success_message=_(
 | 
					            signup_success_message=_(
 | 
				
			||||||
| 
						 | 
					@ -226,15 +233,18 @@ class SignupValidatedView(SignupValidateView):
 | 
				
			||||||
    def get_context_data(self, **kwargs):
 | 
					    def get_context_data(self, **kwargs):
 | 
				
			||||||
        context = super(SignupValidateView, self).get_context_data(**kwargs)
 | 
					        context = super(SignupValidateView, self).get_context_data(**kwargs)
 | 
				
			||||||
        validated = CustomUser.validate_url(self.kwargs['validate_slug'])
 | 
					        validated = CustomUser.validate_url(self.kwargs['validate_slug'])
 | 
				
			||||||
        login_url = '<a href="' + reverse('hosting:login') + '">' + str(_('login')) + '</a>'
 | 
					        login_url = '<a href="' + \
 | 
				
			||||||
 | 
					            reverse('hosting:login') + '">' + str(_('login')) + '</a>'
 | 
				
			||||||
        section_title = _('Account activation')
 | 
					        section_title = _('Account activation')
 | 
				
			||||||
        if validated:
 | 
					        if validated:
 | 
				
			||||||
            message = '{account_activation_string} <br /> {login_string} {lurl}.'.format(
 | 
					            message = '{account_activation_string} <br /> {login_string} {lurl}.'.format(
 | 
				
			||||||
                account_activation_string=_("Your account has been activated."),
 | 
					                account_activation_string=_(
 | 
				
			||||||
 | 
					                    "Your account has been activated."),
 | 
				
			||||||
                login_string=_("You can now"),
 | 
					                login_string=_("You can now"),
 | 
				
			||||||
                lurl=login_url)
 | 
					                lurl=login_url)
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            home_url = '<a href="' + reverse('datacenterlight:index') + '">Data Center Light</a>'
 | 
					            home_url = '<a href="' + \
 | 
				
			||||||
 | 
					                reverse('datacenterlight:index') + '">Data Center Light</a>'
 | 
				
			||||||
            message = '{sorry_message} <br />{go_back_to} {hurl}'.format(
 | 
					            message = '{sorry_message} <br />{go_back_to} {hurl}'.format(
 | 
				
			||||||
                sorry_message=_("Sorry. Your request is invalid."),
 | 
					                sorry_message=_("Sorry. Your request is invalid."),
 | 
				
			||||||
                go_back_to=_('Go back to'),
 | 
					                go_back_to=_('Go back to'),
 | 
				
			||||||
| 
						 | 
					@ -364,10 +374,29 @@ class SSHKeyListView(LoginRequiredMixin, ListView):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def render_to_response(self, context, **response_kwargs):
 | 
					    def render_to_response(self, context, **response_kwargs):
 | 
				
			||||||
        if not self.queryset:
 | 
					        if not self.queryset:
 | 
				
			||||||
            return HttpResponseRedirect(reverse('hosting:create_ssh_key'))
 | 
					            return HttpResponseRedirect(reverse('hosting:choice_ssh_keys'))
 | 
				
			||||||
        return super(SSHKeyListView, self).render_to_response(context, **response_kwargs)
 | 
					        return super(SSHKeyListView, self).render_to_response(context, **response_kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SSHKeyChoiceView(LoginRequiredMixin, View):
 | 
				
			||||||
 | 
					    template_name = "hosting/choice_ssh_keys.html"
 | 
				
			||||||
 | 
					    login_url = reverse_lazy('hosting:login')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get(self, request, *args, **kwargs):
 | 
				
			||||||
 | 
					        context = {}
 | 
				
			||||||
 | 
					        return render(request, self.template_name, context)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def post(self, request, *args, **kwargs):
 | 
				
			||||||
 | 
					        name = generate_ssh_key_name()
 | 
				
			||||||
 | 
					        private_key, public_key = UserHostingKey.generate_keys()
 | 
				
			||||||
 | 
					        content = ContentFile(private_key)
 | 
				
			||||||
 | 
					        ssh_key = UserHostingKey.objects.create(
 | 
				
			||||||
 | 
					            user=request.user, public_key=public_key, name=name)
 | 
				
			||||||
 | 
					        filename = name + '_' + str(uuid.uuid4())[:8] + '_private.pem'
 | 
				
			||||||
 | 
					        ssh_key.private_key.save(filename, content)
 | 
				
			||||||
 | 
					        return redirect(reverse_lazy('hosting:ssh_keys'), foo='bar')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SSHKeyCreateView(LoginRequiredMixin, FormView):
 | 
					class SSHKeyCreateView(LoginRequiredMixin, FormView):
 | 
				
			||||||
    form_class = UserHostingKeyForm
 | 
					    form_class = UserHostingKeyForm
 | 
				
			||||||
    model = UserHostingKey
 | 
					    model = UserHostingKey
 | 
				
			||||||
| 
						 | 
					@ -383,6 +412,11 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def form_valid(self, form):
 | 
					    def form_valid(self, form):
 | 
				
			||||||
        form.save()
 | 
					        form.save()
 | 
				
			||||||
 | 
					        if 'dcl-generated-key-' in form.instance.name:
 | 
				
			||||||
 | 
					            content = ContentFile(form.cleaned_data.get('private_key'))
 | 
				
			||||||
 | 
					            filename = form.cleaned_data.get(
 | 
				
			||||||
 | 
					                'name') + '_' + str(uuid.uuid4())[:8] + '_private.pem'
 | 
				
			||||||
 | 
					            form.instance.private_key.save(filename, content)
 | 
				
			||||||
        context = self.get_context_data()
 | 
					        context = self.get_context_data()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        next_url = self.request.session.get(
 | 
					        next_url = self.request.session.get(
 | 
				
			||||||
| 
						 | 
					@ -407,10 +441,11 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView):
 | 
				
			||||||
        manager = OpenNebulaManager()
 | 
					        manager = OpenNebulaManager()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Get user ssh key
 | 
					        # Get user ssh key
 | 
				
			||||||
        public_key = form.cleaned_data.get('public_key', '').decode('utf-8')
 | 
					        public_key = str(form.cleaned_data.get('public_key', ''))
 | 
				
			||||||
        # Add ssh key to user
 | 
					        # Add ssh key to user
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            manager.add_public_key(user=owner, public_key=public_key, merge=True)
 | 
					            manager.add_public_key(
 | 
				
			||||||
 | 
					                user=owner, public_key=public_key, merge=True)
 | 
				
			||||||
        except ConnectionError:
 | 
					        except ConnectionError:
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
        except WrongNameError:
 | 
					        except WrongNameError:
 | 
				
			||||||
| 
						 | 
					@ -421,6 +456,9 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView):
 | 
				
			||||||
    def post(self, request, *args, **kwargs):
 | 
					    def post(self, request, *args, **kwargs):
 | 
				
			||||||
        print(self.request.POST.dict())
 | 
					        print(self.request.POST.dict())
 | 
				
			||||||
        form = self.get_form()
 | 
					        form = self.get_form()
 | 
				
			||||||
 | 
					        required = 'add_ssh' in self.request.POST
 | 
				
			||||||
 | 
					        form.fields['name'].required = required
 | 
				
			||||||
 | 
					        form.fields['public_key'].required = required
 | 
				
			||||||
        if form.is_valid():
 | 
					        if form.is_valid():
 | 
				
			||||||
            return self.form_valid(form)
 | 
					            return self.form_valid(form)
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
| 
						 | 
					@ -563,7 +601,7 @@ class PaymentVMView(LoginRequiredMixin, FormView):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Create a Hosting Bill
 | 
					            # Create a Hosting Bill
 | 
				
			||||||
            HostingBill.create(
 | 
					            HostingBill.create(
 | 
				
			||||||
                 customer=customer, billing_address=billing_address)
 | 
					                customer=customer, billing_address=billing_address)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Create Billing Address for User if he does not have one
 | 
					            # Create Billing Address for User if he does not have one
 | 
				
			||||||
            if not customer.user.billing_addresses.count():
 | 
					            if not customer.user.billing_addresses.count():
 | 
				
			||||||
| 
						 | 
					@ -600,7 +638,9 @@ class PaymentVMView(LoginRequiredMixin, FormView):
 | 
				
			||||||
            email = BaseEmail(**email_data)
 | 
					            email = BaseEmail(**email_data)
 | 
				
			||||||
            email.send()
 | 
					            email.send()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return HttpResponseRedirect(reverse('hosting:orders', kwargs={'pk': order.id}))
 | 
					            return HttpResponseRedirect(
 | 
				
			||||||
 | 
					                "{url}?{query_params}".format(url=reverse('hosting:orders', kwargs={'pk': order.id}),
 | 
				
			||||||
 | 
					                                              query_params='page=payment'))
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            return self.form_invalid(form)
 | 
					            return self.form_invalid(form)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -619,6 +659,10 @@ class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin, Detai
 | 
				
			||||||
        owner = self.request.user
 | 
					        owner = self.request.user
 | 
				
			||||||
        manager = OpenNebulaManager(email=owner.email,
 | 
					        manager = OpenNebulaManager(email=owner.email,
 | 
				
			||||||
                                    password=owner.password)
 | 
					                                    password=owner.password)
 | 
				
			||||||
 | 
					        if self.request.GET.get('page', '') == 'payment':
 | 
				
			||||||
 | 
					            context['page_header_text'] = _('Confirm Order')
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            context['page_header_text'] = _('Invoice')
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            vm = manager.get_vm(obj.vm_id)
 | 
					            vm = manager.get_vm(obj.vm_id)
 | 
				
			||||||
            context['vm'] = VirtualMachineSerializer(vm).data
 | 
					            context['vm'] = VirtualMachineSerializer(vm).data
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue