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/
|
||||
|
||||
.env
|
||||
*.mo
|
||||
|
|
|
@ -8,7 +8,13 @@
|
|||
1.0.3: 2017-06-02
|
||||
* [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] Remove template views
|
||||
* [datacenterlight] Allow user to have multiple ssh keys
|
||||
* [datacenterlight] Changed stripe.js v2 to v3
|
||||
* [datacenterlight] Added support for stripe payment errors on current user language
|
||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
{% render_model post "abstract" "" "" 'truncatewords_html:10' %}
|
||||
</h2>
|
||||
<span class="meta">
|
||||
Posted on {{ post.date_published|date:"DATE_FORMAT" }}
|
||||
{% trans "Posted on"%} {{ post.date_published|date:"DATE_FORMAT" }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -75,6 +75,7 @@ msgstr ""
|
|||
msgid "Thank you!"
|
||||
msgstr "Vielen Dank!"
|
||||
|
||||
<<<<<<< HEAD
|
||||
#: templates/datacenterlight/index.html:62
|
||||
#: templates/datacenterlight/index.html:160
|
||||
#: templates/datacenterlight/index.html:368
|
||||
|
@ -158,7 +159,6 @@ msgid ""
|
|||
"tight factory walls."
|
||||
msgstr "Verzichtet auf aktive Kühlung, indem es sich die Isolation unserer ehemaligen Fabrikhalle zu Nutze macht."
|
||||
|
||||
#: templates/datacenterlight/index.html:214
|
||||
msgid ""
|
||||
"We don't use special hardware. We use commodity hardware: we buy computers "
|
||||
"that you buy. Just many more and put them in a cozy home for computers "
|
||||
|
@ -169,6 +169,7 @@ msgstr ""
|
|||
"komponenten hinzugekauft und skalieren so das Datencenter."
|
||||
|
||||
#: templates/datacenterlight/index.html:240
|
||||
#: datacenterlight/templates/datacenterlight/index.html:218
|
||||
msgid ""
|
||||
"Our VMs are located in Switzerland, with reliable power supply and fast "
|
||||
"internet connection. Our VM costs less thanks to our featherlight "
|
||||
|
@ -178,84 +179,84 @@ msgstr ""
|
|||
"Energieversorgung sowie schneller Internetverbindung ausgestattet. Unser "
|
||||
"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!"
|
||||
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"
|
||||
msgstr "Bezahlbares VM Hosting in der Schweiz"
|
||||
|
||||
#: templates/datacenterlight/index.html:260
|
||||
#: datacenterlight/templates/datacenterlight/index.html:238
|
||||
msgid "More Info"
|
||||
msgstr "Weitere Informationen"
|
||||
|
||||
#: templates/datacenterlight/index.html:267
|
||||
#: templates/datacenterlight/pricing.html:119
|
||||
#: datacenterlight/templates/datacenterlight/index.html:245
|
||||
#: datacenterlight/templates/datacenterlight/pricing.html:119
|
||||
msgid "VM hosting"
|
||||
msgstr "VM Hosting"
|
||||
|
||||
#: templates/datacenterlight/index.html:274
|
||||
#: datacenterlight/templates/datacenterlight/index.html:252
|
||||
msgid "Based in Switzerland"
|
||||
msgstr "Standort des Datacenters ist in der Schweiz"
|
||||
|
||||
#: templates/datacenterlight/index.html:283
|
||||
#, fuzzy
|
||||
#| msgid "10 GB Storage (SSD)"
|
||||
#: datacenterlight/templates/datacenterlight/index.html:261
|
||||
msgid "10 GB Storage (SSD)"
|
||||
msgstr "10 GB Storage (SSD)"
|
||||
|
||||
#: templates/datacenterlight/index.html:286
|
||||
#: templates/datacenterlight/pricing.html:161
|
||||
#: datacenterlight/templates/datacenterlight/index.html:264
|
||||
#: datacenterlight/templates/datacenterlight/pricing.html:161
|
||||
msgid "Order Now!"
|
||||
msgstr "Bestelle jetzt!"
|
||||
|
||||
#: templates/datacenterlight/index.html:302
|
||||
#: datacenterlight/templates/datacenterlight/index.html:280
|
||||
msgid "Want to know more? Subscribe to our newsletter!"
|
||||
msgstr "Willst du mehr wissen? Abonniere unseren Newsletter!"
|
||||
|
||||
#: templates/datacenterlight/index.html:329
|
||||
#: datacenterlight/templates/datacenterlight/index.html:307
|
||||
msgid "Switzerland "
|
||||
msgstr "Schweiz"
|
||||
|
||||
#: templates/datacenterlight/index.html:346
|
||||
#: datacenterlight/templates/datacenterlight/index.html:324
|
||||
msgid "Questions?"
|
||||
msgstr "Fragen?"
|
||||
|
||||
#: templates/datacenterlight/index.html:346
|
||||
#: datacenterlight/templates/datacenterlight/index.html:324
|
||||
msgid "Contact us!"
|
||||
msgstr "Kontaktiere uns!"
|
||||
|
||||
#: templates/datacenterlight/index.html:364
|
||||
#: templates/datacenterlight/pricing.html:186
|
||||
#: datacenterlight/templates/datacenterlight/index.html:342
|
||||
#: datacenterlight/templates/datacenterlight/pricing.html:186
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#: templates/datacenterlight/index.html:377
|
||||
#: templates/datacenterlight/pricing.html:199
|
||||
#: datacenterlight/templates/datacenterlight/index.html:355
|
||||
#: datacenterlight/templates/datacenterlight/pricing.html:199
|
||||
msgid "Pricing"
|
||||
msgstr "Preise"
|
||||
|
||||
#: templates/datacenterlight/pricing.html:71
|
||||
#: datacenterlight/templates/datacenterlight/pricing.html:71
|
||||
msgid "Buy VM"
|
||||
msgstr "VM Kaufen"
|
||||
|
||||
#: templates/datacenterlight/pricing.html:127
|
||||
#: datacenterlight/templates/datacenterlight/pricing.html:127
|
||||
msgid "Hosted in Switzerland"
|
||||
msgstr "Standort des Datacenters ist in der Schweiz"
|
||||
|
||||
#: templates/datacenterlight/pricing.html:144
|
||||
#: datacenterlight/templates/datacenterlight/pricing.html:144
|
||||
msgid "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."
|
||||
msgstr ""
|
||||
"Einfach und bezahlbar: Testen Sie unsere virtuelen Machinen mit "
|
||||
"federleichten Preisen"
|
||||
|
||||
#: templates/datacenterlight/pricing.html:171
|
||||
#: datacenterlight/templates/datacenterlight/pricing.html:171
|
||||
msgid ""
|
||||
"Our VMs are hosted in Glarus, Switzerland, and our website is currently "
|
||||
"running in BETA mode. If you want more information that you did not find on "
|
||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -18,15 +18,21 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\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
|
||||
#: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:11
|
||||
msgid "Articles by"
|
||||
msgstr ""
|
||||
msgstr "Artikel vom"
|
||||
|
||||
#: cms_templates/djangocms_blog/post_list.html:12
|
||||
#: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:12
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
msgstr "Archiv"
|
||||
|
||||
#: cms_templates/djangocms_blog/post_list.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
|
||||
#: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:14
|
||||
msgid "Category"
|
||||
msgstr ""
|
||||
msgstr "Kategorie"
|
||||
|
||||
#: cms_templates/djangocms_blog/post_list.html:21
|
||||
#: digitalglarus/templates/glarus_blog/post_list.html:15
|
||||
#: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:22
|
||||
msgid "No article found."
|
||||
msgstr ""
|
||||
msgstr "Keine Artikel gefunden"
|
||||
|
||||
#: cms_templates/djangocms_blog/post_list.html:24
|
||||
#: digitalglarus/templates/glarus_blog/post_list.html:18
|
||||
#: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:25
|
||||
msgid "Back"
|
||||
msgstr ""
|
||||
msgstr "Zurück"
|
||||
|
||||
#: cms_templates/djangocms_blog/post_list.html:32
|
||||
#: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:33
|
||||
msgid "Newer Posts"
|
||||
msgstr ""
|
||||
msgstr "Neuere Einträge"
|
||||
|
||||
#: cms_templates/djangocms_blog/post_list.html:39
|
||||
#: ungleich/templates/ungleich/djangocms_blog/post_list_ungleich.html:40
|
||||
msgid "Older Posts"
|
||||
msgstr ""
|
||||
msgstr "Ältere Einträge"
|
||||
|
||||
#: cms_templates/includes/blog_item.html:31
|
||||
#: digitalglarus/templates/glarus_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr ""
|
||||
msgstr "weiterlesen"
|
||||
|
||||
#: cms_templates/includes/blog_meta.html:6
|
||||
#: digitalglarus/templates/glarus_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr ""
|
||||
msgstr "von"
|
||||
|
||||
#: digitalglarus/cms_plugins.py:9
|
||||
msgid "Digital Glarus Gallery"
|
||||
|
@ -81,53 +87,53 @@ msgstr ""
|
|||
#: digitalglarus/forms.py:35 digitalglarus/forms.py:70 nosystemd/forms.py:47
|
||||
#: utils/forms.py:109
|
||||
msgid "Street Address"
|
||||
msgstr ""
|
||||
msgstr "Adresse"
|
||||
|
||||
#: digitalglarus/forms.py:36 digitalglarus/forms.py:71 nosystemd/forms.py:48
|
||||
#: utils/forms.py:110 utils/forms.py:124
|
||||
msgid "City"
|
||||
msgstr ""
|
||||
msgstr "Stadt"
|
||||
|
||||
#: digitalglarus/forms.py:37 digitalglarus/forms.py:72 nosystemd/forms.py:49
|
||||
#: utils/forms.py:111 utils/forms.py:125
|
||||
msgid "Postal Code"
|
||||
msgstr ""
|
||||
msgstr "Postleitzahl"
|
||||
|
||||
#: digitalglarus/forms.py:38 digitalglarus/forms.py:73 nosystemd/forms.py:50
|
||||
#: utils/forms.py:112 utils/forms.py:126
|
||||
msgid "Country"
|
||||
msgstr ""
|
||||
msgstr "Land"
|
||||
|
||||
#: digitalglarus/templates/digitalglarus/login.html:88
|
||||
#: digitalglarus/templates/digitalglarus/login_hello.html:32
|
||||
#: nosystemd/templates/nosystemd/login.html:23
|
||||
msgid "You haven been logged out"
|
||||
msgstr ""
|
||||
msgstr "Sie wurden abgemeldet"
|
||||
|
||||
#: digitalglarus/templates/glarus_blog/post_list.html:23
|
||||
#: nosystemd/templates/nosystemd/donations.html:74
|
||||
msgid "previous"
|
||||
msgstr ""
|
||||
msgstr "vorherige"
|
||||
|
||||
#: digitalglarus/templates/glarus_blog/post_list.html:26
|
||||
#: dynamicweb/settings/base.py:182 templates/cms/__init__.py:10
|
||||
#: templates/cms/ungleichch/__init__.py:5
|
||||
msgid "Page"
|
||||
msgstr ""
|
||||
msgstr "Seite"
|
||||
|
||||
#: digitalglarus/templates/glarus_blog/post_list.html:26
|
||||
msgid "of"
|
||||
msgstr ""
|
||||
msgstr "vom"
|
||||
|
||||
#: digitalglarus/templates/glarus_blog/post_list.html:29
|
||||
#: nosystemd/templates/nosystemd/donations.html:80
|
||||
msgid "next"
|
||||
msgstr ""
|
||||
msgstr "nächste"
|
||||
|
||||
#: digitalglarus/templates/language_chooser.html:8
|
||||
#: ungleich/templates/cms/ungleichch/_header_base.html:23
|
||||
msgid "Change to language:"
|
||||
msgstr ""
|
||||
msgstr "Sprache wechseln zu: "
|
||||
|
||||
#: digitalglarus/templates/new_base_glarus.html:168
|
||||
#: digitalglarus/templates/new_base_glarus.html:191
|
||||
|
@ -314,13 +320,12 @@ msgstr "Name"
|
|||
|
||||
#: membership/forms.py:43
|
||||
#, fuzzy
|
||||
#| msgid "Phone number"
|
||||
msgid "Card number"
|
||||
msgstr "Telefon"
|
||||
msgstr "Kartennummer"
|
||||
|
||||
#: membership/forms.py:43
|
||||
msgid "Expiry date"
|
||||
msgstr ""
|
||||
msgstr "Ablaufdatum"
|
||||
|
||||
#: membership/forms.py:44
|
||||
msgid "CCV"
|
||||
|
@ -339,14 +344,12 @@ msgid "Use this pattern(MM/YYYY)."
|
|||
msgstr ""
|
||||
|
||||
#: membership/models.py:182
|
||||
#, fuzzy
|
||||
#| msgid "Phone number"
|
||||
msgid "Wrong CCV number."
|
||||
msgstr "Telefon"
|
||||
msgstr "Falsche CCV Nummer"
|
||||
|
||||
#: nosystemd/forms.py:46
|
||||
msgid "Amount"
|
||||
msgstr ""
|
||||
msgstr "Betrag"
|
||||
|
||||
#: nosystemd/templates/nosystemd/base.html:70
|
||||
msgid "My Donations"
|
||||
|
@ -1464,6 +1467,10 @@ msgstr ""
|
|||
msgid "Unknown or unspecified country"
|
||||
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
|
||||
msgid "Street Building"
|
||||
msgstr ""
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
</h2>
|
||||
</a>
|
||||
<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 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:139
|
||||
msgid "My Virtual Machines"
|
||||
msgstr ""
|
||||
msgstr "Meine virtuellen Maschinen"
|
||||
|
||||
#: hosting/templates/hosting/base_short.html:73
|
||||
#: hosting/templates/hosting/base_short.html:145
|
||||
#: hosting/templates/hosting/orders.html:12
|
||||
msgid "My Orders"
|
||||
msgstr ""
|
||||
msgstr "Meine Bestellungen"
|
||||
|
||||
#: hosting/templates/hosting/base_short.html:78
|
||||
#: hosting/templates/hosting/base_short.html:152
|
||||
msgid "Keys"
|
||||
msgstr ""
|
||||
msgstr "Schlüssel"
|
||||
|
||||
#: hosting/templates/hosting/base_short.html:83
|
||||
#: hosting/templates/hosting/base_short.html:158
|
||||
msgid "Notifications "
|
||||
msgstr ""
|
||||
msgstr "Benachrichtigungen"
|
||||
|
||||
#: hosting/templates/hosting/base_short.html:90
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
msgstr "Abmeleden"
|
||||
|
||||
#: hosting/templates/hosting/base_short.html:95
|
||||
msgid "How it works"
|
||||
msgstr ""
|
||||
msgstr "Wie es funktioniert"
|
||||
|
||||
#: hosting/templates/hosting/base_short.html:98
|
||||
msgid "Your infrastructure"
|
||||
msgstr ""
|
||||
msgstr "Ihre Infrastruktur"
|
||||
|
||||
#: hosting/templates/hosting/base_short.html:101
|
||||
msgid "Our inftrastructure"
|
||||
msgstr ""
|
||||
msgstr "Unsere Infrastruktur"
|
||||
|
||||
#: hosting/templates/hosting/base_short.html:104
|
||||
msgid "Pricing"
|
||||
msgstr ""
|
||||
msgstr "Preise"
|
||||
|
||||
#: hosting/templates/hosting/base_short.html:107
|
||||
msgid "Contact"
|
||||
msgstr ""
|
||||
msgstr "Kontakt"
|
||||
|
||||
#: hosting/templates/hosting/base_short.html:110
|
||||
#: hosting/templates/hosting/login.html:32
|
||||
|
@ -73,19 +73,19 @@ msgstr ""
|
|||
#: hosting/templates/hosting/reset_password.html:31
|
||||
#: hosting/templates/hosting/signup.html:30
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Anmelden"
|
||||
|
||||
#: hosting/templates/hosting/base_short.html:134
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
msgstr "Home"
|
||||
|
||||
#: templates/hosting/bill_detail.html:11 templates/hosting/order_detail.html:10
|
||||
msgid "Invoice"
|
||||
msgstr ""
|
||||
msgstr "Rechnung"
|
||||
|
||||
#: templates/hosting/bill_detail.html:11 templates/hosting/order_detail.html:10
|
||||
msgid "Order #"
|
||||
msgstr ""
|
||||
msgstr "Rechnung #"
|
||||
|
||||
#: templates/hosting/bill_detail.html:25
|
||||
msgid "ungleich GmbH"
|
||||
|
@ -114,7 +114,7 @@ msgstr ""
|
|||
#: templates/hosting/bill_detail.html:68
|
||||
#, python-format
|
||||
msgid "Alles Preise in CHF mit 8%% Mehrwertsteuer."
|
||||
msgstr ""
|
||||
msgstr "All prices in CHF including 8%% VAT"
|
||||
|
||||
#: templates/hosting/bill_detail.html:69
|
||||
msgid "Betrag zahlbar innerhalb von 30 Tagen ab Rechnungseingang."
|
||||
|
@ -142,7 +142,7 @@ msgstr ""
|
|||
|
||||
#: templates/hosting/bills.html:12
|
||||
msgid "Customers"
|
||||
msgstr ""
|
||||
msgstr "Kunden"
|
||||
|
||||
#: hosting/templates/hosting/bills.html:16
|
||||
#: hosting/templates/hosting/virtual_machine_key.html:42
|
||||
|
@ -155,17 +155,17 @@ msgstr ""
|
|||
|
||||
#: templates/hosting/bills.html:28
|
||||
msgid "View Bill"
|
||||
msgstr ""
|
||||
msgstr "Rechnung anzeigen"
|
||||
|
||||
#: templates/hosting/bills.html:41 templates/hosting/orders.html.py:83
|
||||
#: templates/hosting/virtual_machines.html:70
|
||||
msgid "previous"
|
||||
msgstr ""
|
||||
msgstr "vorherige"
|
||||
|
||||
#: templates/hosting/bills.html:47 templates/hosting/orders.html.py:89
|
||||
#: templates/hosting/virtual_machines.html:76
|
||||
msgid "next"
|
||||
msgstr ""
|
||||
msgstr "nächste"
|
||||
|
||||
#: templates/hosting/confirm_reset_password.html:10
|
||||
#: 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
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
msgstr "Setzen Ihr neues Passwort"
|
||||
|
||||
#: hosting/templates/hosting/confirm_reset_password.html:28
|
||||
#: hosting/templates/hosting/reset_password.html:22
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
msgstr "Zurücksetzen"
|
||||
|
||||
#: hosting/templates/hosting/confirm_reset_password.html:32
|
||||
#: hosting/templates/hosting/reset_password.html:28
|
||||
#: hosting/templates/hosting/signup.html:27
|
||||
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"
|
||||
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
|
||||
msgid "Start VM"
|
||||
msgstr ""
|
||||
msgstr "Start VM"
|
||||
|
||||
#: templates/hosting/emails/password_reset_email.html:2
|
||||
#: templates/hosting/emails/password_reset_email.txt:2
|
||||
|
@ -220,48 +236,53 @@ msgstr ""
|
|||
msgid "The %(site_name)s team"
|
||||
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
|
||||
msgid "You haven been logged out"
|
||||
msgstr ""
|
||||
msgstr "Sie wurden abgmeldet"
|
||||
|
||||
#: hosting/templates/hosting/login.html:49
|
||||
msgid "Don't have an account yet ? "
|
||||
msgstr ""
|
||||
msgstr "Besitzen Sie kein Benutzerkonto?"
|
||||
|
||||
#: hosting/templates/hosting/login.html:52
|
||||
#: hosting/templates/hosting/signup.html:13
|
||||
#: hosting/templates/hosting/signup.html:21
|
||||
msgid "Sign up"
|
||||
msgstr ""
|
||||
msgstr "Registrieren"
|
||||
|
||||
#: hosting/templates/hosting/login.html:54
|
||||
msgid "Forgot your password ? "
|
||||
msgstr ""
|
||||
msgstr "Passwort vergessen?"
|
||||
|
||||
#: templates/hosting/notifications.html:9
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
msgstr "Benachrichtigungen"
|
||||
|
||||
#: templates/hosting/notifications.html:16
|
||||
msgid "Unread"
|
||||
msgstr ""
|
||||
msgstr "Ungelesen"
|
||||
|
||||
#: templates/hosting/notifications.html:26
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
msgstr "Alle"
|
||||
|
||||
#: templates/hosting/notifications.html:38
|
||||
msgid "Unread notifications"
|
||||
msgstr ""
|
||||
msgstr "Ungelesene Benachrichtigungen"
|
||||
|
||||
#: templates/hosting/notifications.html:48
|
||||
msgid "Mark as read"
|
||||
msgstr ""
|
||||
msgstr "Als gelesen markieren"
|
||||
|
||||
#: templates/hosting/notifications.html:59
|
||||
msgid "All notifications"
|
||||
msgstr ""
|
||||
msgstr "Alle Benachrichtigungen"
|
||||
|
||||
#: templates/hosting/order_detail.html:16
|
||||
#: templates/hosting/order_detail.html:24
|
||||
|
@ -274,25 +295,31 @@ msgstr ""
|
|||
|
||||
#: templates/hosting/order_detail.html:38
|
||||
msgid "Payment Method:"
|
||||
msgstr ""
|
||||
msgstr "Bezahlmethode"
|
||||
|
||||
#: templates/hosting/order_detail.html:49
|
||||
msgid "Order summary"
|
||||
msgstr ""
|
||||
msgstr "Bestellungsübersicht"
|
||||
|
||||
#: templates/hosting/order_detail.html:52
|
||||
#: templates/hosting/virtual_machine_detail.html:76
|
||||
#: hosting/templates/hosting/order_detail.html:52
|
||||
#: hosting/templates/hosting/payment.html:17
|
||||
#: hosting/templates/hosting/virtual_machine_detail.html:75
|
||||
msgid "Cores"
|
||||
msgstr ""
|
||||
msgstr "Prozessorkerne"
|
||||
|
||||
#: templates/hosting/order_detail.html:54
|
||||
#: 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"
|
||||
msgstr ""
|
||||
msgstr "Arbeitsspeicher"
|
||||
|
||||
#: templates/hosting/order_detail.html:56
|
||||
#: hosting/templates/hosting/order_detail.html:56
|
||||
#: hosting/templates/hosting/payment.html:23
|
||||
msgid "Disk space"
|
||||
msgstr ""
|
||||
msgstr "Festplattenkapazität"
|
||||
|
||||
#: templates/hosting/order_detail.html:58
|
||||
msgid "Total"
|
||||
|
@ -300,15 +327,15 @@ msgstr ""
|
|||
|
||||
#: templates/hosting/order_detail.html:64
|
||||
msgid "Finish Configuration"
|
||||
msgstr ""
|
||||
msgstr "Konfiguration beenden"
|
||||
|
||||
#: templates/hosting/orders.html:17
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
msgstr "Datum"
|
||||
|
||||
#: templates/hosting/orders.html:18
|
||||
msgid "Amount"
|
||||
msgstr ""
|
||||
msgstr "Betrag"
|
||||
|
||||
#: hosting/templates/hosting/orders.html:19
|
||||
#: hosting/templates/hosting/virtual_machine_detail.html:30
|
||||
|
@ -319,71 +346,104 @@ msgstr ""
|
|||
|
||||
#: templates/hosting/orders.html:30
|
||||
msgid "Approved"
|
||||
msgstr ""
|
||||
msgstr "Akzeptiert"
|
||||
|
||||
#: templates/hosting/orders.html:32
|
||||
msgid "Declined"
|
||||
msgstr ""
|
||||
msgstr "Abgelehnt"
|
||||
|
||||
#: templates/hosting/orders.html:37 templates/hosting/virtual_machines.html:58
|
||||
msgid "View Detail"
|
||||
msgstr ""
|
||||
msgstr "Details anzeigen"
|
||||
|
||||
#: templates/hosting/orders.html:41
|
||||
msgid "Cancel Order"
|
||||
msgstr ""
|
||||
msgstr "Bestellung stornieren"
|
||||
|
||||
#: templates/hosting/orders.html:56
|
||||
msgid "Do You want do delete your order?"
|
||||
msgstr ""
|
||||
msgstr "Wollen Sie ihre Bestellung löschen?"
|
||||
|
||||
#: templates/hosting/orders.html:64
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
msgstr "Schliessen"
|
||||
|
||||
#: templates/hosting/orders.html:66
|
||||
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
|
||||
msgid "Reset your password"
|
||||
msgstr ""
|
||||
msgstr "Passwort zurücksetzen"
|
||||
|
||||
#: templates/hosting/virtual_machine_detail.html:19
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#: templates/hosting/virtual_machine_detail.html:25
|
||||
msgid "Billing"
|
||||
msgstr ""
|
||||
msgstr "Abrechnungen"
|
||||
|
||||
#: templates/hosting/virtual_machine_detail.html:60
|
||||
msgid "Ip not assigned yet"
|
||||
msgstr ""
|
||||
msgstr "Ip nicht zugewiesen"
|
||||
|
||||
#: templates/hosting/virtual_machine_detail.html:89
|
||||
msgid "Disk"
|
||||
msgstr ""
|
||||
msgstr "Festplatte"
|
||||
|
||||
#: templates/hosting/virtual_machine_detail.html:98
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
msgstr "Konfiguration"
|
||||
|
||||
#: templates/hosting/virtual_machine_detail.html:108
|
||||
msgid "Current pricing"
|
||||
msgstr ""
|
||||
msgstr "Aktueller Preis"
|
||||
|
||||
#: templates/hosting/virtual_machine_detail.html:117
|
||||
msgid "Current status"
|
||||
msgstr ""
|
||||
msgstr "Aktueller Status"
|
||||
|
||||
#: templates/hosting/virtual_machine_detail.html:142
|
||||
msgid "Terminate Virtual Machine"
|
||||
msgstr ""
|
||||
msgstr "Virtuelle Maschine beenden"
|
||||
|
||||
#: templates/hosting/virtual_machine_detail.html:163
|
||||
msgid "Terminate your Virtual Machine"
|
||||
msgstr ""
|
||||
msgstr "Ihre virtuelle Maschine beenden"
|
||||
|
||||
#: templates/hosting/virtual_machine_detail.html:166
|
||||
msgid "Are you sure do you want to cancel your Virtual Machine "
|
||||
|
@ -392,43 +452,57 @@ msgstr ""
|
|||
#: templates/hosting/virtual_machine_detail.html:166
|
||||
msgid "plan?"
|
||||
msgstr ""
|
||||
msgstr "Sind Sie sicher, dass Sie ihre virtuelle Maschine beenden wollen "\
|
||||
|
||||
#: templates/hosting/virtual_machine_detail.html:169
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Beenden"
|
||||
|
||||
#: templates/hosting/virtual_machine_key.html:11
|
||||
msgid "Access Key"
|
||||
msgstr ""
|
||||
msgstr "Zugriffsschlüssel"
|
||||
|
||||
#: hosting/templates/hosting/virtual_machine_key.html:25
|
||||
msgid "Upload your own key. "
|
||||
msgstr ""
|
||||
msgstr "Laden Sie ihren Schlüssel hoch"
|
||||
|
||||
#: 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."
|
||||
msgstr ""
|
||||
msgstr "Oder erstellen Sie ein neues Schlüsselpaar"
|
||||
|
||||
#: hosting/templates/hosting/virtual_machine_key.html:31
|
||||
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 ""
|
||||
"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
|
||||
msgid "Created at"
|
||||
msgstr ""
|
||||
msgstr "Erstellt am"
|
||||
|
||||
#: hosting/templates/hosting/virtual_machine_key.html:66
|
||||
#: hosting/templates/hosting/virtual_machine_key.html:79
|
||||
msgid "Warning!"
|
||||
msgstr ""
|
||||
msgstr "Achtung!"
|
||||
|
||||
#: hosting/templates/hosting/virtual_machine_key.html:66
|
||||
msgid "You can download your SSH private key once. Don't lost your key"
|
||||
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
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr ""
|
||||
msgstr "Kopieren"
|
||||
|
||||
#: hosting/templates/hosting/virtual_machine_key.html:75
|
||||
msgid "Download"
|
||||
|
@ -439,18 +513,20 @@ msgid ""
|
|||
"Your SSH private key was already generated and downloaded, if you lost it, "
|
||||
"contact us. "
|
||||
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
|
||||
msgid "Generate my key"
|
||||
msgstr ""
|
||||
msgstr "Generiere meinen Schlüssel"
|
||||
|
||||
#: templates/hosting/virtual_machines.html:9
|
||||
msgid "Virtual Machines"
|
||||
msgstr ""
|
||||
msgstr "Virtuelle Maschinen"
|
||||
|
||||
#: templates/hosting/virtual_machines.html:22
|
||||
msgid "Create VM"
|
||||
msgstr ""
|
||||
msgstr "Neue VM"
|
||||
|
||||
#: templates/hosting/virtual_machines.html:28
|
||||
msgid "ID"
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
$( document ).ready(function() {
|
||||
|
||||
|
||||
|
||||
|
||||
$.ajaxSetup({
|
||||
beforeSend: function(xhr, settings) {
|
||||
function getCookie(name) {
|
||||
|
@ -26,6 +29,12 @@ $( document ).ready(function() {
|
|||
|
||||
|
||||
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);
|
||||
// hasCreditcard= true;
|
||||
|
||||
|
@ -38,10 +47,8 @@ $( document ).ready(function() {
|
|||
console.log("creditcard sdasd");
|
||||
// if (hasCreditcard) {
|
||||
$('#billing-form').submit();
|
||||
console.log("has creditcard2");
|
||||
// }
|
||||
|
||||
// $form.submit();
|
||||
}
|
||||
|
||||
|
||||
|
@ -53,33 +60,55 @@ $( document ).ready(function() {
|
|||
function payWithStripe(e) {
|
||||
e.preventDefault();
|
||||
|
||||
/* Visual feedback */
|
||||
$form.find('[type=submit]').html('Validating <i class="fa fa-spinner fa-pulse"></i>');
|
||||
function stripeTokenHandler(token) {
|
||||
// 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();
|
||||
$('#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 {
|
||||
/* 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();
|
||||
// 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 */
|
||||
|
@ -131,7 +160,7 @@ $( document ).ready(function() {
|
|||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// $form.find('[type=submit]').prop('disabled', true);
|
||||
// var readyInterval = setInterval(function() {
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
<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:key_pair' %}">
|
||||
<a href="{% url 'hosting:ssh_keys' %}">
|
||||
<i class="fa fa-key"></i> {% trans "Keys"%}
|
||||
</a>
|
||||
</li>
|
||||
|
@ -128,7 +128,46 @@
|
|||
{% if request.user.is_authenticated %}
|
||||
<footer class="navbar-fixed-bottom">
|
||||
<div class="container">
|
||||
<<<<<<< HEAD
|
||||
<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>
|
||||
</footer>
|
||||
{% endif %}
|
||||
|
@ -149,8 +188,9 @@
|
|||
<!-- Init JavaScript -->
|
||||
<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 -->
|
||||
<script type="text/javascript" src="//js.stripe.com/v2/"></script>
|
||||
|
||||
<!-- Proccess payment lib -->
|
||||
<script type="text/javascript" src="{% static 'hosting/js/payment.js' %}"></script>
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
<form method="POST" action="">
|
||||
{% csrf_token %}
|
||||
<div class="form-group">
|
||||
Select VM Template:
|
||||
{% trans "Select VM Template:" %}
|
||||
<select name="vm_template_id">
|
||||
{% for template in templates %}
|
||||
<option value="{{template.id}}">{{template.name}} </option>
|
||||
|
@ -29,14 +29,14 @@
|
|||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
Select VM Configuration:
|
||||
{% trans "Select VM Configuration:" %}
|
||||
<select name="configuration">
|
||||
{% for config in configuration_options %}
|
||||
<option value="{{config.id}}">
|
||||
CORE: {{config.cpu|floatformat}},
|
||||
RAM: {{config.memory|floatformat}} GiB,
|
||||
SSD: {{config.disk_size|floatformat}} GiB,
|
||||
PRICE: {{config.price|floatformat}} CHF/Month
|
||||
RAM: {{config.memory|floatformat}} GB,
|
||||
SSD: {{config.disk_size|floatformat}} GB,
|
||||
PRICE: {{config.price|floatformat}} {% trans "CHF/Month" %}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
</button>
|
||||
</div>
|
||||
<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"
|
||||
action="{% url 'hosting:delete_order' order.id %}">
|
||||
|
|
|
@ -9,18 +9,18 @@
|
|||
<form role="form" novalidate>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<h3><b>Billing Amount</b></h3>
|
||||
<h3><b>{%trans "Billing Amount" %}</b></h3>
|
||||
<hr>
|
||||
<div class="content">
|
||||
<!-- <p><b>Type</b> <span class="pull-right">{{request.session.vm_specs.location_code}}</span></p> -->
|
||||
<!-- <hr> -->
|
||||
<p><b>Cores</b> <span
|
||||
<p><b>{%trans "Cores"%}</b> <span
|
||||
class="pull-right">{{request.session.specs.cpu|floatformat}}</span></p>
|
||||
<hr>
|
||||
<p><b>Memory</b> <span
|
||||
<p><b>{%trans "Memory"%}</b> <span
|
||||
class="pull-right">{{request.session.specs.memory|floatformat}} GiB</span></p>
|
||||
<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>
|
||||
<hr>
|
||||
<h4>Total<p
|
||||
|
@ -32,7 +32,7 @@
|
|||
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-4 billing">
|
||||
<h3><b>Billing Address</b></h3>
|
||||
<h3><b>{%trans "Billing Address"%}</b></h3>
|
||||
<hr>
|
||||
<form role="form" id="billing-form" method="post" action="" novalidate>
|
||||
{% for field in form %}
|
||||
|
@ -46,7 +46,7 @@
|
|||
<div class="row">
|
||||
<div class="col-xs-12 col-md-offset-2 col-md-4 "></div>
|
||||
<div class="col-xs-12 col-md-4 creditcard-box">
|
||||
<h3><b>Payment Details</b></h3>
|
||||
<h3><b>{%trans "Payment Details"%}</b></h3>
|
||||
<hr>
|
||||
<div>
|
||||
<div>
|
||||
|
@ -57,17 +57,33 @@
|
|||
<h5 class="membership-lead">Type: {{credit_card_data.cc_brand}}</h5>
|
||||
<input type="hidden" name="credit_card_needed" value="false"/>
|
||||
</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 %}
|
||||
|
||||
|
||||
<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="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">
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -76,7 +92,7 @@
|
|||
<div class="row">
|
||||
<div class="col-xs-6 col-md-7">
|
||||
<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">
|
||||
<input type="text" class="form-control" name="expMonth" placeholder="MM" required data-stripe="exp_month" />
|
||||
</div>
|
||||
|
@ -87,14 +103,14 @@
|
|||
</div>
|
||||
<div class="col-xs-4 col-md-5 pull-right">
|
||||
<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" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<button class="btn btn-success btn-lg btn-block" type="submit">Submit Payment</button>
|
||||
<div class="col-xs-6 float-right">
|
||||
<button class="btn btn-success btn-sm btn-block" type="submit">Submit Payment</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" style="display:none;">
|
||||
|
@ -115,6 +131,7 @@
|
|||
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -125,8 +142,14 @@
|
|||
|
||||
<!-- stripe key data -->
|
||||
{% if stripe_key %}
|
||||
{% get_current_language as LANGUAGE_CODE %}
|
||||
<script type="text/javascript">
|
||||
(function () {window.stripeKey = "{{stripe_key}}";})();
|
||||
|
||||
|
||||
(function () {
|
||||
window.stripeKey = "{{stripe_key}}";
|
||||
window.current_lan = "{{LANGUAGE_CODE}}";
|
||||
})();
|
||||
</script>
|
||||
{%endif%}
|
||||
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
{% for field in form %}
|
||||
|
||||
{% bootstrap_field field %}
|
||||
{% endfor %}
|
||||
{% buttons %}
|
||||
|
@ -32,33 +31,8 @@
|
|||
</button>
|
||||
|
||||
{% 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 %}
|
||||
<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>
|
||||
|
||||
</div>
|
||||
<!-- <div class="form-group pull-right">
|
||||
<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> -->
|
||||
{% endif %}
|
||||
<div class="clearfix"></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"%}
|
||||
</div>
|
||||
<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 class="modal-footer">
|
||||
<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.
|
||||
|
||||
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,\
|
||||
NodeJSHostingView, LoginView, SignupView, IndexView, \
|
||||
OrdersHostingListView, OrdersHostingDetailView, VirtualMachinesPlanListView,\
|
||||
VirtualMachineView, GenerateVMSSHKeysView, OrdersHostingDeleteView, NotificationsView, \
|
||||
VirtualMachineView, OrdersHostingDeleteView, NotificationsView, \
|
||||
MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, HostingPricingView,\
|
||||
CreateVirtualMachinesView, HostingBillListView, HostingBillDetailView
|
||||
CreateVirtualMachinesView, HostingBillListView, HostingBillDetailView, \
|
||||
SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView
|
||||
|
||||
urlpatterns = [
|
||||
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/(?P<pk>\d+)/?$', VirtualMachineView.as_view(),
|
||||
name='virtual_machines'),
|
||||
# url(r'my-virtual-machines/(?P<pk>\d+)/delete/?$', VirtualMachineCancelView.as_view(),
|
||||
# name='virtual_machines_cancel'),
|
||||
url(r'vm-key-pair/?$', GenerateVMSSHKeysView.as_view(),
|
||||
name='key_pair'),
|
||||
url(r'ssh_keys/?$', SSHKeyListView.as_view(),
|
||||
name='ssh_keys'),
|
||||
url(r'delete_ssh_key/(?P<pk>\d+)/?$', SSHKeyDeleteView.as_view(),
|
||||
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/(?P<pk>\d+)/?$', MarkAsReadNotificationView.as_view(),
|
||||
name='read_notification'),
|
||||
|
|
|
@ -188,7 +188,7 @@ class SignupView(CreateView):
|
|||
template_name = 'hosting/signup.html'
|
||||
form_class = HostingUserSignupForm
|
||||
model = CustomUser
|
||||
success_url = reverse_lazy('hosting:key_pair')
|
||||
success_url = reverse_lazy('hosting:ssh_keys')
|
||||
|
||||
def get_success_url(self):
|
||||
next_url = self.request.session.get(
|
||||
|
@ -288,31 +288,58 @@ class MarkAsReadNotificationView(LoginRequiredMixin, UpdateView):
|
|||
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
|
||||
model = UserHostingKey
|
||||
template_name = 'hosting/virtual_machine_key.html'
|
||||
template_name = 'hosting/user_key.html'
|
||||
login_url = reverse_lazy('hosting:login')
|
||||
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):
|
||||
kwargs = super(GenerateVMSSHKeysView, self).get_form_kwargs()
|
||||
kwargs = super(SSHKeyCreateView, self).get_form_kwargs()
|
||||
kwargs.update({'request': self.request})
|
||||
return kwargs
|
||||
|
||||
|
@ -339,22 +366,22 @@ class GenerateVMSSHKeysView(LoginRequiredMixin, FormView):
|
|||
})
|
||||
|
||||
owner = self.request.user
|
||||
# Create 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)
|
||||
manager = OpenNebulaManager()
|
||||
|
||||
# Get user ssh key
|
||||
public_key = form.cleaned_data.get('public_key')
|
||||
# Add ssh key to user
|
||||
manager.oneadmin_client.call('user.update', opennebula_user.id,
|
||||
'<CONTEXT><SSH_PUBLIC_KEY>{key}</SSH_PUBLIC_KEY></CONTEXT>'.format(key=public_key))
|
||||
try:
|
||||
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):
|
||||
print(self.request.POST.dict())
|
||||
form = self.get_form()
|
||||
if form.is_valid():
|
||||
return self.form_valid(form)
|
||||
|
@ -412,7 +439,7 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
|||
request,
|
||||
'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:
|
||||
del request.session['next']
|
||||
|
@ -628,7 +655,7 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View):
|
|||
request,
|
||||
'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:
|
||||
manager = OpenNebulaManager()
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
</h2>
|
||||
</a>
|
||||
<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 class="post-subtitle">
|
||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
@ -17,7 +17,7 @@ class SignupFormMixin(forms.ModelForm):
|
|||
model = CustomUser
|
||||
fields = ['name', 'email', 'password']
|
||||
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):
|
||||
|
|
|
@ -10,6 +10,7 @@ def handleStripeError(f):
|
|||
'response_object': None,
|
||||
'error': None
|
||||
}
|
||||
|
||||
common_message = "Currently its not possible to make payments."
|
||||
try:
|
||||
response_object = f(*args, **kwargs)
|
||||
|
|
Loading…
Reference in a new issue