Fix conflicts
This commit is contained in:
		
				commit
				
					
						c69694274f
					
				
			
		
					 26 changed files with 533 additions and 257 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -34,3 +34,4 @@ secret-key | ||||||
| .idea/ | .idea/ | ||||||
| 
 | 
 | ||||||
| .env | .env | ||||||
|  | *.mo | ||||||
|  |  | ||||||
|  | @ -8,7 +8,13 @@ | ||||||
| 1.0.3: 2017-06-02 | 1.0.3: 2017-06-02 | ||||||
|     * [datacenterlight] Hotfix, remove footer on mobile devices |     * [datacenterlight] Hotfix, remove footer on mobile devices | ||||||
| 
 | 
 | ||||||
| next | next: | ||||||
|  | 	* [datacenterlight] Add German translations | ||||||
|  | 	* [datacenterlight] Change beta access to subscriptions  | ||||||
|  | 	* [hosting] Add German translations  | ||||||
|  | 	* [blog] Add German translation for header | ||||||
| 	* [opennebula_api] Improve testing, add ssh key functions | 	* [opennebula_api] Improve testing, add ssh key functions | ||||||
| 	* [opennebula_api] Remove template views | 	* [opennebula_api] Remove template views | ||||||
| 	* [datacenterlight] Allow user to have multiple ssh keys  | 	* [datacenterlight] Allow user to have multiple ssh keys  | ||||||
|  |         * [datacenterlight] Changed stripe.js v2 to v3 | ||||||
|  |         * [datacenterlight] Added support for stripe payment errors on current user language  | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							|  | @ -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-05-26 13:35+0000\n" | "POT-Creation-Date: 2017-05-30 13:47+0000\n" | ||||||
| "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||||||
| "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||||||
| "Language-Team: LANGUAGE <LL@li.org>\n" | "Language-Team: LANGUAGE <LL@li.org>\n" | ||||||
|  |  | ||||||
|  | @ -17,7 +17,7 @@ | ||||||
| 	    {% render_model post "abstract" "" "" 'truncatewords_html:10'  %} | 	    {% render_model post "abstract" "" "" 'truncatewords_html:10'  %} | ||||||
| 	  </h2> | 	  </h2> | ||||||
| 	  <span class="meta"> | 	  <span class="meta"> | ||||||
| 	    Posted on {{ post.date_published|date:"DATE_FORMAT" }} | 			  {% trans "Posted on"%} {{ post.date_published|date:"DATE_FORMAT" }} | ||||||
| 	  </span> | 	  </span> | ||||||
| 	</div> | 	</div> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
|  | @ -75,6 +75,7 @@ msgstr "" | ||||||
| msgid "Thank you!" | msgid "Thank you!" | ||||||
| msgstr "Vielen Dank!" | msgstr "Vielen Dank!" | ||||||
| 
 | 
 | ||||||
|  | <<<<<<< HEAD | ||||||
| #: templates/datacenterlight/index.html:62 | #: templates/datacenterlight/index.html:62 | ||||||
| #: templates/datacenterlight/index.html:160 | #: templates/datacenterlight/index.html:160 | ||||||
| #: templates/datacenterlight/index.html:368 | #: templates/datacenterlight/index.html:368 | ||||||
|  | @ -158,7 +159,6 @@ msgid "" | ||||||
| "tight factory walls." | "tight factory walls." | ||||||
| msgstr "Verzichtet auf aktive Kühlung, indem es sich die Isolation unserer ehemaligen Fabrikhalle zu Nutze macht." | msgstr "Verzichtet auf aktive Kühlung, indem es sich die Isolation unserer ehemaligen Fabrikhalle zu Nutze macht." | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:214 |  | ||||||
| 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 " | ||||||
|  | @ -169,6 +169,7 @@ msgstr "" | ||||||
| "komponenten hinzugekauft und skalieren so das Datencenter." | "komponenten hinzugekauft und skalieren so das Datencenter." | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:240 | #: templates/datacenterlight/index.html:240 | ||||||
|  | #: datacenterlight/templates/datacenterlight/index.html:218 | ||||||
| msgid "" | msgid "" | ||||||
| "Our VMs are located in Switzerland, with reliable power supply and fast " | "Our VMs are located in Switzerland, with reliable power supply and fast " | ||||||
| "internet connection. Our VM costs less thanks to our featherlight " | "internet connection. Our VM costs less thanks to our featherlight " | ||||||
|  | @ -178,84 +179,84 @@ 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:258 | 
 | ||||||
| #: templates/datacenterlight/pricing.html:106 | #: datacenterlight/templates/datacenterlight/index.html:236 | ||||||
|  | #: datacenterlight/templates/datacenterlight/pricing.html:106 | ||||||
| msgid "We are cutting down the costs significantly!" | msgid "We are cutting down the costs significantly!" | ||||||
| msgstr "Wir sorgen dafür, dass die Kosten für Sie signifikant abnehmen" | msgstr "Wir sorgen dafür, dass die Kosten für Sie signifikant abnehmen" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:259 | #: datacenterlight/templates/datacenterlight/index.html:237 | ||||||
| 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:260 | #: datacenterlight/templates/datacenterlight/index.html:238 | ||||||
| msgid "More Info" | msgid "More Info" | ||||||
| msgstr "Weitere Informationen" | msgstr "Weitere Informationen" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:267 | #: datacenterlight/templates/datacenterlight/index.html:245 | ||||||
| #: templates/datacenterlight/pricing.html:119 | #: datacenterlight/templates/datacenterlight/pricing.html:119 | ||||||
| msgid "VM hosting" | msgid "VM hosting" | ||||||
| msgstr "VM Hosting" | msgstr "VM Hosting" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:274 | #: datacenterlight/templates/datacenterlight/index.html:252 | ||||||
| msgid "Based in Switzerland" | msgid "Based in Switzerland" | ||||||
| msgstr "Standort des Datacenters ist in der Schweiz" | msgstr "Standort des Datacenters ist in der Schweiz" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:283 | #: datacenterlight/templates/datacenterlight/index.html:261 | ||||||
| #, fuzzy |  | ||||||
| #| msgid "10 GB Storage (SSD)" |  | ||||||
| msgid "10 GB Storage (SSD)" | msgid "10 GB Storage (SSD)" | ||||||
| msgstr "10 GB Storage (SSD)" | msgstr "10 GB Storage (SSD)" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:286 | #: datacenterlight/templates/datacenterlight/index.html:264 | ||||||
| #: templates/datacenterlight/pricing.html:161 | #: datacenterlight/templates/datacenterlight/pricing.html:161 | ||||||
| msgid "Order Now!" | msgid "Order Now!" | ||||||
| msgstr "Bestelle jetzt!" | msgstr "Bestelle jetzt!" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:302 | #: datacenterlight/templates/datacenterlight/index.html:280 | ||||||
| msgid "Want to know more? Subscribe to our newsletter!" | msgid "Want to know more? Subscribe to our newsletter!" | ||||||
| msgstr "Willst du mehr wissen? Abonniere unseren Newsletter!" | msgstr "Willst du mehr wissen? Abonniere unseren Newsletter!" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:329 | #: datacenterlight/templates/datacenterlight/index.html:307 | ||||||
| msgid "Switzerland " | msgid "Switzerland " | ||||||
| msgstr "Schweiz" | msgstr "Schweiz" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:346 | #: datacenterlight/templates/datacenterlight/index.html:324 | ||||||
| msgid "Questions?" | msgid "Questions?" | ||||||
| msgstr "Fragen?" | msgstr "Fragen?" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:346 | #: datacenterlight/templates/datacenterlight/index.html:324 | ||||||
| msgid "Contact us!" | msgid "Contact us!" | ||||||
| msgstr "Kontaktiere uns!" | msgstr "Kontaktiere uns!" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:364 | #: datacenterlight/templates/datacenterlight/index.html:342 | ||||||
| #: templates/datacenterlight/pricing.html:186 | #: datacenterlight/templates/datacenterlight/pricing.html:186 | ||||||
| msgid "Home" | msgid "Home" | ||||||
| msgstr "Home" | msgstr "Home" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/index.html:377 | #: datacenterlight/templates/datacenterlight/index.html:355 | ||||||
| #: templates/datacenterlight/pricing.html:199 | #: datacenterlight/templates/datacenterlight/pricing.html:199 | ||||||
| msgid "Pricing" | msgid "Pricing" | ||||||
| msgstr "Preise" | msgstr "Preise" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/pricing.html:71 | #: datacenterlight/templates/datacenterlight/pricing.html:71 | ||||||
| msgid "Buy VM" | msgid "Buy VM" | ||||||
| msgstr "VM Kaufen" | msgstr "VM Kaufen" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/pricing.html:127 | #: datacenterlight/templates/datacenterlight/pricing.html:127 | ||||||
| msgid "Hosted in Switzerland" | msgid "Hosted in Switzerland" | ||||||
| msgstr "Standort des Datacenters ist in der Schweiz" | msgstr "Standort des Datacenters ist in der Schweiz" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/pricing.html:144 | #: datacenterlight/templates/datacenterlight/pricing.html:144 | ||||||
| msgid "GB Storage (SSD)" | msgid "GB Storage (SSD)" | ||||||
| msgstr "GB Storage (SSD)" | msgstr "GB Storage (SSD)" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/pricing.html:168 | #: datacenterlight/templates/datacenterlight/pricing.html:168 | ||||||
| msgid "Simple and affordable: Try our virtual machine with featherlight price." | msgid "Simple and affordable: Try our virtual machine with featherlight price." | ||||||
| msgstr "" | msgstr "" | ||||||
| "Einfach und bezahlbar: Testen Sie unsere virtuelen Machinen mit  " | "Einfach und bezahlbar: Testen Sie unsere virtuelen Machinen mit  " | ||||||
| "federleichten Preisen" | "federleichten Preisen" | ||||||
| 
 | 
 | ||||||
| #: templates/datacenterlight/pricing.html:171 | #: templates/datacenterlight/pricing.html:171 | ||||||
|  | #: datacenterlight/templates/datacenterlight/pricing.html:171 | ||||||
| msgid "" | msgid "" | ||||||
| "Our VMs are hosted in Glarus, Switzerland, and our website is currently " | "Our VMs are hosted in Glarus, Switzerland, and our website is currently " | ||||||
| "running in BETA mode. If you want more information that you did not find on " | "running in BETA mode. If you want more information that you did not find on " | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							|  | @ -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-05-26 13:35+0000\n" | "POT-Creation-Date: 2017-05-30 13:47+0000\n" | ||||||
| "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||||||
| "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||||||
| "Language-Team: LANGUAGE <LL@li.org>\n" | "Language-Team: LANGUAGE <LL@li.org>\n" | ||||||
|  | @ -18,15 +18,21 @@ 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" | ||||||
| 
 | 
 | ||||||
|  | #: cms_templates/djangocms_blog/_header_post_detail.html:20 | ||||||
|  | #: digitalglarus/templates/digitalglarus/post_detail.html:19 | ||||||
|  | #: ungleich/templates/ungleich/djangocms_blog/includes/blog_item.html:19 | ||||||
|  | msgid "Posted on" | ||||||
|  | msgstr "Veröffentlicht am" | ||||||
|  | 
 | ||||||
| #: cms_templates/djangocms_blog/post_list.html:11 | #: cms_templates/djangocms_blog/post_list.html:11 | ||||||
| #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:11 | #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:11 | ||||||
| msgid "Articles by" | msgid "Articles by" | ||||||
| msgstr "" | msgstr "Artikel vom" | ||||||
| 
 | 
 | ||||||
