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…
Reference in a new issue