| #: cms_templates/djangocms_blog/post_list.html:12 | #: cms_templates/djangocms_blog/post_list.html:12 | ||||||
| #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:12 | #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:12 | ||||||
| msgid "Archive" | msgid "Archive" | ||||||
| msgstr "" | msgstr "Archiv" | ||||||
| 
 | 
 | ||||||
| #: cms_templates/djangocms_blog/post_list.html:13 | #: cms_templates/djangocms_blog/post_list.html:13 | ||||||
| #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:13 | #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:13 | ||||||
|  | @ -36,39 +42,39 @@ msgstr "" | ||||||
| #: cms_templates/djangocms_blog/post_list.html:14 | #: cms_templates/djangocms_blog/post_list.html:14 | ||||||
| #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:14 | #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:14 | ||||||
| msgid "Category" | msgid "Category" | ||||||
| msgstr "" | msgstr "Kategorie" | ||||||
| 
 | 
 | ||||||
| #: cms_templates/djangocms_blog/post_list.html:21 | #: cms_templates/djangocms_blog/post_list.html:21 | ||||||
| #: digitalglarus/templates/glarus_blog/post_list.html:15 | #: digitalglarus/templates/glarus_blog/post_list.html:15 | ||||||
| #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:22 | #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:22 | ||||||
| msgid "No article found." | msgid "No article found." | ||||||
| msgstr "" | msgstr "Keine Artikel gefunden" | ||||||
| 
 | 
 | ||||||
| #: cms_templates/djangocms_blog/post_list.html:24 | #: cms_templates/djangocms_blog/post_list.html:24 | ||||||
| #: digitalglarus/templates/glarus_blog/post_list.html:18 | #: digitalglarus/templates/glarus_blog/post_list.html:18 | ||||||
| #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:25 | #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:25 | ||||||
| msgid "Back" | msgid "Back" | ||||||
| msgstr "" | msgstr "Zurück" | ||||||
| 
 | 
 | ||||||
| #: cms_templates/djangocms_blog/post_list.html:32 | #: cms_templates/djangocms_blog/post_list.html:32 | ||||||
| #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:33 | #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:33 | ||||||
| msgid "Newer Posts" | msgid "Newer Posts" | ||||||
| msgstr "" | msgstr "Neuere Einträge" | ||||||
| 
 | 
 | ||||||
| #: cms_templates/djangocms_blog/post_list.html:39 | #: cms_templates/djangocms_blog/post_list.html:39 | ||||||
| #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:40 | #: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:40 | ||||||
| msgid "Older Posts" | msgid "Older Posts" | ||||||
| msgstr "" | msgstr "Ältere Einträge" | ||||||
| 
 | 
 | ||||||
| #: cms_templates/includes/blog_item.html:31 | #: cms_templates/includes/blog_item.html:31 | ||||||
| #: digitalglarus/templates/glarus_blog/includes/blog_item.html:32 | #: digitalglarus/templates/glarus_blog/includes/blog_item.html:32 | ||||||
| msgid "read more" | msgid "read more" | ||||||
| msgstr "" | msgstr "weiterlesen" | ||||||
| 
 | 
 | ||||||
| #: cms_templates/includes/blog_meta.html:6 | #: cms_templates/includes/blog_meta.html:6 | ||||||
| #: digitalglarus/templates/glarus_blog/includes/blog_meta.html:6 | #: digitalglarus/templates/glarus_blog/includes/blog_meta.html:6 | ||||||
| msgid "by" | msgid "by" | ||||||
| msgstr "" | msgstr "von" | ||||||
| 
 | 
 | ||||||
| #: digitalglarus/cms_plugins.py:9 | #: digitalglarus/cms_plugins.py:9 | ||||||
| msgid "Digital Glarus Gallery" | msgid "Digital Glarus Gallery" | ||||||
|  | @ -81,53 +87,53 @@ msgstr "" | ||||||
| #: digitalglarus/forms.py:35 digitalglarus/forms.py:70 nosystemd/forms.py:47 | #: digitalglarus/forms.py:35 digitalglarus/forms.py:70 nosystemd/forms.py:47 | ||||||
| #: utils/forms.py:109 | #: utils/forms.py:109 | ||||||
| msgid "Street Address" | msgid "Street Address" | ||||||
| msgstr "" | msgstr "Adresse" | ||||||
| 
 | 
 | ||||||
| #: digitalglarus/forms.py:36 digitalglarus/forms.py:71 nosystemd/forms.py:48 | #: digitalglarus/forms.py:36 digitalglarus/forms.py:71 nosystemd/forms.py:48 | ||||||
| #: utils/forms.py:110 utils/forms.py:124 | #: utils/forms.py:110 utils/forms.py:124 | ||||||
| msgid "City" | msgid "City" | ||||||
| msgstr "" | msgstr "Stadt" | ||||||
| 
 | 
 | ||||||
| #: digitalglarus/forms.py:37 digitalglarus/forms.py:72 nosystemd/forms.py:49 | #: digitalglarus/forms.py:37 digitalglarus/forms.py:72 nosystemd/forms.py:49 | ||||||
| #: utils/forms.py:111 utils/forms.py:125 | #: utils/forms.py:111 utils/forms.py:125 | ||||||
| msgid "Postal Code" | msgid "Postal Code" | ||||||
| msgstr "" | msgstr "Postleitzahl" | ||||||
| 
 | 
 | ||||||
| #: digitalglarus/forms.py:38 digitalglarus/forms.py:73 nosystemd/forms.py:50 | #: digitalglarus/forms.py:38 digitalglarus/forms.py:73 nosystemd/forms.py:50 | ||||||
| #: utils/forms.py:112 utils/forms.py:126 | #: utils/forms.py:112 utils/forms.py:126 | ||||||
| msgid "Country" | msgid "Country" | ||||||
| msgstr "" | msgstr "Land" | ||||||
| 
 | 
 | ||||||
| #: digitalglarus/templates/digitalglarus/login.html:88 | #: digitalglarus/templates/digitalglarus/login.html:88 | ||||||
| #: digitalglarus/templates/digitalglarus/login_hello.html:32 | #: digitalglarus/templates/digitalglarus/login_hello.html:32 | ||||||
| #: nosystemd/templates/nosystemd/login.html:23 | #: nosystemd/templates/nosystemd/login.html:23 | ||||||
| msgid "You haven been logged out" | msgid "You haven been logged out" | ||||||
| msgstr "" | msgstr "Sie wurden abgemeldet" | ||||||
| 
 | 
 | ||||||
| #: digitalglarus/templates/glarus_blog/post_list.html:23 | #: digitalglarus/templates/glarus_blog/post_list.html:23 | ||||||
| #: nosystemd/templates/nosystemd/donations.html:74 | #: nosystemd/templates/nosystemd/donations.html:74 | ||||||
| msgid "previous" | msgid "previous" | ||||||
| msgstr "" | msgstr "vorherige" | ||||||
| 
 | 
 | ||||||
| #: digitalglarus/templates/glarus_blog/post_list.html:26 | #: digitalglarus/templates/glarus_blog/post_list.html:26 | ||||||
| #: dynamicweb/settings/base.py:182 templates/cms/__init__.py:10 | #: dynamicweb/settings/base.py:182 templates/cms/__init__.py:10 | ||||||
| #: templates/cms/ungleichch/__init__.py:5 | #: templates/cms/ungleichch/__init__.py:5 | ||||||
| msgid "Page" | msgid "Page" | ||||||
| msgstr "" | msgstr "Seite" | ||||||
| 
 | 
 | ||||||
| #: digitalglarus/templates/glarus_blog/post_list.html:26 | #: digitalglarus/templates/glarus_blog/post_list.html:26 | ||||||
| msgid "of" | msgid "of" | ||||||
| msgstr "" | msgstr "vom" | ||||||
| 
 | 
 | ||||||
| #: digitalglarus/templates/glarus_blog/post_list.html:29 | #: digitalglarus/templates/glarus_blog/post_list.html:29 | ||||||
| #: nosystemd/templates/nosystemd/donations.html:80 | #: nosystemd/templates/nosystemd/donations.html:80 | ||||||
| msgid "next" | msgid "next" | ||||||
| msgstr "" | msgstr "nächste" | ||||||
| 
 | 
 | ||||||
| #: digitalglarus/templates/language_chooser.html:8 | #: digitalglarus/templates/language_chooser.html:8 | ||||||
| #: ungleich/templates/cms/ungleichch/_header_base.html:23 | #: ungleich/templates/cms/ungleichch/_header_base.html:23 | ||||||
| msgid "Change to language:" | msgid "Change to language:" | ||||||
| msgstr "" | msgstr "Sprache wechseln zu: " | ||||||
| 
 | 
 | ||||||
| #: digitalglarus/templates/new_base_glarus.html:168 | #: digitalglarus/templates/new_base_glarus.html:168 | ||||||
| #: digitalglarus/templates/new_base_glarus.html:191 | #: digitalglarus/templates/new_base_glarus.html:191 | ||||||
|  | @ -314,13 +320,12 @@ msgstr "Name" | ||||||
| 
 | 
 | ||||||
| #: membership/forms.py:43 | #: membership/forms.py:43 | ||||||
| #, fuzzy | #, fuzzy | ||||||
| #| msgid "Phone number" |  | ||||||
| msgid "Card number" | msgid "Card number" | ||||||
| msgstr "Telefon" | msgstr "Kartennummer" | ||||||
| 
 | 
 | ||||||
| #: membership/forms.py:43 | #: membership/forms.py:43 | ||||||
| msgid "Expiry date" | msgid "Expiry date" | ||||||
| msgstr "" | msgstr "Ablaufdatum" | ||||||
| 
 | 
 | ||||||
| #: membership/forms.py:44 | #: membership/forms.py:44 | ||||||
| msgid "CCV" | msgid "CCV" | ||||||
|  | @ -339,14 +344,12 @@ msgid "Use this pattern(MM/YYYY)." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: membership/models.py:182 | #: membership/models.py:182 | ||||||
| #, fuzzy |  | ||||||
| #| msgid "Phone number" |  | ||||||
| msgid "Wrong CCV number." | msgid "Wrong CCV number." | ||||||
| msgstr "Telefon" | msgstr "Falsche CCV Nummer" | ||||||
| 
 | 
 | ||||||
| #: nosystemd/forms.py:46 | #: nosystemd/forms.py:46 | ||||||
| msgid "Amount" | msgid "Amount" | ||||||
| msgstr "" | msgstr "Betrag" | ||||||
| 
 | 
 | ||||||
| #: nosystemd/templates/nosystemd/base.html:70 | #: nosystemd/templates/nosystemd/base.html:70 | ||||||
| msgid "My Donations" | msgid "My Donations" | ||||||
|  | @ -1464,6 +1467,10 @@ msgstr "" | ||||||
| msgid "Unknown or unspecified country" | msgid "Unknown or unspecified country" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
|  | #: utils/forms.py:20 | ||||||
|  | msgid "Enter your name or company name" | ||||||
|  | msgstr "Geben Sie Ihren Namen oder der Ihrer Firma ein" | ||||||
|  | 
 | ||||||
| #: utils/forms.py:123 | #: utils/forms.py:123 | ||||||
| msgid "Street Building" | msgid "Street Building" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ | ||||||
|         </h2> |         </h2> | ||||||
|       </a> |       </a> | ||||||
|       <p class="post-meta" style="font-size:0.9em;"> |       <p class="post-meta" style="font-size:0.9em;"> | ||||||
|         Posted on {{ post.date_published|date:"DATE_FORMAT" }} | 	  {% trans "Posted on" %}{{ post.date_published|date:"DATE_FORMAT" }} | ||||||
|       </p> |       </p> | ||||||
| 
 | 
 | ||||||
|       <p class="post-subtitle"> |       <p class="post-subtitle"> | ||||||
|  |  | ||||||
|  | @ -25,47 +25,47 @@ msgstr "Fügen Sie Ihren public key ein" | ||||||
| #: hosting/templates/hosting/base_short.html:68 | #: hosting/templates/hosting/base_short.html:68 | ||||||
| #: hosting/templates/hosting/base_short.html:139 | #: hosting/templates/hosting/base_short.html:139 | ||||||
| msgid "My Virtual Machines" | msgid "My Virtual Machines" | ||||||
| msgstr "" | msgstr "Meine virtuellen Maschinen" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/base_short.html:73 | #: hosting/templates/hosting/base_short.html:73 | ||||||
| #: hosting/templates/hosting/base_short.html:145 | #: hosting/templates/hosting/base_short.html:145 | ||||||
| #: hosting/templates/hosting/orders.html:12 | #: hosting/templates/hosting/orders.html:12 | ||||||
| msgid "My Orders" | msgid "My Orders" | ||||||
| msgstr "" | msgstr "Meine Bestellungen" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/base_short.html:78 | #: hosting/templates/hosting/base_short.html:78 | ||||||
| #: hosting/templates/hosting/base_short.html:152 | #: hosting/templates/hosting/base_short.html:152 | ||||||
| msgid "Keys" | msgid "Keys" | ||||||
| msgstr "" | msgstr "Schlüssel" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/base_short.html:83 | #: hosting/templates/hosting/base_short.html:83 | ||||||
| #: hosting/templates/hosting/base_short.html:158 | #: hosting/templates/hosting/base_short.html:158 | ||||||
| msgid "Notifications " | msgid "Notifications " | ||||||
| msgstr "" | msgstr "Benachrichtigungen" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/base_short.html:90 | #: hosting/templates/hosting/base_short.html:90 | ||||||
| msgid "Logout" | msgid "Logout" | ||||||
| msgstr "" | msgstr "Abmeleden" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/base_short.html:95 | #: hosting/templates/hosting/base_short.html:95 | ||||||
| msgid "How it works" | msgid "How it works" | ||||||
| msgstr "" | msgstr "Wie es funktioniert" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/base_short.html:98 | #: hosting/templates/hosting/base_short.html:98 | ||||||
| msgid "Your infrastructure" | msgid "Your infrastructure" | ||||||
| msgstr "" | msgstr "Ihre Infrastruktur" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/base_short.html:101 | #: hosting/templates/hosting/base_short.html:101 | ||||||
| msgid "Our inftrastructure" | msgid "Our inftrastructure" | ||||||
| msgstr "" | msgstr "Unsere Infrastruktur" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/base_short.html:104 | #: hosting/templates/hosting/base_short.html:104 | ||||||
| msgid "Pricing" | msgid "Pricing" | ||||||
| msgstr "" | msgstr "Preise" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/base_short.html:107 | #: hosting/templates/hosting/base_short.html:107 | ||||||
| msgid "Contact" | msgid "Contact" | ||||||
| msgstr "" | msgstr "Kontakt" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/base_short.html:110 | #: hosting/templates/hosting/base_short.html:110 | ||||||
| #: hosting/templates/hosting/login.html:32 | #: hosting/templates/hosting/login.html:32 | ||||||
|  | @ -73,19 +73,19 @@ msgstr "" | ||||||
| #: hosting/templates/hosting/reset_password.html:31 | #: hosting/templates/hosting/reset_password.html:31 | ||||||
| #: hosting/templates/hosting/signup.html:30 | #: hosting/templates/hosting/signup.html:30 | ||||||
| msgid "Login" | msgid "Login" | ||||||
| msgstr "" | msgstr "Anmelden" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/base_short.html:134 | #: hosting/templates/hosting/base_short.html:134 | ||||||
| msgid "Home" | msgid "Home" | ||||||
| msgstr "" | msgstr "Home" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/bill_detail.html:11 templates/hosting/order_detail.html:10 | #: templates/hosting/bill_detail.html:11 templates/hosting/order_detail.html:10 | ||||||
| msgid "Invoice" | msgid "Invoice" | ||||||
| msgstr "" | msgstr "Rechnung" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/bill_detail.html:11 templates/hosting/order_detail.html:10 | #: templates/hosting/bill_detail.html:11 templates/hosting/order_detail.html:10 | ||||||
| msgid "Order #" | msgid "Order #" | ||||||
| msgstr "" | msgstr "Rechnung #" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/bill_detail.html:25 | #: templates/hosting/bill_detail.html:25 | ||||||
| msgid "ungleich GmbH" | msgid "ungleich GmbH" | ||||||
|  | @ -114,7 +114,7 @@ msgstr "" | ||||||
| #: templates/hosting/bill_detail.html:68 | #: templates/hosting/bill_detail.html:68 | ||||||
| #, python-format | #, python-format | ||||||
| msgid "Alles Preise in CHF mit 8%% Mehrwertsteuer." | msgid "Alles Preise in CHF mit 8%% Mehrwertsteuer." | ||||||
| msgstr "" | msgstr "All prices in CHF including 8%% VAT" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/bill_detail.html:69 | #: templates/hosting/bill_detail.html:69 | ||||||
| msgid "Betrag zahlbar innerhalb von 30 Tagen ab Rechnungseingang." | msgid "Betrag zahlbar innerhalb von 30 Tagen ab Rechnungseingang." | ||||||
|  | @ -142,7 +142,7 @@ msgstr "" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/bills.html:12 | #: templates/hosting/bills.html:12 | ||||||
| msgid "Customers" | msgid "Customers" | ||||||
| msgstr "" | msgstr "Kunden" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/bills.html:16 | #: hosting/templates/hosting/bills.html:16 | ||||||
| #: hosting/templates/hosting/virtual_machine_key.html:42 | #: hosting/templates/hosting/virtual_machine_key.html:42 | ||||||
|  | @ -155,17 +155,17 @@ msgstr "" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/bills.html:28 | #: templates/hosting/bills.html:28 | ||||||
| msgid "View Bill" | msgid "View Bill" | ||||||
| msgstr "" | msgstr "Rechnung anzeigen" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/bills.html:41 templates/hosting/orders.html.py:83 | #: templates/hosting/bills.html:41 templates/hosting/orders.html.py:83 | ||||||
| #: templates/hosting/virtual_machines.html:70 | #: templates/hosting/virtual_machines.html:70 | ||||||
| msgid "previous" | msgid "previous" | ||||||
| msgstr "" | msgstr "vorherige" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/bills.html:47 templates/hosting/orders.html.py:89 | #: templates/hosting/bills.html:47 templates/hosting/orders.html.py:89 | ||||||
| #: templates/hosting/virtual_machines.html:76 | #: templates/hosting/virtual_machines.html:76 | ||||||
| msgid "next" | msgid "next" | ||||||
| msgstr "" | msgstr "nächste" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/confirm_reset_password.html:10 | #: templates/hosting/confirm_reset_password.html:10 | ||||||
| #: templates/hosting/login.html:9 templates/hosting/reset_password.html.py:9 | #: templates/hosting/login.html:9 templates/hosting/reset_password.html.py:9 | ||||||
|  | @ -175,26 +175,42 @@ msgstr "Ihre VM in der Schweiz" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/confirm_reset_password.html:14 | #: templates/hosting/confirm_reset_password.html:14 | ||||||
| msgid "Set your new password" | msgid "Set your new password" | ||||||
| msgstr "" | msgstr "Setzen Ihr neues Passwort" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/confirm_reset_password.html:28 | #: hosting/templates/hosting/confirm_reset_password.html:28 | ||||||
| #: hosting/templates/hosting/reset_password.html:22 | #: hosting/templates/hosting/reset_password.html:22 | ||||||
| msgid "Reset" | msgid "Reset" | ||||||
| msgstr "" | msgstr "Zurücksetzen" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/confirm_reset_password.html:32 | #: hosting/templates/hosting/confirm_reset_password.html:32 | ||||||
| #: hosting/templates/hosting/reset_password.html:28 | #: hosting/templates/hosting/reset_password.html:28 | ||||||
| #: hosting/templates/hosting/signup.html:27 | #: hosting/templates/hosting/signup.html:27 | ||||||
| msgid "Already have an account ?" | msgid "Already have an account ?" | ||||||
| msgstr "" | msgstr "Besitzen sie bereits ein Bentzerkonto" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/create_virtual_machine.html:19 | #: hosting/templates/hosting/confirm_reset_password.html:32 | ||||||
|  | msgid "Log in" | ||||||
|  | msgstr "Anmelden" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/create_virtual_machine.html:19 | ||||||
| msgid "New Virtual Machine" | msgid "New Virtual Machine" | ||||||
| msgstr "" | msgstr "Neue virtuelle Maschine" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/create_virtual_machine.html:24 | ||||||
|  | msgid "Select VM Template:" | ||||||
|  | msgstr "Wählen Sie eine Vorlage" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/create_virtual_machine.html:32 | ||||||
|  | msgid "Select VM Configuration:" | ||||||
|  | msgstr "Wählen Sie eine Konfiguration" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/create_virtual_machine.html:39 | ||||||
|  | msgid "CHF/Month" | ||||||
|  | msgstr "CHF/Monat" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/create_virtual_machine.html:45 | #: templates/hosting/create_virtual_machine.html:45 | ||||||
| msgid "Start VM" | msgid "Start VM" | ||||||
| msgstr "" | msgstr "Start VM" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/emails/password_reset_email.html:2 | #: templates/hosting/emails/password_reset_email.html:2 | ||||||
| #: templates/hosting/emails/password_reset_email.txt:2 | #: templates/hosting/emails/password_reset_email.txt:2 | ||||||
|  | @ -220,48 +236,53 @@ msgstr "" | ||||||
| msgid "The %(site_name)s team" | msgid "The %(site_name)s team" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
|  | #: hosting/templates/hosting/login.html:10 | ||||||
|  | #: hosting/templates/hosting/reset_password.html:10 | ||||||
|  | #: hosting/templates/hosting/signup.html:9 | ||||||
|  | msgid "Your VM hosted in Switzerland" | ||||||
|  | msgstr "Ihre VM gehostet in der Schweiz" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/login.html:26 | #: hosting/templates/hosting/login.html:26 | ||||||
| msgid "You haven been logged out" | msgid "You haven been logged out" | ||||||
| msgstr "" | msgstr "Sie wurden abgmeldet" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/login.html:49 | #: hosting/templates/hosting/login.html:49 | ||||||
| msgid "Don't have an account yet ? " | msgid "Don't have an account yet ? " | ||||||
| msgstr "" | msgstr "Besitzen Sie kein Benutzerkonto?" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/login.html:52 | #: hosting/templates/hosting/login.html:52 | ||||||
| #: hosting/templates/hosting/signup.html:13 | #: hosting/templates/hosting/signup.html:13 | ||||||
| #: hosting/templates/hosting/signup.html:21 | #: hosting/templates/hosting/signup.html:21 | ||||||
| msgid "Sign up" | msgid "Sign up" | ||||||
| msgstr "" | msgstr "Registrieren" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/login.html:54 | #: hosting/templates/hosting/login.html:54 | ||||||
| msgid "Forgot your password ? " | msgid "Forgot your password ? " | ||||||
| msgstr "" | msgstr "Passwort vergessen?" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/notifications.html:9 | #: templates/hosting/notifications.html:9 | ||||||
| msgid "Notifications" | msgid "Notifications" | ||||||
| msgstr "" | msgstr "Benachrichtigungen" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/notifications.html:16 | #: templates/hosting/notifications.html:16 | ||||||
| msgid "Unread" | msgid "Unread" | ||||||
| msgstr "" | msgstr "Ungelesen" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/notifications.html:26 | #: templates/hosting/notifications.html:26 | ||||||
| msgid "All" | msgid "All" | ||||||
| msgstr "" | msgstr "Alle" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/notifications.html:38 | #: templates/hosting/notifications.html:38 | ||||||
| msgid "Unread notifications" | msgid "Unread notifications" | ||||||
| msgstr "" | msgstr "Ungelesene Benachrichtigungen" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/notifications.html:48 | #: templates/hosting/notifications.html:48 | ||||||
| msgid "Mark as read" | msgid "Mark as read" | ||||||
| msgstr "" | msgstr "Als gelesen markieren" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/notifications.html:59 | #: templates/hosting/notifications.html:59 | ||||||
| msgid "All notifications" | msgid "All notifications" | ||||||
| msgstr "" | msgstr "Alle Benachrichtigungen" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/order_detail.html:16 | #: templates/hosting/order_detail.html:16 | ||||||
| #: templates/hosting/order_detail.html:24 | #: templates/hosting/order_detail.html:24 | ||||||
|  | @ -274,25 +295,31 @@ msgstr "" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/order_detail.html:38 | #: templates/hosting/order_detail.html:38 | ||||||
| msgid "Payment Method:" | msgid "Payment Method:" | ||||||
| msgstr "" | msgstr "Bezahlmethode" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/order_detail.html:49 | #: templates/hosting/order_detail.html:49 | ||||||
| msgid "Order summary" | msgid "Order summary" | ||||||
| msgstr "" | msgstr "Bestellungsübersicht" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/order_detail.html:52 | #: hosting/templates/hosting/order_detail.html:52 | ||||||
| #: templates/hosting/virtual_machine_detail.html:76 | #: hosting/templates/hosting/payment.html:17 | ||||||
|  | #: hosting/templates/hosting/virtual_machine_detail.html:75 | ||||||
| msgid "Cores" | msgid "Cores" | ||||||
| msgstr "" | msgstr "Prozessorkerne" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/order_detail.html:54 | #: templates/hosting/order_detail.html:54 | ||||||
| #: templates/hosting/virtual_machine_detail.html:82 | #: templates/hosting/virtual_machine_detail.html:82 | ||||||
|  | #: hosting/templates/hosting/order_detail.html:54 | ||||||
|  | #: hosting/templates/hosting/payment.html:20 | ||||||
|  | #: hosting/templates/hosting/virtual_machine_detail.html:81 | ||||||
| msgid "Memory" | msgid "Memory" | ||||||
| msgstr "" | msgstr "Arbeitsspeicher" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/order_detail.html:56 | #: templates/hosting/order_detail.html:56 | ||||||
|  | #: hosting/templates/hosting/order_detail.html:56 | ||||||
|  | #: hosting/templates/hosting/payment.html:23 | ||||||
| msgid "Disk space" | msgid "Disk space" | ||||||
| msgstr "" | msgstr "Festplattenkapazität" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/order_detail.html:58 | #: templates/hosting/order_detail.html:58 | ||||||
| msgid "Total" | msgid "Total" | ||||||
|  | @ -300,15 +327,15 @@ msgstr "" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/order_detail.html:64 | #: templates/hosting/order_detail.html:64 | ||||||
| msgid "Finish Configuration" | msgid "Finish Configuration" | ||||||
| msgstr "" | msgstr "Konfiguration beenden" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/orders.html:17 | #: templates/hosting/orders.html:17 | ||||||
| msgid "Date" | msgid "Date" | ||||||
| msgstr "" | msgstr "Datum" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/orders.html:18 | #: templates/hosting/orders.html:18 | ||||||
| msgid "Amount" | msgid "Amount" | ||||||
| msgstr "" | msgstr "Betrag" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/orders.html:19 | #: hosting/templates/hosting/orders.html:19 | ||||||
| #: hosting/templates/hosting/virtual_machine_detail.html:30 | #: hosting/templates/hosting/virtual_machine_detail.html:30 | ||||||
|  | @ -319,71 +346,104 @@ msgstr "" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/orders.html:30 | #: templates/hosting/orders.html:30 | ||||||
| msgid "Approved" | msgid "Approved" | ||||||
| msgstr "" | msgstr "Akzeptiert" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/orders.html:32 | #: templates/hosting/orders.html:32 | ||||||
| msgid "Declined" | msgid "Declined" | ||||||
| msgstr "" | msgstr "Abgelehnt" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/orders.html:37 templates/hosting/virtual_machines.html:58 | #: templates/hosting/orders.html:37 templates/hosting/virtual_machines.html:58 | ||||||
| msgid "View Detail" | msgid "View Detail" | ||||||
| msgstr "" | msgstr "Details anzeigen" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/orders.html:41 | #: templates/hosting/orders.html:41 | ||||||
| msgid "Cancel Order" | msgid "Cancel Order" | ||||||
| msgstr "" | msgstr "Bestellung stornieren" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/orders.html:56 | #: templates/hosting/orders.html:56 | ||||||
| msgid "Do You want do delete your order?" | msgid "Do You want do delete your order?" | ||||||
| msgstr "" | msgstr "Wollen Sie ihre Bestellung löschen?" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/orders.html:64 | #: templates/hosting/orders.html:64 | ||||||
| msgid "Close" | msgid "Close" | ||||||
| msgstr "" | msgstr "Schliessen" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/orders.html:66 | #: templates/hosting/orders.html:66 | ||||||
| msgid "Delete" | msgid "Delete" | ||||||
| msgstr "" | msgstr "Löschen" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/payment.html:12 | ||||||
|  | msgid "Billing Amount" | ||||||
|  | msgstr "Rechnungsbetrag" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/payment.html:35 | ||||||
|  | msgid "Billing Address" | ||||||
|  | msgstr "Rechnungsadresse" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/payment.html:49 | ||||||
|  | msgid "Payment Details" | ||||||
|  | msgstr "Rechnungsdetails" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/payment.html:61 | ||||||
|  | #: hosting/templates/hosting/payment.html:103 | ||||||
|  | msgid "Submit Payment" | ||||||
|  | msgstr "Betrag überweisen" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/payment.html:70 | ||||||
|  | msgid "CARD NUMBER" | ||||||
|  | msgstr "Kreditkartennummer" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/payment.html:75 | ||||||
|  | msgid "Valid Card Number" | ||||||
|  | msgstr "Gültige Kreditkartennummer" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/payment.html:84 | ||||||
|  | msgid "EXPIRATION DATE" | ||||||
|  | msgstr "Ablaufdatum" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/payment.html:95 | ||||||
|  | msgid "CV CODE" | ||||||
|  | msgstr "CV Code" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/reset_password.html:14 | #: hosting/templates/hosting/reset_password.html:14 | ||||||
| msgid "Reset your password" | msgid "Reset your password" | ||||||
| msgstr "" | msgstr "Passwort zurücksetzen" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machine_detail.html:19 | #: templates/hosting/virtual_machine_detail.html:19 | ||||||
| msgid "Settings" | msgid "Settings" | ||||||
| msgstr "" | msgstr "Einstellungen" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machine_detail.html:25 | #: templates/hosting/virtual_machine_detail.html:25 | ||||||
| msgid "Billing" | msgid "Billing" | ||||||
| msgstr "" | msgstr "Abrechnungen" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machine_detail.html:60 | #: templates/hosting/virtual_machine_detail.html:60 | ||||||
| msgid "Ip not assigned yet" | msgid "Ip not assigned yet" | ||||||
| msgstr "" | msgstr "Ip nicht zugewiesen" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machine_detail.html:89 | #: templates/hosting/virtual_machine_detail.html:89 | ||||||
| msgid "Disk" | msgid "Disk" | ||||||
| msgstr "" | msgstr "Festplatte" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machine_detail.html:98 | #: templates/hosting/virtual_machine_detail.html:98 | ||||||
| msgid "Configuration" | msgid "Configuration" | ||||||
| msgstr "" | msgstr "Konfiguration" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machine_detail.html:108 | #: templates/hosting/virtual_machine_detail.html:108 | ||||||
| msgid "Current pricing" | msgid "Current pricing" | ||||||
| msgstr "" | msgstr "Aktueller Preis" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machine_detail.html:117 | #: templates/hosting/virtual_machine_detail.html:117 | ||||||
| msgid "Current status" | msgid "Current status" | ||||||
| msgstr "" | msgstr "Aktueller Status" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machine_detail.html:142 | #: templates/hosting/virtual_machine_detail.html:142 | ||||||
| msgid "Terminate Virtual Machine" | msgid "Terminate Virtual Machine" | ||||||
| msgstr "" | msgstr "Virtuelle Maschine beenden" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machine_detail.html:163 | #: templates/hosting/virtual_machine_detail.html:163 | ||||||
| msgid "Terminate your Virtual Machine" | msgid "Terminate your Virtual Machine" | ||||||
| msgstr "" | msgstr "Ihre virtuelle Maschine beenden" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machine_detail.html:166 | #: 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 " | ||||||
|  | @ -392,43 +452,57 @@ msgstr "" | ||||||
| #: templates/hosting/virtual_machine_detail.html:166 | #: templates/hosting/virtual_machine_detail.html:166 | ||||||
| msgid "plan?" | msgid "plan?" | ||||||
| msgstr "" | msgstr "" | ||||||
|  | msgstr "Sind Sie sicher, dass Sie ihre virtuelle Maschine beenden wollen "\ | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machine_detail.html:169 | #: templates/hosting/virtual_machine_detail.html:169 | ||||||
| msgid "Cancel" | msgid "Cancel" | ||||||
| msgstr "" | msgstr "Beenden" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machine_key.html:11 | #: templates/hosting/virtual_machine_key.html:11 | ||||||
| msgid "Access Key" | msgid "Access Key" | ||||||
| msgstr "" | msgstr "Zugriffsschlüssel" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/virtual_machine_key.html:25 | #: hosting/templates/hosting/virtual_machine_key.html:25 | ||||||
| msgid "Upload your own key. " | msgid "Upload your own key. " | ||||||
| msgstr "" | msgstr "Laden Sie ihren Schlüssel hoch" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/virtual_machine_key.html:29 | #: hosting/templates/hosting/virtual_machine_key.html:29 | ||||||
|  | msgid "Upload Key" | ||||||
|  | msgstr "Schlüssel hochladen" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/virtual_machine_key.html:33 | ||||||
| msgid "Or generate a new key pair." | msgid "Or generate a new key pair." | ||||||
| msgstr "" | msgstr "Oder erstellen Sie ein neues Schlüsselpaar" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/virtual_machine_key.html:31 | #: hosting/templates/hosting/virtual_machine_key.html:31 | ||||||
| msgid "Generate Key Pair" | msgid "Generate Key Pair" | ||||||
|  | msgstr "Schlüsselpaar generieren" | ||||||
|  | 
 | ||||||
|  | #: hosting/templates/hosting/virtual_machine_key.html:40 | ||||||
|  | msgid "" | ||||||
|  | "Use your created key to access to the machine. If you lost it, contact us." | ||||||
| msgstr "" | msgstr "" | ||||||
|  | "Verwenden Sie Ihren privaten SSH Schlüssel um sich mit Ihren Maschinen zu " | ||||||
|  | "verbinden. Falls Sie ihn verloren haben kontaktieren Sie uns." | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/virtual_machine_key.html:43 | #: hosting/templates/hosting/virtual_machine_key.html:43 | ||||||
| msgid "Created at" | msgid "Created at" | ||||||
| msgstr "" | msgstr "Erstellt am" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/virtual_machine_key.html:66 | #: hosting/templates/hosting/virtual_machine_key.html:66 | ||||||
| #: hosting/templates/hosting/virtual_machine_key.html:79 | #: hosting/templates/hosting/virtual_machine_key.html:79 | ||||||
| msgid "Warning!" | msgid "Warning!" | ||||||
| msgstr "" | msgstr "Achtung!" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/virtual_machine_key.html:66 | #: hosting/templates/hosting/virtual_machine_key.html:66 | ||||||
| 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" | ||||||
| msgstr "" | msgstr "" | ||||||
|  | "Sie können ihren privaten SSH Schlüssel nur einmal herunterladen. Bewaren " | ||||||
|  | "Sie ihn sicher auf." | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/virtual_machine_key.html:74 | #: hosting/templates/hosting/virtual_machine_key.html:74 | ||||||
| msgid "Copy to Clipboard" | msgid "Copy to Clipboard" | ||||||
| msgstr "" | msgstr "Kopieren" | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/virtual_machine_key.html:75 | #: hosting/templates/hosting/virtual_machine_key.html:75 | ||||||
| msgid "Download" | msgid "Download" | ||||||
|  | @ -439,18 +513,20 @@ msgid "" | ||||||
| "Your SSH private key was already generated and downloaded, if you lost it, " | "Your SSH private key was already generated and downloaded, if you lost it, " | ||||||
| "contact us. " | "contact us. " | ||||||
| msgstr "" | msgstr "" | ||||||
|  | "Ihr privater SSH Schlüssel wurde bereits generiert und heruntergeladen, " | ||||||
|  | "falls Sie ihn verloren haben kontaktieren Sie uns." | ||||||
| 
 | 
 | ||||||
| #: hosting/templates/hosting/virtual_machine_key.html:82 | #: hosting/templates/hosting/virtual_machine_key.html:82 | ||||||
| msgid "Generate my key" | msgid "Generate my key" | ||||||
| msgstr "" | msgstr "Generiere meinen Schlüssel" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machines.html:9 | #: templates/hosting/virtual_machines.html:9 | ||||||
| msgid "Virtual Machines" | msgid "Virtual Machines" | ||||||
| msgstr "" | msgstr "Virtuelle Maschinen" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machines.html:22 | #: templates/hosting/virtual_machines.html:22 | ||||||
| msgid "Create VM" | msgid "Create VM" | ||||||
| msgstr "" | msgstr "Neue VM" | ||||||
| 
 | 
 | ||||||
| #: templates/hosting/virtual_machines.html:28 | #: templates/hosting/virtual_machines.html:28 | ||||||
| msgid "ID" | msgid "ID" | ||||||
|  |  | ||||||
|  | @ -1,5 +1,8 @@ | ||||||
| $( document ).ready(function() { | $( document ).ready(function() { | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|     $.ajaxSetup({  |     $.ajaxSetup({  | ||||||
|          beforeSend: function(xhr, settings) { |          beforeSend: function(xhr, settings) { | ||||||
|              function getCookie(name) { |              function getCookie(name) { | ||||||
|  | @ -26,6 +29,12 @@ $( document ).ready(function() { | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     var hasCreditcard = window.hasCreditcard || false; |     var hasCreditcard = window.hasCreditcard || false; | ||||||
|  |     if (!hasCreditcard){ | ||||||
|  |         var stripe = Stripe(window.stripeKey); | ||||||
|  |         var elements = stripe.elements({locale: window.current_lan}); | ||||||
|  |         var card = elements.create('card', options={hidePostalCode: true}); | ||||||
|  |         card.mount('#card-element'); | ||||||
|  |     } | ||||||
|     console.log("has creditcard", hasCreditcard); |     console.log("has creditcard", hasCreditcard); | ||||||
|     // hasCreditcard= true;
 |     // hasCreditcard= true;
 | ||||||
| 
 | 
 | ||||||
|  | @ -38,10 +47,8 @@ $( document ).ready(function() { | ||||||
|       console.log("creditcard sdasd"); |       console.log("creditcard sdasd"); | ||||||
|       // if (hasCreditcard) {
 |       // if (hasCreditcard) {
 | ||||||
|          $('#billing-form').submit(); |          $('#billing-form').submit(); | ||||||
|          console.log("has creditcard2"); |  | ||||||
|       // }
 |       // }
 | ||||||
|       |       | ||||||
|       // $form.submit();
 |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -53,33 +60,55 @@ $( document ).ready(function() { | ||||||
|     function payWithStripe(e) { |     function payWithStripe(e) { | ||||||
|         e.preventDefault(); |         e.preventDefault(); | ||||||
| 
 | 
 | ||||||
|         /* Visual feedback */ |         function stripeTokenHandler(token) { | ||||||
|         $form.find('[type=submit]').html('Validating <i class="fa fa-spinner fa-pulse"></i>'); |           // Insert the token ID into the form so it gets submitted to the server
 | ||||||
|  |           var form = document.getElementById('payment-form'); | ||||||
|  |           var hiddenInput = document.createElement('input'); | ||||||
|  |           $('#id_token').val(token.id); | ||||||
| 
 | 
 | ||||||
|         var PublishableKey = window.stripeKey; |  | ||||||
|         Stripe.setPublishableKey(PublishableKey); |  | ||||||
|         Stripe.card.createToken($form, function stripeResponseHandler(status, response) { |  | ||||||
|             if (response.error) { |  | ||||||
|                 /* Visual feedback */ |  | ||||||
|                 $form.find('[type=submit]').html('Try again'); |  | ||||||
|                 /* Show Stripe errors on the form */ |  | ||||||
|                 $form.find('.payment-errors').text(response.error.message); |  | ||||||
|                 $form.find('.payment-errors').closest('.row').show(); |  | ||||||
|             } else { |  | ||||||
|                 /* Visual feedback */ |  | ||||||
|                 $form.find('[type=submit]').html('Processing <i class="fa fa-spinner fa-pulse"></i>'); |  | ||||||
|                 /* Hide Stripe errors on the form */ |  | ||||||
|                 $form.find('.payment-errors').closest('.row').hide(); |  | ||||||
|                 $form.find('.payment-errors').text(""); |  | ||||||
|                 // response contains id and card, which contains additional card details
 |  | ||||||
|                 var token = response.id; |  | ||||||
|                 // AJAX
 |  | ||||||
| 
 |  | ||||||
|                 //set token  on a hidden input
 |  | ||||||
|                 $('#id_token').val(token); |  | ||||||
|           $('#billing-form').submit(); |           $('#billing-form').submit(); | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         stripe.createToken(card).then(function(result) { | ||||||
|  |             if (result.error) { | ||||||
|  |               // Inform the user if there was an error
 | ||||||
|  |               var errorElement = document.getElementById('card-errors'); | ||||||
|  |               errorElement.textContent = result.error.message; | ||||||
|  |             } else { | ||||||
|  |                 $form.find('[type=submit]').html('Processing <i class="fa fa-spinner fa-pulse"></i>'); | ||||||
|  |                 // Send the token to your server
 | ||||||
|  |                 stripeTokenHandler(result.token); | ||||||
|  |             } | ||||||
|         }); |         }); | ||||||
|  | 
 | ||||||
|  |         // /* Visual feedback */
 | ||||||
|  |         // $form.find('[type=submit]').html('Validating <i class="fa fa-spinner fa-pulse"></i>');
 | ||||||
|  | 
 | ||||||
|  |         // var PublishableKey = window.stripeKey;
 | ||||||
|  |         // Stripe.setPublishableKey(PublishableKey);
 | ||||||
|  |         // Stripe.card.createToken($form, function stripeResponseHandler(status, response) {
 | ||||||
|  |         //     if (response.error) {
 | ||||||
|  |         //         /* Visual feedback */
 | ||||||
|  |         //         $form.find('[type=submit]').html('Try again');
 | ||||||
|  |         //         /* Show Stripe errors on the form */
 | ||||||
|  |         //         $form.find('.payment-errors').text(response.error.message);
 | ||||||
|  |         //         $form.find('.payment-errors').closest('.row').show();
 | ||||||
|  |         //     } else {
 | ||||||
|  |         //         /* Visual feedback */
 | ||||||
|  |         //         $form.find('[type=submit]').html('Processing <i class="fa fa-spinner fa-pulse"></i>');
 | ||||||
|  |         //         /* Hide Stripe errors on the form */
 | ||||||
|  |         //         $form.find('.payment-errors').closest('.row').hide();
 | ||||||
|  |         //         $form.find('.payment-errors').text("");
 | ||||||
|  |         //         // response contains id and card, which contains additional card details
 | ||||||
|  |         //         var token = response.id;
 | ||||||
|  |         //         // AJAX
 | ||||||
|  | 
 | ||||||
|  |         //         //set token  on a hidden input
 | ||||||
|  |         //         $('#id_token').val(token);
 | ||||||
|  |         //         $('#billing-form').submit();
 | ||||||
|  |         //     }
 | ||||||
|  |         // });
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /* Form validation */ |     /* Form validation */ | ||||||
|  | @ -131,7 +160,7 @@ $( document ).ready(function() { | ||||||
|         } else { |         } else { | ||||||
|             return false; |             return false; | ||||||
|         } |         } | ||||||
|     } |     }; | ||||||
| 
 | 
 | ||||||
|     // $form.find('[type=submit]').prop('disabled', true);
 |     // $form.find('[type=submit]').prop('disabled', true);
 | ||||||
|     // var readyInterval = setInterval(function() {
 |     // var readyInterval = setInterval(function() {
 | ||||||
|  |  | ||||||
|  | @ -85,7 +85,7 @@ | ||||||
|                           <ul id="g-account-menu" class="dropdown-menu" role="menu"> |                           <ul id="g-account-menu" class="dropdown-menu" role="menu"> | ||||||
|                             <li><a href="{% url 'hosting:logout' %}"><i class="glyphicon glyphicon-lock"></i>{% trans "Logout"%} </a></li> |                             <li><a href="{% url 'hosting:logout' %}"><i class="glyphicon glyphicon-lock"></i>{% trans "Logout"%} </a></li> | ||||||
| 							<li> | 							<li> | ||||||
|                             <a href="{% url 'hosting:key_pair' %}"> |                             <a href="{% url 'hosting:ssh_keys' %}"> | ||||||
|                                 <i class="fa fa-key"></i> {% trans "Keys"%} |                                 <i class="fa fa-key"></i> {% trans "Keys"%} | ||||||
|                             </a> |                             </a> | ||||||
|                         	</li> |                         	</li> | ||||||
|  | @ -128,7 +128,46 @@ | ||||||
|     {% if request.user.is_authenticated %} |     {% if request.user.is_authenticated %} | ||||||
|     <footer class="navbar-fixed-bottom"> |     <footer class="navbar-fixed-bottom"> | ||||||
|         <div class="container"> |         <div class="container"> | ||||||
|  | <<<<<<< HEAD | ||||||
|             <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" %}. All Rights Reserved</p> | ||||||
|  | ======= | ||||||
|  |             <div class="row"> | ||||||
|  |                 <div class="col-lg-12 hidden-xs"> | ||||||
|  |                     <ul class="list-inline"> | ||||||
|  |                         <li> | ||||||
|  |                             <a href="#">{% trans "Home"%}</a> | ||||||
|  |                         </li> | ||||||
|  |                         <li class="footer-menu-divider">⋅</li> | ||||||
|  |                         <li> | ||||||
|  |                             <a href="{% url 'hosting:virtual_machines' %}"> | ||||||
|  |                                 {% trans "My Virtual Machines"%} | ||||||
|  |                             </a> | ||||||
|  |                         </li> | ||||||
|  |                         <li class="footer-menu-divider">⋅</li> | ||||||
|  |                         <li> | ||||||
|  |                            <a href="{% url 'hosting:orders' %}"> | ||||||
|  |                                 {% trans "My Orders"%} | ||||||
|  |                             </a> | ||||||
|  |                         </li> | ||||||
|  |                         <li>⋅</li> | ||||||
|  |                         <li> | ||||||
|  |                         <li> | ||||||
|  |                             <a href="{% url 'hosting:ssh_keys' %}"> | ||||||
|  |                                 {% trans "Keys"%} | ||||||
|  |                             </a> | ||||||
|  |                         </li> | ||||||
|  |                         <li class="footer-menu-divider">⋅</li> | ||||||
|  |                         <li> | ||||||
|  |                            <a href="{% url 'hosting:notifications' %}"> | ||||||
|  |                                 {% trans "Notifications "%} | ||||||
|  |                             </a> | ||||||
|  |                         </li> | ||||||
|  | 
 | ||||||
|  |                     </ul> | ||||||
|  |                     <p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved</p> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  | >>>>>>> f4997f041ca9496bf9a63706726a20d0a31d1c28 | ||||||
|         </div> |         </div> | ||||||
|     </footer> |     </footer> | ||||||
|     {% endif %} |     {% endif %} | ||||||
|  | @ -149,8 +188,9 @@ | ||||||
|     <!-- Init JavaScript --> |     <!-- Init JavaScript --> | ||||||
|     <script src="{% static 'hosting/js/initial.js' %}"></script> |     <script src="{% static 'hosting/js/initial.js' %}"></script> | ||||||
| 
 | 
 | ||||||
|  |     <script src="https://js.stripe.com/v3/"></script> | ||||||
|  |     <script src="https://js.stripe.com/v2/"></script> | ||||||
|     <!-- Stripe Lib --> |     <!-- Stripe Lib --> | ||||||
|     <script type="text/javascript" src="//js.stripe.com/v2/"></script> |  | ||||||
| 
 | 
 | ||||||
|     <!-- Proccess payment lib --> |     <!-- Proccess payment lib --> | ||||||
|     <script type="text/javascript" src="{% static 'hosting/js/payment.js' %}"></script> |     <script type="text/javascript" src="{% static 'hosting/js/payment.js' %}"></script> | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ | ||||||
|                 <form  method="POST" action=""> |                 <form  method="POST" action=""> | ||||||
|                     {% csrf_token %} |                     {% csrf_token %} | ||||||
|                     <div class="form-group"> |                     <div class="form-group"> | ||||||
|                         Select VM Template: | 							{% trans "Select VM Template:" %} | ||||||
|                         <select name="vm_template_id"> |                         <select name="vm_template_id"> | ||||||
|                             {% for template in templates %} |                             {% for template in templates %} | ||||||
|                                 <option value="{{template.id}}">{{template.name}} </option> |                                 <option value="{{template.id}}">{{template.name}} </option> | ||||||
|  | @ -29,14 +29,14 @@ | ||||||
|                         </select> |                         </select> | ||||||
|                     </div>  |                     </div>  | ||||||
|                     <div class="form-group"> |                     <div class="form-group"> | ||||||
|                         Select VM Configuration: | 							{% trans "Select VM Configuration:" %} | ||||||
|                         <select name="configuration"> |                         <select name="configuration"> | ||||||
|                             {% for config in configuration_options %} |                             {% for config in configuration_options %} | ||||||
|                                 <option value="{{config.id}}"> |                                 <option value="{{config.id}}"> | ||||||
|                                     CORE: {{config.cpu|floatformat}}, |                                     CORE: {{config.cpu|floatformat}}, | ||||||
|                                     RAM: {{config.memory|floatformat}} GiB,  |                                     RAM: {{config.memory|floatformat}} GB,  | ||||||
|                                     SSD: {{config.disk_size|floatformat}} GiB, |                                     SSD: {{config.disk_size|floatformat}} GB, | ||||||
|                                     PRICE: {{config.price|floatformat}} CHF/Month | 									PRICE: {{config.price|floatformat}} {% trans "CHF/Month" %} | ||||||
|                                 </option> |                                 </option> | ||||||
|                             {% endfor %} |                             {% endfor %} | ||||||
|                         </select> |                         </select> | ||||||
|  |  | ||||||
|  | @ -53,7 +53,7 @@ | ||||||
|                                             </button> |                                             </button> | ||||||
|                                         </div> |                                         </div> | ||||||
|                                         <div class="modal-body"> |                                         <div class="modal-body"> | ||||||
|                                             <h4 class="modal-title" id="ModalLabel">{% trans "Do You want do delete your order?"%}</h4> |                                             <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 %}"> | ||||||
|  |  | ||||||
|  | @ -9,18 +9,18 @@ | ||||||
|             	<form role="form" novalidate> |             	<form role="form" novalidate> | ||||||
|             		<div class="row"> |             		<div class="row"> | ||||||
|             			<div class="col-xs-12"> |             			<div class="col-xs-12"> | ||||||
| 							<h3><b>Billing Amount</b></h3> | 								<h3><b>{%trans "Billing Amount" %}</b></h3> | ||||||
| 							<hr> | 							<hr> | ||||||
| 							<div class="content"> | 							<div class="content"> | ||||||
| 								<!-- <p><b>Type</b> <span class="pull-right">{{request.session.vm_specs.location_code}}</span></p> --> | 								<!-- <p><b>Type</b> <span class="pull-right">{{request.session.vm_specs.location_code}}</span></p> --> | ||||||
| 								<!-- <hr> --> | 								<!-- <hr> --> | ||||||
| 								<p><b>Cores</b> <span | 								<p><b>{%trans "Cores"%}</b> <span | ||||||
|                                     class="pull-right">{{request.session.specs.cpu|floatformat}}</span></p> |                                     class="pull-right">{{request.session.specs.cpu|floatformat}}</span></p> | ||||||
| 								<hr> | 								<hr> | ||||||
| 								<p><b>Memory</b> <span | 								<p><b>{%trans "Memory"%}</b> <span | ||||||
|                                     class="pull-right">{{request.session.specs.memory|floatformat}} GiB</span></p> |                                     class="pull-right">{{request.session.specs.memory|floatformat}} GiB</span></p> | ||||||
| 								<hr> | 								<hr> | ||||||
| 								<p><b>Disk space</b> <span | 								<p><b>{%trans "Disk space"%}</b> <span | ||||||
|                                     class="pull-right">{{request.session.specs.disk_size|floatformat}} GiB</span></p> |                                     class="pull-right">{{request.session.specs.disk_size|floatformat}} GiB</span></p> | ||||||
| 								<hr> | 								<hr> | ||||||
| 								<h4>Total<p | 								<h4>Total<p | ||||||
|  | @ -32,7 +32,7 @@ | ||||||
| 				 | 				 | ||||||
| 			</div> | 			</div> | ||||||
| 			<div class="col-xs-12 col-md-4  billing"> | 			<div class="col-xs-12 col-md-4  billing"> | ||||||
| 				<h3><b>Billing Address</b></h3> | 				<h3><b>{%trans "Billing Address"%}</b></h3> | ||||||
| 				<hr> | 				<hr> | ||||||
| 				<form role="form" id="billing-form" method="post" action="" novalidate> | 				<form role="form" id="billing-form" method="post" action="" novalidate> | ||||||
| 	                {% for field in form %} | 	                {% for field in form %} | ||||||
|  | @ -46,7 +46,7 @@ | ||||||
| 	    <div class="row"> | 	    <div class="row"> | ||||||
| 	    	<div class="col-xs-12 col-md-offset-2 col-md-4 "></div> | 	    	<div class="col-xs-12 col-md-offset-2 col-md-4 "></div> | ||||||
| 	        <div class="col-xs-12 col-md-4 creditcard-box"> | 	        <div class="col-xs-12 col-md-4 creditcard-box"> | ||||||
| 				<h3><b>Payment Details</b></h3> | 				<h3><b>{%trans "Payment Details"%}</b></h3> | ||||||
| 				<hr> | 				<hr> | ||||||
| 	            <div> | 	            <div> | ||||||
| 	                <div> | 	                <div> | ||||||
|  | @ -57,17 +57,33 @@ | ||||||
|                         <h5 class="membership-lead">Type: {{credit_card_data.cc_brand}}</h5> |                         <h5 class="membership-lead">Type: {{credit_card_data.cc_brand}}</h5> | ||||||
|                         <input type="hidden" name="credit_card_needed" value="false"/> |                         <input type="hidden" name="credit_card_needed" value="false"/> | ||||||
|                       </form>   |                       </form>   | ||||||
|                      <button id="payment_button_with_creditcard" class="btn btn-success btn-lg btn-block" type="submit">Submit Payment</button> |                       <div class="col-xs-6"> | ||||||
|  |                         <button id="payment_button_with_creditcard" class="btn btn-success btn-sm btn-block" type="submit"> | ||||||
|  | 							 {% trans "Submit Payment" %} | ||||||
|  | 					   </button> | ||||||
|  |                      </div> | ||||||
|                     {% else %} |                     {% else %} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	                    <form role="form" id="payment-form" novalidate> | 	                    <form role="form" id="payment-form" novalidate> | ||||||
|                             <div class="row"> |                             <div class="row"> | ||||||
|  |                             <div class="form-group"> | ||||||
|  |                             <div id="card-element"> | ||||||
|  |                               <!-- a Stripe Element will be inserted here. --> | ||||||
|  |                               </div> | ||||||
|  |                             </div> | ||||||
|  |                              </div> | ||||||
|  |                              <div id="card-errors" role="alert"></div> | ||||||
|  | 
 | ||||||
|  | <!-- 	                        <div class="row"> | ||||||
| 	                            <div class="col-xs-9 col-md-12"> | 	                            <div class="col-xs-9 col-md-12"> | ||||||
| 	                                <div class="form-group"> | 	                                <div class="form-group"> | ||||||
| 	                                    <label class="control-label" for="cardNumber">CARD NUMBER</label> | 	                                    <label class="control-label" for="cardNumber">{%trans "CARD NUMBER"%}</label> | ||||||
| 	                                    <div class="input-group"> | 	                                    <div class="input-group"> | ||||||
| 	                                        <input type="text" class="form-control" name="cardNumber" placeholder="Valid Card Number" required autofocus data-stripe="number" /> | 	                                        <input type="text" | ||||||
|  | 											class="form-control" | ||||||
|  | 											name="cardNumber" | ||||||
|  | 											placeholder="{%trans "Valid Card Number"%}" required autofocus data-stripe="number" /> | ||||||
| 	                                        <span class="input-group-addon"><i class="fa fa-credit-card"></i></span> | 	                                        <span class="input-group-addon"><i class="fa fa-credit-card"></i></span> | ||||||
| 	                                    </div> | 	                                    </div> | ||||||
| 	                                </div>                             | 	                                </div>                             | ||||||
|  | @ -76,7 +92,7 @@ | ||||||
| 	                        <div class="row"> | 	                        <div class="row"> | ||||||
| 	                            <div class="col-xs-6 col-md-7"> | 	                            <div class="col-xs-6 col-md-7"> | ||||||
| 	                                <div class="form-group"> | 	                                <div class="form-group"> | ||||||
| 	                                    <label for="expMonth">EXPIRATION DATE</label><br/> | 	                                    <label for="expMonth">{%trans "EXPIRATION DATE"%}</label><br/> | ||||||
| 	                                    <div class="col-xs-6 col-lg-6 col-md-6 pl-ziro"> | 	                                    <div class="col-xs-6 col-lg-6 col-md-6 pl-ziro"> | ||||||
| 	                                        <input type="text" class="form-control" name="expMonth" placeholder="MM" required data-stripe="exp_month" /> | 	                                        <input type="text" class="form-control" name="expMonth" placeholder="MM" required data-stripe="exp_month" /> | ||||||
| 	                                    </div> | 	                                    </div> | ||||||
|  | @ -87,14 +103,14 @@ | ||||||
| 	                            </div> | 	                            </div> | ||||||
| 	                            <div class="col-xs-4 col-md-5 pull-right"> | 	                            <div class="col-xs-4 col-md-5 pull-right"> | ||||||
| 	                                <div class="form-group"> | 	                                <div class="form-group"> | ||||||
| 	                                    <label for="cvCode">CV CODE</label> | 	                                    <label for="cvCode">{%trans "CV CODE"%}</label> | ||||||
| 	                                    <input type="password" class="form-control" name="cvCode" placeholder="CV" required data-stripe="cvc" /> | 	                                    <input type="password" class="form-control" name="cvCode" placeholder="CV" required data-stripe="cvc" /> | ||||||
| 	                                </div> | 	                                </div> | ||||||
| 	                            </div> | 	                            </div> | ||||||
| 	                        </div> | 	                        </div> --> | ||||||
| 	                        <div class="row"> | 	                        <div class="row"> | ||||||
| 	                            <div class="col-xs-12"> | 	                            <div class="col-xs-6 float-right"> | ||||||
| 	                                <button class="btn btn-success btn-lg btn-block" type="submit">Submit Payment</button> | 	                                <button class="btn btn-success btn-sm btn-block" type="submit">Submit Payment</button> | ||||||
| 	                            </div> | 	                            </div> | ||||||
| 	                        </div> | 	                        </div> | ||||||
| 	                        <div class="row" style="display:none;"> | 	                        <div class="row" style="display:none;"> | ||||||
|  | @ -115,6 +131,7 @@ | ||||||
|                             |                             | ||||||
| 	                    </form> | 	                    </form> | ||||||
|                     {% endif %} |                     {% endif %} | ||||||
|  | 
 | ||||||
| 	                </div> | 	                </div> | ||||||
| 	            </div> | 	            </div> | ||||||
| 	        </div> | 	        </div> | ||||||
|  | @ -125,8 +142,14 @@ | ||||||
| 
 | 
 | ||||||
| <!-- stripe key data --> | <!-- stripe key data --> | ||||||
| {% if stripe_key %} | {% if stripe_key %} | ||||||
|  | {% get_current_language as LANGUAGE_CODE %} | ||||||
| <script type="text/javascript">  | <script type="text/javascript">  | ||||||
|      (function () {window.stripeKey = "{{stripe_key}}";})(); | 
 | ||||||
|  | 
 | ||||||
|  |      (function () { | ||||||
|  |         window.stripeKey = "{{stripe_key}}"; | ||||||
|  |         window.current_lan = "{{LANGUAGE_CODE}}"; | ||||||
|  |     })(); | ||||||
| </script> | </script> | ||||||
| {%endif%} | {%endif%} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -17,7 +17,6 @@ | ||||||
|                         </div> |                         </div> | ||||||
| 						{% endif %} | 						{% endif %} | ||||||
|                         {% for field in form %} |                         {% for field in form %} | ||||||
| 							 |  | ||||||
|                             {% bootstrap_field field %} |                             {% bootstrap_field field %} | ||||||
|                         {% endfor %} |                         {% endfor %} | ||||||
|                         {% buttons %} |                         {% buttons %} | ||||||
|  | @ -32,33 +31,8 @@ | ||||||
|                             </button> |                             </button> | ||||||
| 
 | 
 | ||||||
|                         {% endbuttons %}  |                         {% endbuttons %}  | ||||||
|                             <div class="form-group"> |  | ||||||
|                             </div> |  | ||||||
|                             <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>{{user_key.created_at}}</td>  |  | ||||||
|                                         <td> |  | ||||||
|                                             <span class="h3 label label-success"><strong>Active</strong></span> |  | ||||||
| 
 |  | ||||||
|                                         </td>  |  | ||||||
|                                     </tr> |  | ||||||
| 									{% endfor %} |  | ||||||
|                                 </tbody>  |  | ||||||
|                             </table> |  | ||||||
|                         </form> |                         </form> | ||||||
|  |                         <h5> Use your created key to access to the machine. If you lost it, contact us. </h5> | ||||||
| 
 | 
 | ||||||
| 				        {% if private_key %} | 				        {% if private_key %} | ||||||
| 				 		<div class="alert alert-warning"> | 				 		<div class="alert alert-warning"> | ||||||
|  | @ -69,17 +43,7 @@ | ||||||
| 						  <textarea class="form-control" rows="6" id="ssh_key" type="hidden" style="display:none">{{private_key}}</textarea> | 						  <textarea class="form-control" rows="6" id="ssh_key" type="hidden" style="display:none">{{private_key}}</textarea> | ||||||
| 
 | 
 | ||||||
| 						</div> | 						</div> | ||||||
| <!-- 							<div  class="form-group pull-right"> | 						{% endif %} | ||||||
| 								<button type="button" id="copy_to_clipboard" data-clipboard-target="#ssh_key" class="btn btn-warning" |  | ||||||
| 									data-toggle="tooltip"  data-placement="bottom" title="Copied"  data-trigger="click">{% trans "Copy to Clipboard"%}</button> |  | ||||||
| 								<button type="button" id="download_ssh_key" class="btn btn-warning">{% trans "Download"%}</button>   |  | ||||||
| 							</div> -->				         |  | ||||||
| 						{% else %} |  | ||||||
| <!-- 					 		<div class="alert alert-warning"> |  | ||||||
| 	  							<strong>{% trans "Warning!"%}</strong>{% trans "Your SSH private key was already generated and downloaded, if you lost it, contact us. "%}  |  | ||||||
| 							</div> |  | ||||||
|  -->						{% endif %} |  | ||||||
| 						<!-- <a class="btn btn-success" href="{% url 'hosting:virtual_machines' %}">{% trans "Generate my key"%} </a> --> |  | ||||||
| 						<div class="clearfix"></div> | 						<div class="clearfix"></div> | ||||||
| 				</div> | 				</div> | ||||||
| 			</div> | 			</div> | ||||||
							
								
								
									
										96
									
								
								hosting/templates/hosting/user_keys.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								hosting/templates/hosting/user_keys.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,96 @@ | ||||||
|  | {% extends "hosting/base_short.html" %} | ||||||
|  | {% load staticfiles bootstrap3 i18n %} | ||||||
|  | {% block content %}  | ||||||
|  | <div> | ||||||
|  | 	<div class="container virtual-machine-container dashboard-container "> | ||||||
|  | 		<div class="row"> | ||||||
|  | 			<div class="col-md-9 col-md-offset-2"> | ||||||
|  | 				 <div  class="col-sm-12"> | ||||||
|  |                     <h3><i class="fa fa-key" aria-hidden="true"></i>{% trans "Access Key"%} </h3> | ||||||
|  |                     {% if messages %} | ||||||
|  |                     <div class="alert alert-warning"> | ||||||
|  |                         {% 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>{{user_key.created_at}}</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> | ||||||
|  |                                  </td> | ||||||
|  |                             </tr> | ||||||
|  |                             {% endfor %} | ||||||
|  |                                 </tbody>  | ||||||
|  |                             </table> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 						<div class="clearfix"></div> | ||||||
|  | 				</div> | ||||||
|  | 			</div> | ||||||
|  | 
 | ||||||
|  | 	    </div> | ||||||
|  | 	</div> | ||||||
|  |      | ||||||
|  | </div> | ||||||
|  | 
 | ||||||
|  | {% if next_url %} | ||||||
|  |     <script type="text/javascript">  | ||||||
|  |         window.location.href = '{{next_url}}'; | ||||||
|  |     </script> | ||||||
|  | {% endif %} | ||||||
|  | 
 | ||||||
|  | {%endblock%} | ||||||
|  | 
 | ||||||
|  | @ -163,7 +163,7 @@ | ||||||
| 									                {% trans "Terminate your Virtual Machine"%} | 									                {% trans "Terminate your Virtual Machine"%} | ||||||
| 									            </div> | 									            </div> | ||||||
| 									            <div class="modal-body"> | 									            <div class="modal-body"> | ||||||
| 									                {% trans "Are you sure do you want to cancel your Virtual Machine "%} {{virtual_machine.name}}  {% trans "plan?"%} | 									                {% trans "Are you sure do you want to cancel your Virtual Machine "%} {{virtual_machine.name}} ? | ||||||
| 									            </div> | 									            </div> | ||||||
| 									            <div class="modal-footer"> | 									            <div class="modal-footer"> | ||||||
| 									                <button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Cancel"%}</button> | 									                <button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Cancel"%}</button> | ||||||
|  |  | ||||||
|  | @ -2,4 +2,6 @@ from django.test import TestCase | ||||||
| 
 | 
 | ||||||
| # Create your tests here. | # Create your tests here. | ||||||
| 
 | 
 | ||||||
| test_user_can_add_key() | test_user_can_add_ssh_key() | ||||||
|  | 
 | ||||||
|  | test_user_can_delete_ssh_ke() | ||||||
|  |  | ||||||
|  | @ -3,9 +3,10 @@ from django.conf.urls import url | ||||||
| from .views import DjangoHostingView, RailsHostingView, PaymentVMView,\ | from .views import DjangoHostingView, RailsHostingView, PaymentVMView,\ | ||||||
|     NodeJSHostingView, LoginView, SignupView, IndexView, \ |     NodeJSHostingView, LoginView, SignupView, IndexView, \ | ||||||
|     OrdersHostingListView, OrdersHostingDetailView, VirtualMachinesPlanListView,\ |     OrdersHostingListView, OrdersHostingDetailView, VirtualMachinesPlanListView,\ | ||||||
|     VirtualMachineView, GenerateVMSSHKeysView, OrdersHostingDeleteView, NotificationsView, \ |     VirtualMachineView, OrdersHostingDeleteView, NotificationsView, \ | ||||||
|     MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, HostingPricingView,\ |     MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, HostingPricingView,\ | ||||||
|     CreateVirtualMachinesView, HostingBillListView, HostingBillDetailView |     CreateVirtualMachinesView, HostingBillListView, HostingBillDetailView, \ | ||||||
|  |     SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView | ||||||
| 
 | 
 | ||||||
| urlpatterns = [ | urlpatterns = [ | ||||||
|     url(r'index/?$', IndexView.as_view(), name='index'), |     url(r'index/?$', IndexView.as_view(), name='index'), | ||||||
|  | @ -23,10 +24,12 @@ urlpatterns = [ | ||||||
|     url(r'my-virtual-machines/?$', VirtualMachinesPlanListView.as_view(), name='virtual_machines'), |     url(r'my-virtual-machines/?$', VirtualMachinesPlanListView.as_view(), name='virtual_machines'), | ||||||
|     url(r'my-virtual-machines/(?P<pk>\d+)/?$', VirtualMachineView.as_view(), |     url(r'my-virtual-machines/(?P<pk>\d+)/?$', VirtualMachineView.as_view(), | ||||||
|         name='virtual_machines'), |         name='virtual_machines'), | ||||||
|     # url(r'my-virtual-machines/(?P<pk>\d+)/delete/?$', VirtualMachineCancelView.as_view(), |     url(r'ssh_keys/?$', SSHKeyListView.as_view(), | ||||||
|         # name='virtual_machines_cancel'), |         name='ssh_keys'), | ||||||
|     url(r'vm-key-pair/?$', GenerateVMSSHKeysView.as_view(), |     url(r'delete_ssh_key/(?P<pk>\d+)/?$', SSHKeyDeleteView.as_view(), | ||||||
|         name='key_pair'), |         name='delete_ssh_key'), | ||||||
|  |     url(r'create_ssh_key/?$', SSHKeyCreateView.as_view(), | ||||||
|  |         name='create_ssh_key'), | ||||||
|     url(r'^notifications/$', NotificationsView.as_view(), name='notifications'), |     url(r'^notifications/$', NotificationsView.as_view(), name='notifications'), | ||||||
|     url(r'^notifications/(?P<pk>\d+)/?$', MarkAsReadNotificationView.as_view(), |     url(r'^notifications/(?P<pk>\d+)/?$', MarkAsReadNotificationView.as_view(), | ||||||
|         name='read_notification'), |         name='read_notification'), | ||||||
|  |  | ||||||
|  | @ -188,7 +188,7 @@ class SignupView(CreateView): | ||||||
|     template_name = 'hosting/signup.html' |     template_name = 'hosting/signup.html' | ||||||
|     form_class = HostingUserSignupForm |     form_class = HostingUserSignupForm | ||||||
|     model = CustomUser |     model = CustomUser | ||||||
|     success_url = reverse_lazy('hosting:key_pair') |     success_url = reverse_lazy('hosting:ssh_keys') | ||||||
| 
 | 
 | ||||||
|     def get_success_url(self): |     def get_success_url(self): | ||||||
|         next_url = self.request.session.get( |         next_url = self.request.session.get( | ||||||
|  | @ -288,31 +288,58 @@ class MarkAsReadNotificationView(LoginRequiredMixin, UpdateView): | ||||||
|         return HttpResponseRedirect(reverse('hosting:notifications')) |         return HttpResponseRedirect(reverse('hosting:notifications')) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class GenerateVMSSHKeysView(LoginRequiredMixin, FormView): | class SSHKeyDeleteView(LoginRequiredMixin, DeleteView): | ||||||
|  |     login_url = reverse_lazy('hosting:login') | ||||||
|  |     success_url = reverse_lazy('hosting:ssh_keys') | ||||||
|  |     model = UserHostingKey | ||||||
|  | 
 | ||||||
|  |     def delete(self, request, *args, **kwargs): | ||||||
|  |         owner = self.request.user | ||||||
|  |         manager = OpenNebulaManager() | ||||||
|  |         pk = self.kwargs.get('pk') | ||||||
|  |         # Get user ssh key | ||||||
|  |         public_key = UserHostingKey.objects.get(pk=pk) | ||||||
|  |         # Add ssh key to user | ||||||
|  |         try: | ||||||
|  |             manager.remove_public_key(user=owner, public_key=public_key) | ||||||
|  |         except ConnectionError: | ||||||
|  |             pass | ||||||
|  |         except WrongNameError: | ||||||
|  |             pass | ||||||
|  | 
 | ||||||
|  |         return super(SSHKeyDeleteView, self).delete(request, *args, **kwargs) | ||||||
|  | 
 | ||||||
|  | class SSHKeyListView(LoginRequiredMixin, ListView): | ||||||
|  |     template_name = "hosting/user_keys.html" | ||||||
|  |     login_url = reverse_lazy('hosting:login') | ||||||
|  |     context_object_name = "keys" | ||||||
|  |     model = UserHostingKey | ||||||
|  |     paginate_by = 10 | ||||||
|  |     ordering = '-id' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     def get_queryset(self): | ||||||
|  |         user = self.request.user | ||||||
|  |         self.queryset = UserHostingKey.objects.filter(user=user) | ||||||
|  |         return super(SSHKeyListView, self).get_queryset() | ||||||
|  | 
 | ||||||
|  |     def render_to_response(self, context, **response_kwargs): | ||||||
|  |         if not self.queryset: | ||||||
|  |             return HttpResponseRedirect(reverse('hosting:create_ssh_key')) | ||||||
|  |         return super(SSHKeyListView, self).render_to_response(context, **response_kwargs) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class SSHKeyCreateView(LoginRequiredMixin, FormView): | ||||||
|     form_class = UserHostingKeyForm |     form_class = UserHostingKeyForm | ||||||
|     model = UserHostingKey |     model = UserHostingKey | ||||||
|     template_name = 'hosting/virtual_machine_key.html' |     template_name = 'hosting/user_key.html' | ||||||
|     login_url = reverse_lazy('hosting:login') |     login_url = reverse_lazy('hosting:login') | ||||||
|     context_object_name = "virtual_machine" |     context_object_name = "virtual_machine" | ||||||
|  |     success_url = reverse_lazy('hosting:ssh_keys') | ||||||
| 
 | 
 | ||||||
|     def get_context_data(self, **kwargs): |  | ||||||
|         context = super( |  | ||||||
|             GenerateVMSSHKeysView, |  | ||||||
|             self |  | ||||||
|         ).get_context_data(**kwargs) |  | ||||||
| 
 |  | ||||||
|         user_keys = UserHostingKey.objects.filter( |  | ||||||
|             user=self.request.user |  | ||||||
|         ) |  | ||||||
| 
 |  | ||||||
|         context.update({ |  | ||||||
|             'keys': user_keys |  | ||||||
|         }) |  | ||||||
| 
 |  | ||||||
|         return context |  | ||||||
| 
 | 
 | ||||||
|     def get_form_kwargs(self): |     def get_form_kwargs(self): | ||||||
|         kwargs = super(GenerateVMSSHKeysView, self).get_form_kwargs() |         kwargs = super(SSHKeyCreateView, self).get_form_kwargs() | ||||||
|         kwargs.update({'request': self.request}) |         kwargs.update({'request': self.request}) | ||||||
|         return kwargs |         return kwargs | ||||||
| 
 | 
 | ||||||
|  | @ -339,22 +366,22 @@ class GenerateVMSSHKeysView(LoginRequiredMixin, FormView): | ||||||
|             }) |             }) | ||||||
| 
 | 
 | ||||||
|         owner = self.request.user |         owner = self.request.user | ||||||
|         # Create OpenNebulaManager |         manager = OpenNebulaManager() | ||||||
|         manager = OpenNebulaManager(email=owner.email, |  | ||||||
|                                     password=owner.password) |  | ||||||
|         # Get OpenNebula user id |  | ||||||
|         user_pool = manager._get_user_pool() |  | ||||||
|         opennebula_user = user_pool.get_by_name(owner.email) |  | ||||||
| 
 | 
 | ||||||
|         # Get user ssh key |         # Get user ssh key | ||||||
|         public_key = form.cleaned_data.get('public_key') |         public_key = form.cleaned_data.get('public_key') | ||||||
|         # Add ssh key to user |         # Add ssh key to user | ||||||
|         manager.oneadmin_client.call('user.update', opennebula_user.id, |         try: | ||||||
|                                      '<CONTEXT><SSH_PUBLIC_KEY>{key}</SSH_PUBLIC_KEY></CONTEXT>'.format(key=public_key)) |             manager.add_public_key(user=owner, public_key=public_key, merge=True) | ||||||
|  |         except ConnectionError: | ||||||
|  |             pass | ||||||
|  |         except WrongNameError: | ||||||
|  |             pass | ||||||
| 
 | 
 | ||||||
|         return render(self.request, self.template_name, context) |         return HttpResponseRedirect(self.success_url) | ||||||
| 
 | 
 | ||||||
|     def post(self, request, *args, **kwargs): |     def post(self, request, *args, **kwargs): | ||||||
|  |         print(self.request.POST.dict()) | ||||||
|         form = self.get_form() |         form = self.get_form() | ||||||
|         if form.is_valid(): |         if form.is_valid(): | ||||||
|             return self.form_valid(form) |             return self.form_valid(form) | ||||||
|  | @ -412,7 +439,7 @@ class PaymentVMView(LoginRequiredMixin, FormView): | ||||||
|                 request, |                 request, | ||||||
|                 'In order to create a VM, you create/upload your SSH KEY first.' |                 'In order to create a VM, you create/upload your SSH KEY first.' | ||||||
|             ) |             ) | ||||||
|             return HttpResponseRedirect(reverse('hosting:key_pair')) |             return HttpResponseRedirect(reverse('hosting:ssh_keys')) | ||||||
| 
 | 
 | ||||||
|         if 'next' in request.session: |         if 'next' in request.session: | ||||||
|             del request.session['next'] |             del request.session['next'] | ||||||
|  | @ -628,7 +655,7 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View): | ||||||
|                 request, |                 request, | ||||||
|                 'In order to create a VM, you need to create/upload your SSH KEY first.' |                 'In order to create a VM, you need to create/upload your SSH KEY first.' | ||||||
|             ) |             ) | ||||||
|             return HttpResponseRedirect(reverse('hosting:key_pair')) |             return HttpResponseRedirect(reverse('hosting:ssh_keys')) | ||||||
| 
 | 
 | ||||||
|         try: |         try: | ||||||
|             manager = OpenNebulaManager() |             manager = OpenNebulaManager() | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ | ||||||
|         </h2> |         </h2> | ||||||
|       </a> |       </a> | ||||||
|       <p class="post-meta" style="font-size:0.9em;"> |       <p class="post-meta" style="font-size:0.9em;"> | ||||||
|         Posted on {{ post.date_published|date:"DATE_FORMAT" }} | 	  	{% trans "Posted on" %}{{ post.date_published|date:"DATE_FORMAT" }} | ||||||
|       </p> |       </p> | ||||||
| 
 | 
 | ||||||
|       <p class="post-subtitle"> |       <p class="post-subtitle"> | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							|  | @ -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-05-26 13:35+0000\n" | "POT-Creation-Date: 2017-05-30 13:47+0000\n" | ||||||
| "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||||||
| "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||||||
| "Language-Team: LANGUAGE <LL@li.org>\n" | "Language-Team: LANGUAGE <LL@li.org>\n" | ||||||
|  |  | ||||||
|  | @ -17,7 +17,7 @@ class SignupFormMixin(forms.ModelForm): | ||||||
|         model = CustomUser |         model = CustomUser | ||||||
|         fields = ['name', 'email', 'password'] |         fields = ['name', 'email', 'password'] | ||||||
|         widgets = { |         widgets = { | ||||||
|             'name': forms.TextInput(attrs={'placeholder': 'Enter your name or company name'}), |             'name': forms.TextInput(attrs={'placeholder': _('Enter your name or company name')}), | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|     def clean_confirm_password(self): |     def clean_confirm_password(self): | ||||||
|  |  | ||||||
|  | @ -10,6 +10,7 @@ def handleStripeError(f): | ||||||
|             'response_object': None, |             'response_object': None, | ||||||
|             'error': None |             'error': None | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|         common_message = "Currently its not possible to make payments." |         common_message = "Currently its not possible to make payments." | ||||||
|         try: |         try: | ||||||
|             response_object = f(*args, **kwargs) |             response_object = f(*args, **kwargs) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue