From 6cbbbc70be7787ec39353555a61c3e61a8e348ab Mon Sep 17 00:00:00 2001 From: Mondi Geetha Date: Sun, 2 Jul 2017 02:45:22 +0530 Subject: [PATCH 001/336] Alinged Logo, Text, Signature to left side --- .../emails/request_access_confirmation.html | 8 ++++---- .../emails/request_access_notification.html | 8 ++++---- .../emails/request_beta_access_notification.html | 8 ++++---- .../templates/datacenterlight/emails/user_activation.html | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/datacenterlight/templates/datacenterlight/emails/request_access_confirmation.html b/datacenterlight/templates/datacenterlight/emails/request_access_confirmation.html index e96a8ef1..2f71944f 100644 --- a/datacenterlight/templates/datacenterlight/emails/request_access_confirmation.html +++ b/datacenterlight/templates/datacenterlight/emails/request_access_confirmation.html @@ -74,7 +74,7 @@
-
+ logo @@ -95,12 +95,12 @@
- -
+ {% trans "Thank you for your request." %}
+

{% trans "You are one step away from being our beta tester!" %}

{% trans "Currently we are running our tests to make sure everything runs perfectly." %}
{% trans "In the meantime, we would like to ask you a little patience
until our team contacts you with beta access." %}
@@ -117,7 +117,7 @@

-
Your data center light team
+
Your data center light team
diff --git a/datacenterlight/templates/datacenterlight/emails/request_access_notification.html b/datacenterlight/templates/datacenterlight/emails/request_access_notification.html index 09531ba6..095c917e 100644 --- a/datacenterlight/templates/datacenterlight/emails/request_access_notification.html +++ b/datacenterlight/templates/datacenterlight/emails/request_access_notification.html @@ -73,7 +73,7 @@
-
+ logo @@ -94,12 +94,12 @@
- - @@ -113,7 +113,7 @@
+ An user requested a beta access
+

User {{email}} requested beta access

-
Your data center light team
+
Your data center light team
diff --git a/datacenterlight/templates/datacenterlight/emails/request_beta_access_notification.html b/datacenterlight/templates/datacenterlight/emails/request_beta_access_notification.html index 7991eb69..c6f3033e 100644 --- a/datacenterlight/templates/datacenterlight/emails/request_beta_access_notification.html +++ b/datacenterlight/templates/datacenterlight/emails/request_beta_access_notification.html @@ -73,7 +73,7 @@
-
+ logo @@ -94,14 +94,14 @@
- -
+ An user requested a beta access
+

User {{email}} requested beta access

{% for vm in vms %} Type: {{vm.type}} - Amount: {{vm.amount}} @@ -119,7 +119,7 @@
-
Your data center light team
+
Your data center light team
diff --git a/datacenterlight/templates/datacenterlight/emails/user_activation.html b/datacenterlight/templates/datacenterlight/emails/user_activation.html index bf688127..e591fc54 100644 --- a/datacenterlight/templates/datacenterlight/emails/user_activation.html +++ b/datacenterlight/templates/datacenterlight/emails/user_activation.html @@ -74,7 +74,7 @@
-
+ logo @@ -95,12 +95,12 @@
- -
+ {{dcl_text}} {% trans 'account activation' %}
+

{% blocktrans %} You can activate your {{dcl_text}} account by clicking here.

@@ -120,7 +120,7 @@

-
{% trans 'Your' %} {{dcl_text}} {% trans 'team' %}
+
{% trans 'Your' %} {{dcl_text}} {% trans 'team' %}
From 2045c424ca2922c21392a0ec8c7172234b51b960 Mon Sep 17 00:00:00 2001 From: Mondi Geetha Date: Sun, 2 Jul 2017 03:00:02 +0530 Subject: [PATCH 002/336] Added padding to LOGO in user activation email --- .../templates/datacenterlight/emails/user_activation.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datacenterlight/templates/datacenterlight/emails/user_activation.html b/datacenterlight/templates/datacenterlight/emails/user_activation.html index e591fc54..4b8a7d2b 100644 --- a/datacenterlight/templates/datacenterlight/emails/user_activation.html +++ b/datacenterlight/templates/datacenterlight/emails/user_activation.html @@ -74,7 +74,7 @@
- {% endfor %} From 89ba4b6d0406b9e913245387a21701761b9a72fa Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Thu, 31 Aug 2017 15:05:45 +0200 Subject: [PATCH 087/336] Added CdistUtils class to manage indices --- opennebula_api/models.py | 3 ++- utils/cdist_utils.py | 26 ++++++++++++++++++++++++++ utils/tasks.py | 34 +++++++++++++++++++++++----------- 3 files changed, 51 insertions(+), 12 deletions(-) create mode 100644 utils/cdist_utils.py diff --git a/opennebula_api/models.py b/opennebula_api/models.py index 89a56774..7a8a333a 100644 --- a/opennebula_api/models.py +++ b/opennebula_api/models.py @@ -7,6 +7,7 @@ from oca.exceptions import OpenNebulaException from oca.pool import WrongNameError, WrongIdError from hosting.models import HostingOrder +from utils.cdist_utils import CdistUtilts from utils.models import CustomUser from utils.tasks import save_ssh_key from .exceptions import KeyExistsError, UserExistsError, UserCredentialError @@ -533,7 +534,7 @@ class OpenNebulaManager(): logger.debug( "VM with ID {} does not exist".format(order.vm_id)) if len(keys) > 0: - save_ssh_key.delay(hosts, keys) + save_ssh_key.delay(hosts, keys, CdistUtilts.get_cdist_index()) else: logger.debug("The user {} has no VMs. We don't need to configure " "the ssh keys.".format(self.email)) diff --git a/utils/cdist_utils.py b/utils/cdist_utils.py new file mode 100644 index 00000000..801a02d5 --- /dev/null +++ b/utils/cdist_utils.py @@ -0,0 +1,26 @@ +import cdist.integration as cdist_integration + + +class CdistUtilts(): + @staticmethod + def get_cdist_index(): + """ + Returns the next available instance index. + This is useful while making simultaneous configurations of + the same host. + :return: the next available index + """ + cdist_instance_index = cdist_integration.instance_index + cdist_index = next(cdist_instance_index) + return cdist_index + + @staticmethod + def free_cdist_index(cdist_index): + """ + Frees up the index that was used during configuring a host + using cdist. + :param cdist_index: The index to be freed + :return: + """ + cdist_instance_index = cdist_integration.instance_index + cdist_instance_index.free(cdist_index) diff --git a/utils/tasks.py b/utils/tasks.py index 6a246d54..d261ff31 100644 --- a/utils/tasks.py +++ b/utils/tasks.py @@ -1,12 +1,12 @@ -import tempfile - import cdist -import cdist.integration as cdist_integration +import tempfile +from cdist.integration import configure_hosts_simple from celery.utils.log import get_task_logger from django.conf import settings from django.core.mail import EmailMessage from dynamicweb.celery import app +from utils.cdist_utils import CdistUtilts logger = get_task_logger(__name__) @@ -26,7 +26,7 @@ def send_plain_email_task(self, email_data): @app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES) -def save_ssh_key(self, hosts, keys): +def save_ssh_key(self, hosts, keys, index): """ Saves ssh key into the VMs of a user using cdist @@ -36,8 +36,22 @@ def save_ssh_key(self, hosts, keys): 'value': 'sha-.....', # public key as string 'state': True # whether key is to be added or } # removed + :param index: An integer that uniquely identifies simultaneous cdist + configurations being run on a host """ + logger.debug("""Running save_ssh_key task for + Hosts: {hosts_str} + Keys: {keys_str} + index: {index}""".format(hosts_str=", ".join(hosts), + keys_str=", ".join([ + "{value}->{state}".format( + value=key.get('value'), + state=str( + key.get('state'))) + for key in keys]), + index=index) + ) return_value = True with tempfile.NamedTemporaryFile(delete=True) as tmp_manifest: # Generate manifest to be used for configuring the hosts @@ -51,14 +65,12 @@ def save_ssh_key(self, hosts, keys): tmp_manifest.writelines(lines_list) tmp_manifest.flush() try: - cdist_instance_index = cdist_integration.instance_index - cdist_index = next(cdist_instance_index) - cdist_integration.configure_hosts_simple(hosts, - tmp_manifest.name, - index=cdist_index, - verbose=cdist.argparse.VERBOSE_TRACE) - cdist_instance_index.free(cdist_index) + configure_hosts_simple(hosts, + tmp_manifest.name, + index=index, + verbose=cdist.argparse.VERBOSE_TRACE) except Exception as cdist_exception: logger.error(cdist_exception) return_value = False + CdistUtilts.free_cdist_index(index) return return_value From da41045b0fe60d0b128a15b02bed53729d47ea40 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 31 Aug 2017 20:02:20 +0530 Subject: [PATCH 088/336] ssh key heading changed 'Your SSH Keys' -> 'My SSH Keys' --- hosting/locale/de/LC_MESSAGES/django.po | 217 ++++++++++++++++++++++- hosting/templates/hosting/user_keys.html | 2 +- 2 files changed, 211 insertions(+), 8 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index 3351aee3..d510b2ca 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-24 11:12+0000\n" +"POT-Creation-Date: 2017-08-31 18:00+0530\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,293 +18,436 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: .\hosting\forms.py:29 msgid "Your username and/or password were incorrect." msgstr "Dein Benutzername und/oder Dein Passwort ist falsch." +#: .\hosting\forms.py:32 msgid "Your account is not activated yet." msgstr "Dein Account wurde noch nicht aktiviert." +#: .\hosting\forms.py:68 msgid "Paste here your public key" msgstr "Füge deinen Public Key ein" +#: .\hosting\forms.py:74 msgid "Give a name to your key" msgstr "Gebe deinem SSH-Key einen Name" +#: .\hosting\forms.py:79 msgid "Key name" msgstr "Key-Name" +#: .\hosting\templates\hosting\base_short.html:75 msgid "My Virtual Machines" msgstr "Meine virtuellen Maschinen" +#: .\hosting\templates\hosting\base_short.html:80 +#: .\hosting\templates\hosting\orders.html:8 msgid "My Orders" msgstr "Meine Bestellungen" +#: .\hosting\templates\hosting\base_short.html:89 msgid "SSH Keys" msgstr "SSH Key" +#: .\hosting\templates\hosting\base_short.html:94 msgid "Notifications " msgstr "Benachrichtigungen" +#: .\hosting\templates\hosting\base_short.html:97 msgid "Logout" msgstr "Abmelden" +#: .\hosting\templates\hosting\base_short.html:119 +#: .\hosting\templates\hosting\includes\_footer.html:29 msgid "All Rights Reserved" msgstr "Alle Rechte vorbehalten" +#: .\hosting\templates\hosting\bill_detail.html:11 .\hosting\views.py:687 msgid "Invoice" msgstr "Rechnung" +#: .\hosting\templates\hosting\bill_detail.html:11 +#: .\hosting\templates\hosting\order_detail.html:23 msgid "Order #" msgstr "Bestellung #" +#: .\hosting\templates\hosting\bill_detail.html:25 msgid "ungleich GmbH" msgstr "" +#: .\hosting\templates\hosting\bill_detail.html:26 msgid "buchhaltung@ungleich.ch" msgstr "" +#: .\hosting\templates\hosting\bill_detail.html:27 msgid "Hauptstrasse 14" msgstr "" +#: .\hosting\templates\hosting\bill_detail.html:28 msgid "CH-8775 Luchsingen" msgstr "" +#: .\hosting\templates\hosting\bill_detail.html:29 msgid "Mwst-Nummer: CHE-109.549.333 MWST" msgstr "" +#: .\hosting\templates\hosting\bill_detail.html:60 msgid "Total:" msgstr "" +#: .\hosting\templates\hosting\bill_detail.html:68 #, python-format msgid "Alles Preise in CHF mit 8%% Mehrwertsteuer." msgstr "All prices in CHF including 8%% VAT" +#: .\hosting\templates\hosting\bill_detail.html:69 msgid "Betrag zahlbar innerhalb von 30 Tagen ab Rechnungseingang." msgstr "" +#: .\hosting\templates\hosting\bill_detail.html:70 msgid "Kontoverbindung:" msgstr "" +#: .\hosting\templates\hosting\bill_detail.html:73 msgid "IBAN:" msgstr "" +#: .\hosting\templates\hosting\bill_detail.html:76 msgid "BIC:" msgstr "" +#: .\hosting\templates\hosting\bill_detail.html:81 msgid "CH02 0900 0000 6071 8848 8" msgstr "" +#: .\hosting\templates\hosting\bill_detail.html:84 msgid "POFICHBEXXX" msgstr "" +#: .\hosting\templates\hosting\bills.html:12 msgid "Customers" msgstr "Kunden" +#: .\hosting\templates\hosting\bills.html:16 +#: .\hosting\templates\hosting\user_keys.html:25 msgid "Name" msgstr "" +#: .\hosting\templates\hosting\bills.html:17 msgid "Email" msgstr "" +#: .\hosting\templates\hosting\bills.html:28 msgid "View Bill" msgstr "Rechnung anzeigen" +#: .\hosting\templates\hosting\bills.html:41 +#: .\hosting\templates\hosting\orders.html:54 +#: .\hosting\templates\hosting\virtual_machines.html:65 msgid "previous" msgstr "vorherige" +#: .\hosting\templates\hosting\bills.html:47 +#: .\hosting\templates\hosting\orders.html:60 +#: .\hosting\templates\hosting\virtual_machines.html:71 msgid "next" msgstr "nächste" +#: .\hosting\templates\hosting\choice_ssh_keys.html:8 msgid "SSH Key" msgstr "SSH Key" +#: .\hosting\templates\hosting\choice_ssh_keys.html:9 msgid "Choose a key option in order to access your VM" msgstr "Wähle eine Option um Zugriff auf deine VM zu erhalten" +#: .\hosting\templates\hosting\choice_ssh_keys.html:20 msgid "Generating a new key pair" msgstr "Neuen SSH-Key erstellen" +#: .\hosting\templates\hosting\choice_ssh_keys.html:21 msgid "I want to generate a new key pair" msgstr "Ich möchte einen neuen SSH-Key erstellen" +#: .\hosting\templates\hosting\choice_ssh_keys.html:25 +#: .\hosting\templates\hosting\user_key.html:36 msgid "Generate" msgstr "Generieren" +#: .\hosting\templates\hosting\choice_ssh_keys.html:31 msgid "Using existing key" msgstr "Nutzung eines existierenden SSH-Keys" +#: .\hosting\templates\hosting\choice_ssh_keys.html:32 msgid "I want to use my existing public key" msgstr "Ich möchte einen existierenden SSH-Key nutzen" +#: .\hosting\templates\hosting\choice_ssh_keys.html:35 msgid "Upload" msgstr "Hochladen" +#: .\hosting\templates\hosting\confirm_reset_password.html:14 +#: .\hosting\templates\hosting\login.html:14 +#: .\hosting\templates\hosting\reset_password.html:15 +#: .\hosting\templates\hosting\signup.html:13 +#: .\hosting\templates\hosting\signup_validate.html:9 msgid "Your VM hosted in Switzerland" msgstr "deine VM in der Schweiz" +#: .\hosting\templates\hosting\confirm_reset_password.html:18 msgid "Set your new password" msgstr "Setze dein neues Passwort" +#: .\hosting\templates\hosting\confirm_reset_password.html:33 +#: .\hosting\templates\hosting\reset_password.html:27 msgid "Reset" msgstr "Zurücksetzen" +#: .\hosting\templates\hosting\confirm_reset_password.html:39 +#: .\hosting\templates\hosting\reset_password.html:33 +#: .\hosting\templates\hosting\signup.html:31 msgid "Already have an account ?" msgstr "Hast Du bereits ein Benutzerkonto?" +#: .\hosting\templates\hosting\confirm_reset_password.html:42 +#: .\hosting\templates\hosting\login.html:18 +#: .\hosting\templates\hosting\login.html:34 +#: .\hosting\templates\hosting\reset_password.html:36 +#: .\hosting\templates\hosting\signup.html:34 msgid "Login" msgstr "Anmelden" +#: .\hosting\templates\hosting\create_virtual_machine.html:20 msgid "New Virtual Machine" msgstr "Neue virtuelle Maschine" +#: .\hosting\templates\hosting\create_virtual_machine.html:28 msgid "Step 1. Select VM Template:" msgstr "Wähle eine Vorlage" +#: .\hosting\templates\hosting\create_virtual_machine.html:42 msgid "Step2. Select VM Configuration" msgstr "Wähle eine Konfiguration" +#: .\hosting\templates\hosting\create_virtual_machine.html:59 msgid "Price " msgstr "Preis" +#: .\hosting\templates\hosting\create_virtual_machine.html:59 msgid "CHF/Month" msgstr "CHF/Monat" +#: .\hosting\templates\hosting\create_virtual_machine.html:61 msgid "Start VM" msgstr "VM jetzt starten" +#: .\hosting\templates\hosting\dashboard.html:8 msgid "My Dashboard" msgstr "Mein Dashboard" +#: .\hosting\templates\hosting\dashboard.html:12 msgid "Create VM" msgstr "VM erstellen" +#: .\hosting\templates\hosting\dashboard.html:18 msgid "My VMs" msgstr "Meine VMs" +#: .\hosting\templates\hosting\dashboard.html:24 +#: .\hosting\templates\hosting\user_keys.html:6 msgid "My SSH Keys" msgstr "Meine SSH Keys" +#: .\hosting\templates\hosting\dashboard.html:30 msgid "My Bills" msgstr "Meine Rechnungen" +#: .\hosting\templates\hosting\dashboard.html:36 msgid "My Settings" msgstr "Meine Einstellungen" +#: .\hosting\templates\hosting\dashboard.html:42 +#: .\hosting\templates\hosting\virtual_machine_detail.html:74 msgid "Support / Contact" msgstr "Support / Kontakt" +#: .\hosting\templates\hosting\emails\password_reset_email.html:2 +#: .\hosting\templates\hosting\emails\password_reset_email.txt:2 #, python-format msgid "" "You're receiving this email because you requested a password reset for your " "user account at %(site_name)s." msgstr "" +#: .\hosting\templates\hosting\emails\password_reset_email.html:4 +#: .\hosting\templates\hosting\emails\password_reset_email.txt:4 msgid "Please go to the following page and choose a new password:" msgstr "" +#: .\hosting\templates\hosting\emails\password_reset_email.html:9 +#: .\hosting\templates\hosting\emails\password_reset_email.txt:9 msgid "Thanks for using our site!" msgstr "" +#: .\hosting\templates\hosting\emails\password_reset_email.html:11 +#: .\hosting\templates\hosting\emails\password_reset_email.txt:11 #, python-format msgid "The %(site_name)s team" msgstr "" +#: .\hosting\templates\hosting\login.html:41 msgid "Don't have an account yet ? " msgstr "Besitzt du kein Benutzerkonto?" +#: .\hosting\templates\hosting\login.html:44 +#: .\hosting\templates\hosting\signup.html:17 +#: .\hosting\templates\hosting\signup.html:25 .\hosting\views.py:238 msgid "Sign up" msgstr "Registrieren" +#: .\hosting\templates\hosting\login.html:46 msgid "Forgot your password ? " msgstr "Passwort vergessen?" +#: .\hosting\templates\hosting\notifications.html:9 msgid "Notifications" msgstr "Benachrichtigungen" +#: .\hosting\templates\hosting\notifications.html:16 msgid "Unread" msgstr "Ungelesen" +#: .\hosting\templates\hosting\notifications.html:26 msgid "All" msgstr "Alle" +#: .\hosting\templates\hosting\notifications.html:38 msgid "Unread notifications" msgstr "Ungelesene Benachrichtigungen" +#: .\hosting\templates\hosting\notifications.html:48 msgid "Mark as read" msgstr "Als gelesen markieren" +#: .\hosting\templates\hosting\notifications.html:59 msgid "All notifications" msgstr "Alle Benachrichtigungen" +#: .\hosting\templates\hosting\order_detail.html:29 +#: .\hosting\templates\hosting\orders.html:23 +#: .\hosting\templates\hosting\orders.html:33 msgid "Date" msgstr "Datum" +#: .\hosting\templates\hosting\order_detail.html:31 msgid "Status:" msgstr "" +#: .\hosting\templates\hosting\order_detail.html:41 msgid "Billed To:" msgstr "Rechnungsadresse" +#: .\hosting\templates\hosting\order_detail.html:52 msgid "Payment Method:" msgstr "Bezahlmethode" +#: .\hosting\templates\hosting\order_detail.html:63 msgid "Order summary" msgstr "Bestellungsübersicht" +#: .\hosting\templates\hosting\order_detail.html:66 +#: .\hosting\templates\hosting\payment.html:13 +#: .\hosting\templates\hosting\virtual_machine_detail.html:38 msgid "Cores" msgstr "Prozessorkerne" +#: .\hosting\templates\hosting\order_detail.html:68 +#: .\hosting\templates\hosting\payment.html:16 +#: .\hosting\templates\hosting\virtual_machine_detail.html:39 msgid "Memory" msgstr "Arbeitsspeicher" +#: .\hosting\templates\hosting\order_detail.html:70 +#: .\hosting\templates\hosting\payment.html:19 msgid "Disk space" msgstr "Festplattenkapazität" +#: .\hosting\templates\hosting\order_detail.html:72 +#: .\hosting\templates\hosting\payment.html:41 msgid "Total" msgstr "Gesamt" +#: .\hosting\templates\hosting\order_detail.html:78 msgid "Finish Configuration" msgstr "Konfiguration beenden" +#: .\hosting\templates\hosting\orders.html:22 +#: .\hosting\templates\hosting\orders.html:32 msgid "Order Nr." msgstr "Bestellung Nr." +#: .\hosting\templates\hosting\orders.html:24 +#: .\hosting\templates\hosting\orders.html:34 msgid "Amount" msgstr "Betrag" +#: .\hosting\templates\hosting\orders.html:25 +#: .\hosting\templates\hosting\orders.html:35 +#: .\hosting\templates\hosting\virtual_machine_detail.html:53 +#: .\hosting\templates\hosting\virtual_machines.html:31 +#: .\hosting\templates\hosting\virtual_machines.html:43 msgid "Status" msgstr "" +#: .\hosting\templates\hosting\orders.html:43 +#: .\hosting\templates\hosting\virtual_machine_detail.html:49 msgid "See Invoice" msgstr "Rechnung" +#: .\hosting\templates\hosting\orders.html:43 +#: .\hosting\templates\hosting\virtual_machines.html:53 msgid "View Detail" msgstr "Details anzeigen" +#: .\hosting\templates\hosting\orders.html:57 +#: .\hosting\templates\hosting\virtual_machines.html:68 msgid "Page" msgstr "" +#: .\hosting\templates\hosting\orders.html:57 +#: .\hosting\templates\hosting\virtual_machines.html:68 msgid "of" msgstr "" +#: .\hosting\templates\hosting\payment.html:10 msgid "Your Order" msgstr "Deine Bestellung" +#: .\hosting\templates\hosting\payment.html:22 +#: .\hosting\templates\hosting\virtual_machine_detail.html:41 msgid "Configuration" msgstr "Konfiguration" +#: .\hosting\templates\hosting\payment.html:41 msgid "including VAT" msgstr "inkl. Mehrwertsteuer" +#: .\hosting\templates\hosting\payment.html:46 +#: .\hosting\templates\hosting\virtual_machine_detail.html:48 msgid "Month" msgstr "Monat" +#: .\hosting\templates\hosting\payment.html:55 msgid "Billing Address" msgstr "Rechnungsadresse" +#: .\hosting\templates\hosting\payment.html:65 msgid "Credit Card" msgstr "Kreditkarte" +#: .\hosting\templates\hosting\payment.html:70 msgid "" "\n" " Please fill in your credit card information " @@ -319,160 +462,209 @@ msgstr "" "\"https://stripe.com\" target=\"_blank\">Stripe für die Bezahlung und " "speichern keine Informationen in unserer Datenbank." +#: .\hosting\templates\hosting\payment.html:90 +#: .\hosting\templates\hosting\payment.html:147 msgid "" "You are not making any payment yet. After submitting your card information, " "you will be taken to the Confirm Order Page." msgstr "" -"Es wird noch keine Bezahlung vorgenommen. Die Bezahlung wird erst " -"ausgelöst, nachdem Du die Bestellung auf der nächsten Seite bestätigt " -"hast." +"Es wird noch keine Bezahlung vorgenommen. Die Bezahlung wird erst ausgelöst, " +"nachdem Du die Bestellung auf der nächsten Seite bestätigt hast." +#: .\hosting\templates\hosting\payment.html:112 +#: .\hosting\templates\hosting\payment.html:168 msgid "Submit" msgstr "Absenden" +#: .\hosting\templates\hosting\payment.html:124 msgid "Card Number" msgstr "Kreditkartennummer" +#: .\hosting\templates\hosting\payment.html:128 msgid "Expiry Date" msgstr "Ablaufdatum" +#: .\hosting\templates\hosting\payment.html:133 msgid "CVC" msgstr "" +#: .\hosting\templates\hosting\payment.html:137 msgid "Card Type" msgstr "Kartentyp" +#: .\hosting\templates\hosting\payment.html:194 msgid "Processing" msgstr "Weiter" +#: .\hosting\templates\hosting\payment.html:195 msgid "Enter your credit card number" msgstr "Deine Kreditkartennummer" +#: .\hosting\templates\hosting\reset_password.html:19 msgid "Reset your password" msgstr "Passwort zurücksetzen" +#: .\hosting\templates\hosting\user_key.html:11 msgid "Add your public SSH key" msgstr "Füge deinen öffentlichen SSH-Key hinzu" +#: .\hosting\templates\hosting\user_key.html:25 msgid "Use your created key to access to the VM" msgstr "Benutze deinen erstellten SSH-Key um auf deine VM zugreifen zu können" +#: .\hosting\templates\hosting\user_key.html:28 +#: .\hosting\templates\hosting\user_keys.html:17 msgid "Add SSH Key" msgstr "Hinzufügen" +#: .\hosting\templates\hosting\user_key.html:33 msgid "Or you can generate a new key pair" msgstr "Erstelle dein neues Keypaar" +#: .\hosting\templates\hosting\user_key.html:45 msgid "Warning!" msgstr "Achtung!" +#: .\hosting\templates\hosting\user_key.html:45 msgid "You can download your SSH private key once. Don't loose your key" msgstr "" "Du kannst deinen privaten SSH Schlüssel nur einmal herunterladen. Beware ihn " "sicher auf." -msgid "Your SSH Keys" -msgstr "Deine SSH Keys" - +#: .\hosting\templates\hosting\user_keys.html:15 msgid "" "To generate a new key pair or to upload your existing key, click 'Add Key'" msgstr "" "Um einen neuen SSH-Key zu erstellen oder um einen vorhandenen SSH-Key " "hinzuzufügen, klicke auf 'Hinzufügen'" +#: .\hosting\templates\hosting\user_keys.html:26 msgid "Delete Key" msgstr "Löschen" +#: .\hosting\templates\hosting\user_keys.html:27 msgid "Public Key" msgstr "" +#: .\hosting\templates\hosting\user_keys.html:28 msgid "Private Key" msgstr "" +#: .\hosting\templates\hosting\user_keys.html:38 +#: .\hosting\templates\hosting\user_keys.html:57 msgid "Delete" msgstr "Löschen" +#: .\hosting\templates\hosting\user_keys.html:52 msgid "Delete SSH Key" msgstr "SSH Key löschen" +#: .\hosting\templates\hosting\user_keys.html:53 msgid "Do you want to delete this key?" msgstr "Möchtest Du den Schlüssel löschen?" +#: .\hosting\templates\hosting\user_keys.html:68 msgid "Show" msgstr "Anzeigen" +#: .\hosting\templates\hosting\user_keys.html:80 msgid "Public SSH Key" msgstr "Public SSH Key" +#: .\hosting\templates\hosting\user_keys.html:95 msgid "Download" msgstr "" +#: .\hosting\templates\hosting\virtual_machine_detail.html:14 msgid "Your Virtual Machine Detail" msgstr "Virtuelle Maschinen Detail" +#: .\hosting\templates\hosting\virtual_machine_detail.html:17 msgid "VM Settings" msgstr "VM Einstellungen" +#: .\hosting\templates\hosting\virtual_machine_detail.html:24 +#: .\hosting\templates\hosting\virtual_machine_detail.html:31 msgid "Copied" msgstr "Kopiert" +#: .\hosting\templates\hosting\virtual_machine_detail.html:40 msgid "Disk" msgstr "Festplatte" +#: .\hosting\templates\hosting\virtual_machine_detail.html:45 msgid "Billing" msgstr "Abrechnungen" +#: .\hosting\templates\hosting\virtual_machine_detail.html:47 msgid "Current Pricing" msgstr "Aktueller Preis" +#: .\hosting\templates\hosting\virtual_machine_detail.html:55 msgid "Your VM is" msgstr "Deine VM ist" +#: .\hosting\templates\hosting\virtual_machine_detail.html:57 msgid "Pending" msgstr "In Vorbereitung" +#: .\hosting\templates\hosting\virtual_machine_detail.html:59 msgid "Online" msgstr "" +#: .\hosting\templates\hosting\virtual_machine_detail.html:61 msgid "Failed" msgstr "Fehlgeschlagen" +#: .\hosting\templates\hosting\virtual_machine_detail.html:67 msgid "Terminate VM" msgstr "VM Beenden" +#: .\hosting\templates\hosting\virtual_machine_detail.html:79 msgid "Something doesn't work?" msgstr "Etwas funktioniert nicht?" +#: .\hosting\templates\hosting\virtual_machine_detail.html:79 msgid "We are here to help you!" msgstr "Wir sind hier, um Dir zu helfen!" +#: .\hosting\templates\hosting\virtual_machine_detail.html:83 msgid "CONTACT" msgstr "KONTACT" +#: .\hosting\templates\hosting\virtual_machine_detail.html:87 msgid "BACK TO LIST" msgstr "ZURÜCK ZUR LISTE" +#: .\hosting\templates\hosting\virtual_machine_detail.html:99 msgid "Terminate your Virtual Machine" msgstr "Deine Virtuelle Maschine beenden" +#: .\hosting\templates\hosting\virtual_machine_detail.html:101 msgid "Do you want to cancel your Virtual Machine" msgstr "Bist Du sicher, dass Du Deine virtuelle Maschine beenden willst" +#: .\hosting\templates\hosting\virtual_machine_detail.html:106 msgid "OK" msgstr "" +#: .\hosting\templates\hosting\virtual_machines.html:6 msgid "Virtual Machines" msgstr "Virtuelle Maschinen" +#: .\hosting\templates\hosting\virtual_machines.html:16 msgid "To create a new virtual machine, click \"Create VM\"" msgstr "" +#: .\hosting\templates\hosting\virtual_machines.html:18 msgid "CREATE VM" msgstr "NEUE VM" +#: .\hosting\views.py:225 .\hosting\views.py:249 msgid "login" msgstr "Einloggen" +#: .\hosting\views.py:231 msgid "" "Thank you for signing up. We have sent an email to you. Please follow the " "instructions in it to activate your account. Once activated, you can login " @@ -482,32 +674,43 @@ msgstr "" "den Anweisungen um deinen Account zu aktivieren. Danach kannst du dich über " "diesen" +#: .\hosting\views.py:233 .\hosting\views.py:263 msgid "Go back to" msgstr "Zurück" +#: .\hosting\views.py:250 msgid "Account activation" msgstr "Accountaktivierung" +#: .\hosting\views.py:254 msgid "Your account has been activated." msgstr "Dein Account wurde aktiviert." +#: .\hosting\views.py:255 msgid "You can now" msgstr "Du kannst dich nun" +#: .\hosting\views.py:262 msgid "Sorry. Your request is invalid." msgstr "Entschuldigung, deine Anfrage ist ungültig." +#: .\hosting\views.py:572 msgid "Invalid credit card" msgstr "Ungültige Kreditkarte" +#: .\hosting\views.py:685 msgid "Confirm Order" msgstr "Bestellung Bestätigen" +#: .\hosting\views.py:823 msgid "" "We could not find the requested VM. Please " "contact Data Center Light Support." msgstr "Kontaktiere den Data Center Light Support." +#~ msgid "Your SSH Keys" +#~ msgstr "Deine SSH Keys" + #~ msgid "Approved" #~ msgstr "Akzeptiert" diff --git a/hosting/templates/hosting/user_keys.html b/hosting/templates/hosting/user_keys.html index fd93b66f..31332929 100644 --- a/hosting/templates/hosting/user_keys.html +++ b/hosting/templates/hosting/user_keys.html @@ -3,7 +3,7 @@ {% block content %}
-

 {% trans "Your SSH Keys" %}

+

 {% trans "My SSH Keys" %}

{% if messages %}
{% for message in messages %} From f5bf44ad7b1673dbf6a02949bee588abeeaf31cd Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 31 Aug 2017 20:16:57 +0530 Subject: [PATCH 089/336] translation fix --- hosting/locale/de/LC_MESSAGES/django.po | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index 3351aee3..31eab321 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-24 11:12+0000\n" +"POT-Creation-Date: 2017-08-31 20:08+0530\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -278,9 +278,6 @@ msgstr "" msgid "See Invoice" msgstr "Rechnung" -msgid "View Detail" -msgstr "Details anzeigen" - msgid "Page" msgstr "" @@ -323,9 +320,8 @@ msgid "" "You are not making any payment yet. After submitting your card information, " "you will be taken to the Confirm Order Page." msgstr "" -"Es wird noch keine Bezahlung vorgenommen. Die Bezahlung wird erst " -"ausgelöst, nachdem Du die Bestellung auf der nächsten Seite bestätigt " -"hast." +"Es wird noch keine Bezahlung vorgenommen. Die Bezahlung wird erst ausgelöst, " +"nachdem Du die Bestellung auf der nächsten Seite bestätigt hast." msgid "Submit" msgstr "Absenden" @@ -470,6 +466,9 @@ msgstr "" msgid "CREATE VM" msgstr "NEUE VM" +msgid "View Detail" +msgstr "Details anzeigen" + msgid "login" msgstr "Einloggen" From d1f5ead9a062c102787051a0d70e8f34c5b94be4 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 31 Aug 2017 21:26:39 +0530 Subject: [PATCH 090/336] place order msg posiotion fixed for mobile --- .../templates/datacenterlight/order_detail.html | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/datacenterlight/templates/datacenterlight/order_detail.html b/datacenterlight/templates/datacenterlight/order_detail.html index 7a882236..2fcddd51 100644 --- a/datacenterlight/templates/datacenterlight/order_detail.html +++ b/datacenterlight/templates/datacenterlight/order_detail.html @@ -72,13 +72,15 @@

- {% csrf_token %} -
-

{% blocktrans with vm_price=request.session.specs.price %}By clicking "Place order" this plan will charge your credit card account with the fee of {{ vm_price }}CHF/month{% endblocktrans %}.

-
- + {% csrf_token %} +
+
+

{% blocktrans with vm_price=request.session.specs.price %}By clicking "Place order" this plan will charge your credit card account with the fee of {{ vm_price }}CHF/month{% endblocktrans %}.

+
+ +
From a68d9dd749b7abca6dc40102f6715bd7a5953b66 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 31 Aug 2017 21:34:12 +0530 Subject: [PATCH 091/336] msg margin increased --- hosting/static/hosting/css/landing-page.css | 1 + 1 file changed, 1 insertion(+) diff --git a/hosting/static/hosting/css/landing-page.css b/hosting/static/hosting/css/landing-page.css index a6c14844..3672552e 100644 --- a/hosting/static/hosting/css/landing-page.css +++ b/hosting/static/hosting/css/landing-page.css @@ -536,6 +536,7 @@ a.unlink:hover { .dcl-place-order-text{ font-size: 13px; color: #808080; + margin-bottom: 15px; } .dcl-order-table-total .tbl-total { From 5a46cea307dec77be5ca2c8f41675cd30782ae5c Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Thu, 31 Aug 2017 18:20:02 +0200 Subject: [PATCH 092/336] Added functionality to add keys on creating a new vm --- hosting/views.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/hosting/views.py b/hosting/views.py index 768bc19e..e34faaf8 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -29,6 +29,7 @@ from opennebula_api.serializers import VirtualMachineSerializer, \ VirtualMachineTemplateSerializer from utils.forms import BillingAddressForm, PasswordResetRequestForm, \ UserBillingAddressForm +from utils.hosting_utils import get_all_public_keys from utils.mailer import BaseEmail from utils.stripe_utils import StripeUtils from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, \ @@ -666,6 +667,19 @@ class PaymentVMView(LoginRequiredMixin, FormView): email = BaseEmail(**email_data) email.send() + # try to see if we have the IP and that if the ssh keys can + # be configured + new_host = manager.get_primary_ipv4(vm_id) + if new_host is not None: + public_keys = get_all_public_keys(owner) + keys = [{'value': key, 'state': True} for key in public_keys] + logger.debug( + "Calling configure on {host} for {num_keys} keys".format( + host=new_host, num_keys=len(keys))) + # Let's delay the task by 75 seconds to be sure that we run + # the cdist configure after the host is up + manager.manage_public_key(keys, hosts=[new_host], countdown=75) + return HttpResponseRedirect( "{url}?{query_params}".format( url=reverse('hosting:orders', kwargs={'pk': order.id}), @@ -858,7 +872,8 @@ class VirtualMachineView(LoginRequiredMixin, View): 'order': HostingOrder.objects.get( vm_id=serializer.data['vm_id']) } - except: + except Exception as ex: + logger.debug("Exception generated {}".format(str(ex))) pass return render(request, self.template_name, context) From 9a56b66282d94909b1303e58485ff513fea5294c Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Thu, 31 Aug 2017 18:33:07 +0200 Subject: [PATCH 093/336] Added function get_all_hosts --- opennebula_api/models.py | 59 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 6 deletions(-) diff --git a/opennebula_api/models.py b/opennebula_api/models.py index 7a8a333a..1e199016 100644 --- a/opennebula_api/models.py +++ b/opennebula_api/models.py @@ -218,6 +218,33 @@ class OpenNebulaManager(): except: raise ConnectionRefusedError + def get_primary_ipv4(self, vm_id): + """ + Returns the primary IPv4 of the given vm. + To be changed later. + + :return: An IP address string, if it exists else returns None + """ + all_ipv4s = self.get_vm_ipv4_addresses(vm_id) + if len(all_ipv4s) > 0: + return all_ipv4s[0] + else: + return None + + def get_vm_ipv4_addresses(self, vm_id): + """ + Returns a list of IPv4 addresses of the given vm + + :param vm_id: The ID of the vm + :return: + """ + ipv4s = [] + vm = self.get_vm(vm_id) + for nic in vm.template.nics: + if hasattr(nic, 'ip'): + ipv4s.append(nic.ip) + return ipv4s + def create_vm(self, template_id, specs, ssh_key=None, vm_name=None): template = self.get_template(template_id) @@ -505,25 +532,46 @@ class OpenNebulaManager(): except ConnectionError: raise - def manage_public_key(self, keys): + def manage_public_key(self, keys, hosts=None, countdown=0): """ - A function that manages the supplied keys in the authorized_keys file + A function that manages the supplied keys in the + authorized_keys file of the given list of hosts. If hosts + parameter is not supplied, all hosts of this customer + will be configured with the supplied keys - :param keys: List of ssh keys that are to be added/removed + :param keys: A list of ssh keys that are to be added/removed A key should be a dict of the form { 'value': 'sha-.....', # public key as string 'state': True # whether key is to be added or } # removed + :param hosts: A list of hosts IP addresses + :param countdown: Parameter to be passed to celery apply_async + Allows to delay a task by `countdown` number of seconds :return: """ + if hosts is None: + hosts = self.get_all_hosts() + + if len(hosts) > 0 and len(keys) > 0: + save_ssh_key.apply_async( + (hosts, keys, CdistUtilts.get_cdist_index()), + countdown=countdown) + else: + logger.debug("Keys and hosts are empty, so not managing any keys") + + def get_all_hosts(self): + """ + A utility function to obtain all hosts of this owner + :return: A list of hosts IP addresses, empty if none exist + """ owner = CustomUser.objects.filter( email=self.email).first() all_orders = HostingOrder.objects.filter(customer__user=owner) + hosts = [] if len(all_orders) > 0: logger.debug("The user {} has 1 or more VMs. We need to configure " "the ssh keys.".format(self.email)) - hosts = [] for order in all_orders: try: vm = self.get_vm(order.vm_id) @@ -533,8 +581,7 @@ class OpenNebulaManager(): except WrongIdError: logger.debug( "VM with ID {} does not exist".format(order.vm_id)) - if len(keys) > 0: - save_ssh_key.delay(hosts, keys, CdistUtilts.get_cdist_index()) else: logger.debug("The user {} has no VMs. We don't need to configure " "the ssh keys.".format(self.email)) + return hosts From 75a778e65f031463b26f6bab0d08cf402879719d Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Thu, 31 Aug 2017 18:35:19 +0200 Subject: [PATCH 094/336] Added hosting_utils.py --- utils/hosting_utils.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 utils/hosting_utils.py diff --git a/utils/hosting_utils.py b/utils/hosting_utils.py new file mode 100644 index 00000000..d73fb6b0 --- /dev/null +++ b/utils/hosting_utils.py @@ -0,0 +1,11 @@ +from hosting.models import UserHostingKey + + +def get_all_public_keys(customer): + """ + Returns all the public keys of the user + :param customer: The customer whose public keys are needed + :return: A list of public keys + """ + return UserHostingKey.objects.filter( + user__site__customuser=customer).values_list("public_key", flat=True) From ab31ad37d3dd74a047c103c4a5556270e4005a40 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Thu, 31 Aug 2017 18:57:05 +0200 Subject: [PATCH 095/336] Not passing index to cdist configure --- opennebula_api/models.py | 5 +---- utils/cdist_utils.py | 26 -------------------------- utils/tasks.py | 24 ++++++++---------------- 3 files changed, 9 insertions(+), 46 deletions(-) delete mode 100644 utils/cdist_utils.py diff --git a/opennebula_api/models.py b/opennebula_api/models.py index 1e199016..c812c7cd 100644 --- a/opennebula_api/models.py +++ b/opennebula_api/models.py @@ -7,7 +7,6 @@ from oca.exceptions import OpenNebulaException from oca.pool import WrongNameError, WrongIdError from hosting.models import HostingOrder -from utils.cdist_utils import CdistUtilts from utils.models import CustomUser from utils.tasks import save_ssh_key from .exceptions import KeyExistsError, UserExistsError, UserCredentialError @@ -554,9 +553,7 @@ class OpenNebulaManager(): hosts = self.get_all_hosts() if len(hosts) > 0 and len(keys) > 0: - save_ssh_key.apply_async( - (hosts, keys, CdistUtilts.get_cdist_index()), - countdown=countdown) + save_ssh_key.apply_async((hosts, keys), countdown=countdown) else: logger.debug("Keys and hosts are empty, so not managing any keys") diff --git a/utils/cdist_utils.py b/utils/cdist_utils.py deleted file mode 100644 index 801a02d5..00000000 --- a/utils/cdist_utils.py +++ /dev/null @@ -1,26 +0,0 @@ -import cdist.integration as cdist_integration - - -class CdistUtilts(): - @staticmethod - def get_cdist_index(): - """ - Returns the next available instance index. - This is useful while making simultaneous configurations of - the same host. - :return: the next available index - """ - cdist_instance_index = cdist_integration.instance_index - cdist_index = next(cdist_instance_index) - return cdist_index - - @staticmethod - def free_cdist_index(cdist_index): - """ - Frees up the index that was used during configuring a host - using cdist. - :param cdist_index: The index to be freed - :return: - """ - cdist_instance_index = cdist_integration.instance_index - cdist_instance_index.free(cdist_index) diff --git a/utils/tasks.py b/utils/tasks.py index d261ff31..5c6aaeab 100644 --- a/utils/tasks.py +++ b/utils/tasks.py @@ -6,7 +6,6 @@ from django.conf import settings from django.core.mail import EmailMessage from dynamicweb.celery import app -from utils.cdist_utils import CdistUtilts logger = get_task_logger(__name__) @@ -26,7 +25,7 @@ def send_plain_email_task(self, email_data): @app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES) -def save_ssh_key(self, hosts, keys, index): +def save_ssh_key(self, hosts, keys): """ Saves ssh key into the VMs of a user using cdist @@ -36,21 +35,16 @@ def save_ssh_key(self, hosts, keys, index): 'value': 'sha-.....', # public key as string 'state': True # whether key is to be added or } # removed - :param index: An integer that uniquely identifies simultaneous cdist - configurations being run on a host - """ logger.debug("""Running save_ssh_key task for Hosts: {hosts_str} - Keys: {keys_str} - index: {index}""".format(hosts_str=", ".join(hosts), - keys_str=", ".join([ - "{value}->{state}".format( - value=key.get('value'), - state=str( - key.get('state'))) - for key in keys]), - index=index) + Keys: {keys_str}""".format(hosts_str=", ".join(hosts), + keys_str=", ".join([ + "{value}->{state}".format( + value=key.get('value'), + state=str( + key.get('state'))) + for key in keys])) ) return_value = True with tempfile.NamedTemporaryFile(delete=True) as tmp_manifest: @@ -67,10 +61,8 @@ def save_ssh_key(self, hosts, keys, index): try: configure_hosts_simple(hosts, tmp_manifest.name, - index=index, verbose=cdist.argparse.VERBOSE_TRACE) except Exception as cdist_exception: logger.error(cdist_exception) return_value = False - CdistUtilts.free_cdist_index(index) return return_value From cf673c8f90bd3ab0e1d67c4487897f26a28a1b4d Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 31 Aug 2017 22:47:47 +0530 Subject: [PATCH 096/336] icon added to my settings page --- hosting/locale/de/LC_MESSAGES/django.po | 4 ++-- hosting/static/hosting/css/virtual-machine.css | 10 ++++++++++ hosting/templates/hosting/settings.html | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index a0f8506a..87bf0493 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -363,7 +363,7 @@ msgid "EDIT CARD" msgstr "" msgid "Add a new Card." -msgstr "" +msgstr "Neue Kreditkarte hinzufügen." msgid "" "Please fill in your credit card information below. We are using
-

{% trans "My Settings" %}

+

{% trans "My Settings" %}

From eafabf29a7adae66c77231f3f0b2c20605617099 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 31 Aug 2017 23:05:06 +0530 Subject: [PATCH 097/336] remove card link style bugfix --- hosting/static/hosting/css/commons.css | 5 ++++- hosting/static/hosting/js/initial.js | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/hosting/static/hosting/css/commons.css b/hosting/static/hosting/css/commons.css index efa47ec6..98a75d71 100644 --- a/hosting/static/hosting/css/commons.css +++ b/hosting/static/hosting/css/commons.css @@ -297,7 +297,9 @@ padding: 8px 0; display: block; } -.caps-link:hover { +.caps-link:hover, +.caps-link:focus, +.caps-link:active { color: #627388; fill: #627388; text-decoration: none; @@ -312,6 +314,7 @@ height: 11px; position: relative; top: 1px; + vertical-align: baseline; } .settings-container .caps-link { diff --git a/hosting/static/hosting/js/initial.js b/hosting/static/hosting/js/initial.js index 2f00c996..400de367 100644 --- a/hosting/static/hosting/js/initial.js +++ b/hosting/static/hosting/js/initial.js @@ -17,7 +17,6 @@ $( document ).ready(function() { * Replace all SVG images with inline SVG */ $('.svg-img').each(function() { - console.log('asa') var $img = $(this); var imgID = $img.attr('id'); var imgClass = $img.attr('class'); From e94f9a5d2b8cb40b32d435f90601570c7c3f93fc Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 31 Aug 2017 23:42:18 +0530 Subject: [PATCH 098/336] dropdown style fix --- datacenterlight/views.py | 4 ++-- hosting/static/hosting/css/landing-page.css | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/datacenterlight/views.py b/datacenterlight/views.py index f7a07c7e..1be73eda 100644 --- a/datacenterlight/views.py +++ b/datacenterlight/views.py @@ -380,8 +380,8 @@ class PaymentOrderView(FormView): @cache_control(no_cache=True, must_revalidate=True, no_store=True) def get(self, request, *args, **kwargs): - if 'specs' not in request.session or 'user' not in request.session: - return HttpResponseRedirect(reverse('datacenterlight:index')) + # if 'specs' not in request.session or 'user' not in request.session: + # return HttpResponseRedirect(reverse('datacenterlight:index')) return self.render_to_response(self.get_context_data()) def post(self, request, *args, **kwargs): diff --git a/hosting/static/hosting/css/landing-page.css b/hosting/static/hosting/css/landing-page.css index e49a7563..dca4b560 100644 --- a/hosting/static/hosting/css/landing-page.css +++ b/hosting/static/hosting/css/landing-page.css @@ -90,7 +90,16 @@ h6 { @media(min-width: 768px) { .navbar-right .highlights-dropdown .dropdown-menu { border: 1px solid #fff; - box-shadow: -8px 13px 31px -8px rgba(77, 77, 77, 0.75); + } + .navbar-right .highlights-dropdown .dropdown-menu:before { + content: ''; + display: block; + height: 1px; + background: #e7e7e7; + position: absolute; + top: -1px; + left: -1px; + right: -1px; } } .navbar-right .highlights-dropdown .dropdown-menu > li > a{ From 6933ad590090a343b4df85c76f3675044544f355 Mon Sep 17 00:00:00 2001 From: PCoder Date: Fri, 1 Sep 2017 00:51:58 +0530 Subject: [PATCH 099/336] Updated requirements for cdist --- requirements.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 639ac881..c6ac7d48 100644 --- a/requirements.txt +++ b/requirements.txt @@ -96,5 +96,4 @@ pyflakes==1.5.0 billiard==3.5.0.3 amqp==2.2.1 vine==1.1.4 -#git+https://github.com/pcoder/cdist.git#egg=cdist-web -file:///home/mravi/gitprojects/cdist-pcoder/cdist/#egg=cdist-web +git+https://github.com/darko-poljak/cdist.git@cdist-web#egg=cdist-web From 8eca78b0435714a1a8921f190bf2e8984b73b97f Mon Sep 17 00:00:00 2001 From: PCoder Date: Fri, 1 Sep 2017 00:58:30 +0530 Subject: [PATCH 100/336] Reorganized imports hosting/forms.py --- hosting/forms.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hosting/forms.py b/hosting/forms.py index 8541e1f1..cf8dd9b7 100644 --- a/hosting/forms.py +++ b/hosting/forms.py @@ -1,8 +1,8 @@ +import base64 import datetime import logging - -import base64 import struct + from django import forms from django.contrib.auth import authenticate from django.utils.translation import ugettext_lazy as _ From 5550867870875ede08b45548099b2c13554e0826 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Fri, 1 Sep 2017 01:27:44 +0530 Subject: [PATCH 101/336] navbar link hash fixed, footer links fixed --- .../static/datacenterlight/js/main.js | 16 +++- .../datacenterlight/includes/_footer.html | 77 ++++++++----------- .../datacenterlight/includes/_navbar.html | 9 +-- datacenterlight/views.py | 6 +- hosting/static/hosting/css/landing-page.css | 2 +- hosting/static/hosting/js/initial.js | 29 ++++++- 6 files changed, 80 insertions(+), 59 deletions(-) diff --git a/datacenterlight/static/datacenterlight/js/main.js b/datacenterlight/static/datacenterlight/js/main.js index 79422844..c508d76d 100644 --- a/datacenterlight/static/datacenterlight/js/main.js +++ b/datacenterlight/static/datacenterlight/js/main.js @@ -86,6 +86,20 @@ } function _initNavUrl() { + $('.url-init').each(function(idx, el) { + var $this = $(el); + var currentPath = window.location.pathname; + var thisPaths = $this.attr('href').split('#') + if ($this.hasClass('dropdown-toggle') && window.matchMedia("(max-width: 767px)").matches) { + $this.removeClass('url-init'); + $this.attr('href', ''); + } else if ($('#'+thisPaths[1]).length) { + $this.removeClass('url-init').addClass('url'); + $this.attr('href', '#' + thisPaths[1]); + } else { + $this.removeClass('url-init'); + } + }); $('.url').click(function(event) { event.preventDefault(); var href = $(this).attr('href'); @@ -95,8 +109,6 @@ $('html, body').animate({ scrollTop: $(href).offset().top }, 1000); - } else { - window.location.href = '/datacenterlight' + href; } }); } diff --git a/datacenterlight/templates/datacenterlight/includes/_footer.html b/datacenterlight/templates/datacenterlight/includes/_footer.html index f77c3385..76c2c16e 100644 --- a/datacenterlight/templates/datacenterlight/includes/_footer.html +++ b/datacenterlight/templates/datacenterlight/includes/_footer.html @@ -2,52 +2,37 @@ {% get_current_language as LANGUAGE_CODE %} diff --git a/datacenterlight/templates/datacenterlight/includes/_navbar.html b/datacenterlight/templates/datacenterlight/includes/_navbar.html index 0cf4908e..3b8656ac 100644 --- a/datacenterlight/templates/datacenterlight/includes/_navbar.html +++ b/datacenterlight/templates/datacenterlight/includes/_navbar.html @@ -16,12 +16,11 @@
From a72287be5c7edf318993c44424dc76ca239b3602 Mon Sep 17 00:00:00 2001 From: PCoder Date: Fri, 1 Sep 2017 01:32:31 +0530 Subject: [PATCH 103/336] Changed a string format --- opennebula_api/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opennebula_api/models.py b/opennebula_api/models.py index c812c7cd..c115f225 100644 --- a/opennebula_api/models.py +++ b/opennebula_api/models.py @@ -350,8 +350,8 @@ class OpenNebulaManager(): return template_pool except ConnectionRefusedError: logger.info( - '''Could not connect to host: {host} via protocol \ - {protocol}'''.format( + """Could not connect to host: {host} via protocol + {protocol}""".format( host=settings.OPENNEBULA_DOMAIN, protocol=settings.OPENNEBULA_PROTOCOL) ) From b1baf564dbc741ff88a37aa21d0d6e3e314ad697 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Fri, 1 Sep 2017 02:05:24 +0530 Subject: [PATCH 104/336] navbar-header clickable, contact href fixed, highlights focus color fixed --- .../static/datacenterlight/css/landing-page.css | 4 ++++ .../templates/datacenterlight/includes/_navbar.html | 2 +- hosting/static/hosting/css/landing-page.css | 5 +++++ hosting/static/hosting/css/user_keys.css | 8 ++++---- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/datacenterlight/static/datacenterlight/css/landing-page.css b/datacenterlight/static/datacenterlight/css/landing-page.css index 9d83a88f..c329dcc5 100755 --- a/datacenterlight/static/datacenterlight/css/landing-page.css +++ b/datacenterlight/static/datacenterlight/css/landing-page.css @@ -972,6 +972,10 @@ tech-sub-sec h2 { .navbar-default .navbar-nav>.open>a:focus, .navbar-default .navbar-nav>.open>a:hover { background: transparent; +} +.navbar-transparent .navbar-nav>.open>a, +.navbar-transparent .navbar-nav>.open>a:focus, +.navbar-transparent .navbar-nav>.open>a:hover { color: #fff; } diff --git a/datacenterlight/templates/datacenterlight/includes/_navbar.html b/datacenterlight/templates/datacenterlight/includes/_navbar.html index 3b8656ac..9774cd29 100644 --- a/datacenterlight/templates/datacenterlight/includes/_navbar.html +++ b/datacenterlight/templates/datacenterlight/includes/_navbar.html @@ -27,7 +27,7 @@ {% trans "Why Data Center Light?" %}
  • - {% trans "Contact" %} + {% trans "Contact" %}
  • {% if LANGUAGE_CODE == 'en-us'%} diff --git a/hosting/static/hosting/css/landing-page.css b/hosting/static/hosting/css/landing-page.css index 1d61a2b4..8c6e5e2d 100644 --- a/hosting/static/hosting/css/landing-page.css +++ b/hosting/static/hosting/css/landing-page.css @@ -51,6 +51,11 @@ h6 { box-shadow: 0 3px 3px -2px hsla(0,0%,78%,.72); } +.navbar-default .navbar-header { + position: relative; + z-index: 1; +} + .navbar-transparent { background: transparent; border: none; diff --git a/hosting/static/hosting/css/user_keys.css b/hosting/static/hosting/css/user_keys.css index 7935344f..4b788da6 100644 --- a/hosting/static/hosting/css/user_keys.css +++ b/hosting/static/hosting/css/user_keys.css @@ -163,8 +163,8 @@ /* margin-left: 0; */ } .col-md-12, .col-sm-12{ - padding-left: 5px; - padding-right: 5px; + /*padding-left: 5px;*/ + /*padding-right: 5px;*/ } } @media (max-width: 360px){ @@ -172,8 +172,8 @@ /* width: 100% !important; */ } .container { - padding-right: 5px; - padding-left: 5px; + /*padding-right: 5px; + padding-left: 5px;*/ } } .dashboard-choice-container { From ffa0abee34cde736fe269dbdad3a3122b3d6f9f0 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Fri, 1 Sep 2017 02:16:18 +0530 Subject: [PATCH 105/336] contact link fix --- datacenterlight/templates/datacenterlight/includes/_navbar.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datacenterlight/templates/datacenterlight/includes/_navbar.html b/datacenterlight/templates/datacenterlight/includes/_navbar.html index 9774cd29..ee791648 100644 --- a/datacenterlight/templates/datacenterlight/includes/_navbar.html +++ b/datacenterlight/templates/datacenterlight/includes/_navbar.html @@ -27,7 +27,7 @@ {% trans "Why Data Center Light?" %}
  • - {% trans "Contact" %} + {% trans "Contact" %}
  • {% if LANGUAGE_CODE == 'en-us'%} From 1bc78ceb5da49586672bd1a5bf9e3a7555abf187 Mon Sep 17 00:00:00 2001 From: PCoder Date: Fri, 1 Sep 2017 02:33:31 +0530 Subject: [PATCH 106/336] Added save_ssh_key_error_handler --- opennebula_api/models.py | 5 +++-- utils/tasks.py | 20 +++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/opennebula_api/models.py b/opennebula_api/models.py index c115f225..f88f3b15 100644 --- a/opennebula_api/models.py +++ b/opennebula_api/models.py @@ -8,7 +8,7 @@ from oca.pool import WrongNameError, WrongIdError from hosting.models import HostingOrder from utils.models import CustomUser -from utils.tasks import save_ssh_key +from utils.tasks import save_ssh_key, save_ssh_key_error_handler from .exceptions import KeyExistsError, UserExistsError, UserCredentialError logger = logging.getLogger(__name__) @@ -553,7 +553,8 @@ class OpenNebulaManager(): hosts = self.get_all_hosts() if len(hosts) > 0 and len(keys) > 0: - save_ssh_key.apply_async((hosts, keys), countdown=countdown) + save_ssh_key.apply_async((hosts, keys), countdown=countdown, + link_error=save_ssh_key_error_handler.s()) else: logger.debug("Keys and hosts are empty, so not managing any keys") diff --git a/utils/tasks.py b/utils/tasks.py index 5c6aaeab..1844bc16 100644 --- a/utils/tasks.py +++ b/utils/tasks.py @@ -1,6 +1,8 @@ -import cdist import tempfile + +import cdist from cdist.integration import configure_hosts_simple +from celery.result import AsyncResult from celery.utils.log import get_task_logger from django.conf import settings from django.core.mail import EmailMessage @@ -66,3 +68,19 @@ def save_ssh_key(self, hosts, keys): logger.error(cdist_exception) return_value = False return return_value + + +@app.task +def save_ssh_key_error_handler(uuid): + result = AsyncResult(uuid) + exc = result.get(propagate=False) + logger.error('Task {0} raised exception: {1!r}\n{2!r}'.format( + uuid, exc, result.traceback)) + email_data = { + 'subject': "[celery error] Save SSH key error {0}".format(uuid), + 'from_email': settings.DCL_SUPPORT_FROM_ADDRESS, + 'to': ['info@ungleich.ch'], + 'body': "Task Id: {0}\nResult: {1}\nTraceback: {2}".format( + uuid, exc, result.traceback), + } + send_plain_email_task(email_data) From 79cf5e416c372890e3066fca9933d79abd33ed9b Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Fri, 1 Sep 2017 23:56:01 +0530 Subject: [PATCH 107/336] modal btn min width, modal width increased --- hosting/static/hosting/css/commons.css | 18 ++++++---- hosting/static/hosting/css/user_keys.css | 1 + hosting/templates/hosting/user_keys.html | 35 +++++++------------ .../hosting/virtual_machine_detail.html | 6 ++-- 4 files changed, 28 insertions(+), 32 deletions(-) diff --git a/hosting/static/hosting/css/commons.css b/hosting/static/hosting/css/commons.css index cb7cdd8e..699f417c 100644 --- a/hosting/static/hosting/css/commons.css +++ b/hosting/static/hosting/css/commons.css @@ -109,7 +109,7 @@ text-align: center; width: 100%; float: left; - padding: 0px 40px 15px 30px; + padding: 0px 30px 15px 30px; } .modal-body .modal-icon i { font-size: 80px; @@ -117,7 +117,7 @@ color: #999; } .modal-body .modal-icon { - margin-bottom: 10px; + margin-bottom: 15px; } .modal-title { margin: 0; @@ -128,9 +128,12 @@ font-weight: 300; } .modal-text { - padding-top: 15px; + padding-top: 5px; font-size: 16px; } +.modal-text p:not(:last-of-type){ + margin-bottom: 5px; +} .modal-footer { border-top: 0px solid #e5e5e5; width: 100%; @@ -138,11 +141,8 @@ text-align: center; padding: 15px 15px; } -.modal-footer button[type="submit"] { - min-width: 80px; -} @media (min-width: 1300px) { - .modal-dialog {/* top: 30%; */width: 35%;} + .modal-dialog {/* top: 30%; */width: 40%;} } @media (max-width: 1299px) { .modal-dialog { @@ -239,4 +239,8 @@ -webkit-transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); transform: translate(-50%,-50%); +} + +.btn-wide { + min-width: 100px; } \ No newline at end of file diff --git a/hosting/static/hosting/css/user_keys.css b/hosting/static/hosting/css/user_keys.css index 4b788da6..6039ae0e 100644 --- a/hosting/static/hosting/css/user_keys.css +++ b/hosting/static/hosting/css/user_keys.css @@ -299,6 +299,7 @@ } .key_contain { word-break: break-all; + margin-bottom: 15px; } .custom_form_button{ border-radius: 0; diff --git a/hosting/templates/hosting/user_keys.html b/hosting/templates/hosting/user_keys.html index 31332929..1cfb880c 100644 --- a/hosting/templates/hosting/user_keys.html +++ b/hosting/templates/hosting/user_keys.html @@ -33,8 +33,7 @@
  • + logo From 817e0b73ebf27824041aa2a66cbe7d6ef01ae45e Mon Sep 17 00:00:00 2001 From: ARvind Tiwari Date: Tue, 1 Aug 2017 20:54:42 +0530 Subject: [PATCH 003/336] removed navbar toggle btn for unregistered users --- hosting/templates/hosting/base_short.html | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/hosting/templates/hosting/base_short.html b/hosting/templates/hosting/base_short.html index 5cce6533..5120bde9 100644 --- a/hosting/templates/hosting/base_short.html +++ b/hosting/templates/hosting/base_short.html @@ -56,12 +56,14 @@
    {% if request.user.is_authenticated %} From a3d5c81530709d75322f0dfa935729309e02eead Mon Sep 17 00:00:00 2001 From: ARvind Tiwari Date: Thu, 3 Aug 2017 02:35:44 +0530 Subject: [PATCH 004/336] navbar fixed on payment, order-success, order-confirmation --- .../static/datacenterlight/js/main.js | 2 +- .../datacenterlight/includes/_navbar.html | 108 ++++++++---------- .../datacenterlight/order_detail.html | 5 + hosting/static/hosting/js/initial.js | 33 +++++- hosting/templates/hosting/payment.html | 6 +- 5 files changed, 93 insertions(+), 61 deletions(-) diff --git a/datacenterlight/static/datacenterlight/js/main.js b/datacenterlight/static/datacenterlight/js/main.js index 5594fe11..2c5333ae 100644 --- a/datacenterlight/static/datacenterlight/js/main.js +++ b/datacenterlight/static/datacenterlight/js/main.js @@ -88,7 +88,7 @@ function _initNavUrl() { $('.url').click(function(event) { event.preventDefault(); - var href = $(this).attr('data-url'); + var href = $(this).attr('href'); $('.navbar-collapse').removeClass('in'); $('.navbar-collapse').addClass('collapsing'); if ($(href).length) { diff --git a/datacenterlight/templates/datacenterlight/includes/_navbar.html b/datacenterlight/templates/datacenterlight/includes/_navbar.html index 99f6a4a8..87534b66 100644 --- a/datacenterlight/templates/datacenterlight/includes/_navbar.html +++ b/datacenterlight/templates/datacenterlight/includes/_navbar.html @@ -1,7 +1,10 @@ -{% load staticfiles i18n%} {% get_current_language as LANGUAGE_CODE %} {% load custom_tags %} +{% load staticfiles i18n%} +{% load custom_tags %} +{% get_current_language as LANGUAGE_CODE %} +
    \ No newline at end of file diff --git a/datacenterlight/templates/datacenterlight/order_detail.html b/datacenterlight/templates/datacenterlight/order_detail.html index 8b1180bb..f3c946a1 100644 --- a/datacenterlight/templates/datacenterlight/order_detail.html +++ b/datacenterlight/templates/datacenterlight/order_detail.html @@ -2,6 +2,11 @@ {% load staticfiles bootstrap3 %} {% load i18n %} {% load custom_tags %} + +{% block navbar %} + {% include "datacenterlight/includes/_navbar.html" %} +{% endblock navbar %} + {% block content %}
    diff --git a/hosting/static/hosting/js/initial.js b/hosting/static/hosting/js/initial.js index da2887c6..9d1cabe8 100644 --- a/hosting/static/hosting/js/initial.js +++ b/hosting/static/hosting/js/initial.js @@ -1,5 +1,34 @@ -$( document ).ready(function() { +// also declared in datacenterlight/js/main.js +function _initNavUrl() { + $('.url').click(function(event) { + event.preventDefault(); + var href = $(this).attr('href'); + $('.navbar-collapse').removeClass('in'); + $('.navbar-collapse').addClass('collapsing'); + if ($(href).length) { + $('html, body').animate({ + scrollTop: $(href).offset().top + }, 1000); + } else { + window.location.href = '/datacenterlight' + href; + } + }); +} +/* --------------------------------------------- + Nav panel classic + --------------------------------------------- */ +if (window.matchMedia("(min-width: 767px)").matches) { + $('ul.nav li.dropdown').hover(function() { + $(this).find('.dropdown-menu').stop(true, true).fadeIn(500); + }, function() { + $(this).find('.dropdown-menu').stop(true, true).fadeOut(500); + }); +} else { + /* the viewport is less than 400 pixels wide */ +} + +$( document ).ready(function() { $('[data-toggle="tooltip"]').tooltip(); @@ -13,4 +42,6 @@ $( document ).ready(function() { }, 1000); }); + _initNavUrl(); + }); \ No newline at end of file diff --git a/hosting/templates/hosting/payment.html b/hosting/templates/hosting/payment.html index d03713c1..8b4f2800 100644 --- a/hosting/templates/hosting/payment.html +++ b/hosting/templates/hosting/payment.html @@ -1,5 +1,10 @@ {% extends "hosting/base_short.html" %} {% load staticfiles bootstrap3 i18n %} + +{% block navbar %} + {% include "datacenterlight/includes/_navbar.html" %} +{% endblock navbar %} + {% block content %} @@ -190,7 +195,6 @@ window.hasCreditcard = true; })(); - {%endif%} {%endblock%} From 3b575b47e2db74f145d7b715b8122c25d8352c53 Mon Sep 17 00:00:00 2001 From: ARvind Tiwari Date: Thu, 3 Aug 2017 22:28:20 +0530 Subject: [PATCH 005/336] navbar right margin --- hosting/static/hosting/css/commons.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hosting/static/hosting/css/commons.css b/hosting/static/hosting/css/commons.css index 78bfd827..60866831 100644 --- a/hosting/static/hosting/css/commons.css +++ b/hosting/static/hosting/css/commons.css @@ -1,3 +1,7 @@ +.navbar-right { + margin-right: 10px; +} + .dashboard-container { padding-top:70px; padding-bottom: 70px; width: 90%; From 8edbd29fad99225e57efe1277ba0c000da699770 Mon Sep 17 00:00:00 2001 From: ARvind Tiwari Date: Thu, 3 Aug 2017 23:18:58 +0530 Subject: [PATCH 006/336] navbar made white, dropdown fix --- .../datacenterlight/includes/_navbar.html | 3 ++- datacenterlight/views.py | 4 +-- hosting/static/hosting/css/commons.css | 6 +++-- hosting/static/hosting/css/landing-page.css | 22 ++++++++++++++++ utils/migrations/0006_auto_20170728_1702.py | 25 +++++++++++++++++++ 5 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 utils/migrations/0006_auto_20170728_1702.py diff --git a/datacenterlight/templates/datacenterlight/includes/_navbar.html b/datacenterlight/templates/datacenterlight/includes/_navbar.html index 87534b66..0fd6af9a 100644 --- a/datacenterlight/templates/datacenterlight/includes/_navbar.html +++ b/datacenterlight/templates/datacenterlight/includes/_navbar.html @@ -18,7 +18,8 @@
    xi&%tq{sTM(17QQXT22Zv@h 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�r(aJ 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 d3)lz{Xfc9M412p diff --git a/datacenterlight/static/datacenterlight/fonts/Lato/OFL.txt b/datacenterlight/static/datacenterlight/fonts/Lato/OFL.txt deleted file mode 100755 index f8ca7bc3..00000000 --- a/datacenterlight/static/datacenterlight/fonts/Lato/OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -Copyright (c) 2010-2014 by tyPoland Lukasz Dziedzic (team@latofonts.com) with Reserved Font Name "Lato" -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/hosting/static/hosting/css/landing-page.css b/hosting/static/hosting/css/landing-page.css index 7a569dc8..b649bd8e 100644 --- a/hosting/static/hosting/css/landing-page.css +++ b/hosting/static/hosting/css/landing-page.css @@ -4,20 +4,6 @@ * For details, see http://www.apache.org/licenses/LICENSE-2.0. */ -/*@font-face { - font-family: 'Lato-Regular'; - src: url('../fonts/Lato/Lato-Regular.ttf'); -} - -@font-face { - src: url('../fonts/Lato/Lato-Black.ttf'); -} - -@font-face { - font-family: 'Lato-Light'; - src: url('../fonts/Lato/Lato-Light.ttf'); -}*/ - body, html { width: 100%; diff --git a/hosting/static/hosting/fonts/Lato/Lato-Black.ttf b/hosting/static/hosting/fonts/Lato/Lato-Black.ttf deleted file mode 100755 index 6848db0d1acf36f95ee7dc0130eab9e6fb1d19a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114588 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 Fe*xhL&Wiv5 diff --git a/hosting/static/hosting/fonts/Lato/Lato-BlackItalic.ttf b/hosting/static/hosting/fonts/Lato/Lato-BlackItalic.ttf deleted file mode 100755 index 5decf12973e90db8a9014fe9d42a67d8a03f9489..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111616 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 m_%pydy;VPc2G@oNm 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 diff --git a/hosting/static/hosting/fonts/Lato/Lato-Bold.ttf b/hosting/static/hosting/fonts/Lato/Lato-Bold.ttf deleted file mode 100755 index 74343694e2b2114272f38b1124813b972cb592e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121788 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 diff --git a/hosting/static/hosting/fonts/Lato/Lato-BoldItalic.ttf b/hosting/static/hosting/fonts/Lato/Lato-BoldItalic.ttf deleted file mode 100755 index 684aacf5b4f354722926994506d3737ef62f0283..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120312 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

    Z=%$3AMJQjIz``+vbDT- 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 diff --git a/hosting/static/hosting/fonts/Lato/Lato-Light.ttf b/hosting/static/hosting/fonts/Lato/Lato-Light.ttf deleted file mode 100755 index a958067a86f46b4b82b6b1ec43fa83f5875f3e43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122524 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

    _@=QvuA-{V9(`#&VJ0E2Y!*g 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

    ask~-O`^ssB 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 diff --git a/hosting/static/hosting/fonts/Lato/Lato-LightItalic.ttf b/hosting/static/hosting/fonts/Lato/Lato-LightItalic.ttf deleted file mode 100755 index 5e45ad9a6c943fc034f8f177d07c552e5fceda77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91600 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 EE{KhEV*mgE diff --git a/hosting/static/hosting/fonts/Lato/Lato-Regular.ttf b/hosting/static/hosting/fonts/Lato/Lato-Regular.ttf deleted file mode 100755 index 04ea8efb1367727b081dea87e63818be0a4d02f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120196 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

    xi&%tq{sTM(17QQXT22Zv@h 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�r(aJ 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 d3)lz{Xfc9M412p diff --git a/hosting/static/hosting/fonts/Lato/OFL.txt b/hosting/static/hosting/fonts/Lato/OFL.txt deleted file mode 100755 index f8ca7bc3..00000000 --- a/hosting/static/hosting/fonts/Lato/OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -Copyright (c) 2010-2014 by tyPoland Lukasz Dziedzic (team@latofonts.com) with Reserved Font Name "Lato" -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. From 6890c821220f0c3b14a46f9851d76ec7c6b1448f Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Tue, 22 Aug 2017 20:45:18 +0530 Subject: [PATCH 026/336] dashboard url, view,template and css added --- hosting/static/hosting/css/dashboard.css | 21 +++++++ .../static/hosting/img/24-hours-support.svg | 61 +++++++++++++++++++ hosting/static/hosting/img/billing.svg | 1 + .../static/hosting/img/dashboard_settings.svg | 50 +++++++++++++++ hosting/static/hosting/img/key.svg | 7 +++ hosting/static/hosting/img/plusVM.svg | 19 ++++++ hosting/templates/hosting/base_short.html | 1 + hosting/templates/hosting/dashboard.html | 10 +++ hosting/urls.py | 29 +++++---- hosting/views.py | 21 ++++++- 10 files changed, 206 insertions(+), 14 deletions(-) create mode 100644 hosting/static/hosting/css/dashboard.css create mode 100644 hosting/static/hosting/img/24-hours-support.svg create mode 100644 hosting/static/hosting/img/billing.svg create mode 100644 hosting/static/hosting/img/dashboard_settings.svg create mode 100644 hosting/static/hosting/img/key.svg create mode 100644 hosting/static/hosting/img/plusVM.svg create mode 100644 hosting/templates/hosting/dashboard.html diff --git a/hosting/static/hosting/css/dashboard.css b/hosting/static/hosting/css/dashboard.css new file mode 100644 index 00000000..82332e23 --- /dev/null +++ b/hosting/static/hosting/css/dashboard.css @@ -0,0 +1,21 @@ +.hosting-dashboard:after { + content: ''; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(41, 66, 122, 0.59); + z-index: -1; +} +.hosting-dashboard:before { + content: ''; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: url(../../datacenterlight/img/pattern.jpg) no-repeat center center; + background-size: cover; + z-index: -2; +} \ No newline at end of file diff --git a/hosting/static/hosting/img/24-hours-support.svg b/hosting/static/hosting/img/24-hours-support.svg new file mode 100644 index 00000000..4db05be3 --- /dev/null +++ b/hosting/static/hosting/img/24-hours-support.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hosting/static/hosting/img/billing.svg b/hosting/static/hosting/img/billing.svg new file mode 100644 index 00000000..d002fa6c --- /dev/null +++ b/hosting/static/hosting/img/billing.svg @@ -0,0 +1 @@ +billing icon \ No newline at end of file diff --git a/hosting/static/hosting/img/dashboard_settings.svg b/hosting/static/hosting/img/dashboard_settings.svg new file mode 100644 index 00000000..4044e93a --- /dev/null +++ b/hosting/static/hosting/img/dashboard_settings.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hosting/static/hosting/img/key.svg b/hosting/static/hosting/img/key.svg new file mode 100644 index 00000000..b2bd7bc3 --- /dev/null +++ b/hosting/static/hosting/img/key.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + \ No newline at end of file diff --git a/hosting/static/hosting/img/plusVM.svg b/hosting/static/hosting/img/plusVM.svg new file mode 100644 index 00000000..c6c49316 --- /dev/null +++ b/hosting/static/hosting/img/plusVM.svg @@ -0,0 +1,19 @@ + + + + +VM + Created with Sketch. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hosting/templates/hosting/base_short.html b/hosting/templates/hosting/base_short.html index 847daa37..4dcf5074 100644 --- a/hosting/templates/hosting/base_short.html +++ b/hosting/templates/hosting/base_short.html @@ -24,6 +24,7 @@ + diff --git a/hosting/templates/hosting/dashboard.html b/hosting/templates/hosting/dashboard.html new file mode 100644 index 00000000..4c06f19b --- /dev/null +++ b/hosting/templates/hosting/dashboard.html @@ -0,0 +1,10 @@ +{% extends "hosting/base_short.html" %} +{% load staticfiles bootstrap3 i18n %} + +{% block content %} +
    +
    + +
    +
    +{%endblock%} diff --git a/hosting/urls.py b/hosting/urls.py index ea96af77..e6b6fee3 100644 --- a/hosting/urls.py +++ b/hosting/urls.py @@ -1,17 +1,20 @@ from django.conf.urls import url from django.contrib.auth import views as auth_views -from .views import DjangoHostingView, RailsHostingView, PaymentVMView,\ - NodeJSHostingView, LoginView, SignupView, SignupValidateView, SignupValidatedView, IndexView, \ - OrdersHostingListView, OrdersHostingDetailView, VirtualMachinesPlanListView,\ - VirtualMachineView, OrdersHostingDeleteView, NotificationsView, \ - MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, HostingPricingView,\ - CreateVirtualMachinesView, HostingBillListView, HostingBillDetailView, \ - SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView, SSHKeyChoiceView +from .views import ( + DjangoHostingView, RailsHostingView, PaymentVMView, NodeJSHostingView, + LoginView, SignupView, SignupValidateView, SignupValidatedView, IndexView, + NotificationsView, OrdersHostingListView, OrdersHostingDetailView, + VirtualMachinesPlanListView, VirtualMachineView, OrdersHostingDeleteView, + MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, + HostingPricingView, CreateVirtualMachinesView, HostingBillListView, + HostingBillDetailView, SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView, + SSHKeyChoiceView, DashboardView) urlpatterns = [ url(r'index/?$', IndexView.as_view(), name='index'), url(r'django/?$', DjangoHostingView.as_view(), name='djangohosting'), + url(r'dashboard/?$', DashboardView.as_view(), name='dashboard'), url(r'nodejs/?$', NodeJSHostingView.as_view(), name='nodejshosting'), url(r'rails/?$', RailsHostingView.as_view(), name='railshosting'), url(r'pricing/?$', HostingPricingView.as_view(), name='pricing'), @@ -20,9 +23,12 @@ urlpatterns = [ url(r'orders/(?P\d+)/?$', OrdersHostingDetailView.as_view(), name='orders'), url(r'bills/?$', HostingBillListView.as_view(), name='bills'), url(r'bills/(?P\d+)/?$', HostingBillDetailView.as_view(), name='bills'), - url(r'cancel_order/(?P\d+)/?$', OrdersHostingDeleteView.as_view(), name='delete_order'), - url(r'create_virtual_machine/?$', CreateVirtualMachinesView.as_view(), name='create_virtual_machine'), - url(r'my-virtual-machines/?$', VirtualMachinesPlanListView.as_view(), name='virtual_machines'), + url(r'cancel_order/(?P\d+)/?$', + OrdersHostingDeleteView.as_view(), name='delete_order'), + url(r'create_virtual_machine/?$', CreateVirtualMachinesView.as_view(), + name='create_virtual_machine'), + url(r'my-virtual-machines/?$', + VirtualMachinesPlanListView.as_view(), name='virtual_machines'), url(r'my-virtual-machines/(?P\d+)/?$', VirtualMachineView.as_view(), name='virtual_machines'), url(r'ssh_keys/?$', SSHKeyListView.as_view(), @@ -44,5 +50,6 @@ urlpatterns = [ PasswordResetConfirmView.as_view(), name='reset_password_confirm'), url(r'^logout/?$', auth_views.logout, {'next_page': '/hosting/login?logged_out=true'}, name='logout'), - url(r'^validate/(?P.*)/$', SignupValidatedView.as_view(), name='validate') + url(r'^validate/(?P.*)/$', + SignupValidatedView.as_view(), name='validate') ] diff --git a/hosting/views.py b/hosting/views.py index 2b4c8d21..394fd04c 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -40,6 +40,18 @@ CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a backend connection error. please try again in a few minutes." +class DashboardView(View): + template_name = "hosting/dashboard.html" + + def get_context_data(self, **kwargs): + context = {} + return context + + def get(self, request, *args, **kwargs): + context = self.get_context_data() + return render(request, self.template_name, context) + + class DjangoHostingView(ProcessVMSelectionMixin, View): template_name = "hosting/django.html" @@ -244,7 +256,8 @@ class SignupValidatedView(SignupValidateView): lurl=login_url) else: home_url = 'Data Center Light' + reverse('datacenterlight:index') + \ + '">Data Center Light' message = '{sorry_message}
    {go_back_to} {hurl}'.format( sorry_message=_("Sorry. Your request is invalid."), go_back_to=_('Go back to'), @@ -557,7 +570,8 @@ class PaymentVMView(LoginRequiredMixin, FormView): token=token) if not customer: msg = _("Invalid credit card") - messages.add_message(self.request, messages.ERROR, msg, extra_tags='make_charge_error') + messages.add_message( + self.request, messages.ERROR, msg, extra_tags='make_charge_error') return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error') # Create Billing Address @@ -571,7 +585,8 @@ class PaymentVMView(LoginRequiredMixin, FormView): # Check if the payment was approved if not charge_response.get('response_object') and not charge_response.get('paid'): msg = charge_response.get('error') - messages.add_message(self.request, messages.ERROR, msg, extra_tags='make_charge_error') + messages.add_message( + self.request, messages.ERROR, msg, extra_tags='make_charge_error') return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error') charge = charge_response.get('response_object') From 12844ac0d917df6bce34a0ddfe9ee887ef25b44d Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Tue, 22 Aug 2017 21:35:30 +0530 Subject: [PATCH 027/336] dashboard page --- hosting/static/hosting/css/dashboard.css | 56 ++++++++++++++++++++++++ hosting/static/hosting/img/connected.svg | 45 +++++++++++++++++++ hosting/static/hosting/img/plusVM.svg | 8 ++-- hosting/static/hosting/img/settings.svg | 53 ++++++++++++++++++++++ hosting/static/hosting/js/initial.js | 37 ++++++++++++++++ hosting/templates/hosting/dashboard.html | 42 +++++++++++++++++- 6 files changed, 236 insertions(+), 5 deletions(-) create mode 100644 hosting/static/hosting/img/connected.svg create mode 100644 hosting/static/hosting/img/settings.svg diff --git a/hosting/static/hosting/css/dashboard.css b/hosting/static/hosting/css/dashboard.css index 82332e23..7a80e162 100644 --- a/hosting/static/hosting/css/dashboard.css +++ b/hosting/static/hosting/css/dashboard.css @@ -18,4 +18,60 @@ background: url(../../datacenterlight/img/pattern.jpg) no-repeat center center; background-size: cover; z-index: -2; +} + +.hosting-dashboard .dashboard-container-head { + color: #fff; + margin-bottom: 25px; +} + +.hosting-dashboard-item { + background: #e9ebee; + box-shadow: 1px 3px 3px rgba(0,0,0,0.5); + padding: 25px; + color: rgba(124, 139, 175, 0.7); + font-size: 19px; +} +.hosting-dashboard-item:hover, +.hosting-dashboard-item:focus, +.hosting-dashboard-item:active { + text-decoration: none; + color: #7c8baf; + background: #fff; +} + +.hosting-dashboard-item h2 { + margin: 0; + font-size: 19px; + padding-bottom: 10px; + border-bottom: 2px solid #acb5cf; + margin-bottom: 25px; +} + +.hosting-dashboard-image { + height: 100px; + fill: #8b9bb7; + display: flex; + align-items: center; +} +.hosting-dashboard-image img, +.hosting-dashboard-image svg { + width: 100%; + height: 100%; + max-height: 65px; +} +.hosting-dashboard-image img { + opacity: 0.2; +} + +@media (min-width: 768px) { + .hosting-dashboard-content { + display: flex; + justify-content: space-between; + flex-wrap: wrap; + } + .hosting-dashboard-item { + width: 32%; + margin-bottom: 15px; + } } \ No newline at end of file diff --git a/hosting/static/hosting/img/connected.svg b/hosting/static/hosting/img/connected.svg new file mode 100644 index 00000000..fa3875dc --- /dev/null +++ b/hosting/static/hosting/img/connected.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hosting/static/hosting/img/plusVM.svg b/hosting/static/hosting/img/plusVM.svg index c6c49316..2c1bb8f8 100644 --- a/hosting/static/hosting/img/plusVM.svg +++ b/hosting/static/hosting/img/plusVM.svg @@ -4,10 +4,10 @@ +VM Created with Sketch. - - - - + + + + diff --git a/hosting/static/hosting/img/settings.svg b/hosting/static/hosting/img/settings.svg new file mode 100644 index 00000000..61dc8613 --- /dev/null +++ b/hosting/static/hosting/img/settings.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hosting/static/hosting/js/initial.js b/hosting/static/hosting/js/initial.js index da2887c6..de36db7c 100644 --- a/hosting/static/hosting/js/initial.js +++ b/hosting/static/hosting/js/initial.js @@ -13,4 +13,41 @@ $( document ).ready(function() { }, 1000); }); + /* + * Replace all SVG images with inline SVG + */ + $('.svg-img').each(function(){ + console.log('asa') + var $img = $(this); + var imgID = $img.attr('id'); + var imgClass = $img.attr('class'); + var imgURL = $img.attr('src'); + + jQuery.get(imgURL, function(data) { + // Get the SVG tag, ignore the rest + var $svg = jQuery(data).find('svg'); + + // Add replaced image's ID to the new SVG + if(typeof imgID !== 'undefined') { + $svg = $svg.attr('id', imgID); + } + // Add replaced image's classes to the new SVG + if(typeof imgClass !== 'undefined') { + $svg = $svg.attr('class', imgClass+' replaced-svg'); + } + + // Remove any invalid XML tags as per http://validator.w3.org + $svg = $svg.removeAttr('xmlns:a'); + + // Check if the viewport is set, if the viewport is not set the SVG wont't scale. + if(!$svg.attr('viewBox') && $svg.attr('height') && $svg.attr('width')) { + $svg.attr('viewBox', '0 0 ' + $svg.attr('height') + ' ' + $svg.attr('width')) + } + + // Replace image with new SVG + $img.replaceWith($svg); + + }, 'xml'); + + }); }); \ No newline at end of file diff --git a/hosting/templates/hosting/dashboard.html b/hosting/templates/hosting/dashboard.html index 4c06f19b..562b3671 100644 --- a/hosting/templates/hosting/dashboard.html +++ b/hosting/templates/hosting/dashboard.html @@ -4,7 +4,47 @@ {% block content %} {%endblock%} From 9bbcd1b9abe40691974eb279c049c0d978801b77 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Tue, 22 Aug 2017 21:40:40 +0530 Subject: [PATCH 028/336] translations compiled --- hosting/locale/de/LC_MESSAGES/django.po | 75 +++++++++++++++++-------- 1 file changed, 53 insertions(+), 22 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index 3cc30292..54ddb6a8 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-16 04:19+0530\n" +"POT-Creation-Date: 2017-08-22 21:38+0530\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -172,6 +172,27 @@ msgstr "CHF/Monat" msgid "Start VM" msgstr "VM jetzt starten" +msgid "My Dashboard" +msgstr "" + +msgid "Create VM" +msgstr "" + +msgid "My VMs" +msgstr "" + +msgid "My SSH Keys" +msgstr "" + +msgid "My Bills" +msgstr "" + +msgid "My Settings" +msgstr "" + +msgid "Support / Contact" +msgstr "" + #, python-format msgid "" "You're receiving this email because you requested a password reset for your " @@ -300,13 +321,21 @@ msgstr "" "\"https://stripe.com\" target=\"_blank\">Stripe für die Bezahlung und " "speichern keine Informationen in unserer Datenbank." +#, fuzzy +#| msgid "" +#| "\n" +#| " You are not making any " +#| "payment yet. After submitting your card\n" +#| " information, you will be " +#| "taken to the Confirm Order Page.\n" +#| " " msgid "" "\n" -" You are not making any payment yet. " -"After submitting your card\n" -" information, you will be taken to " -"the Confirm Order Page.\n" -" " +" You are not making any " +"payment yet. After submitting your card\n" +" information, you will be " +"taken to the Confirm Order Page.\n" +" " msgstr "" "\n" "Es wird noch keine Bezahlung vorgenommen. Nach der Eingabe Deiner " @@ -328,19 +357,6 @@ msgstr "" msgid "Card Type" msgstr "Kartentyp" -msgid "" -"\n" -" You are not making any payment " -"yet. After submitting your card\n" -" information, you will be taken " -"to the Confirm Order Page.\n" -" " -msgstr "" -"\n" -"Es wird noch keine Bezahlung vorgenommen. Nach der Eingabe Deiner " -"Kreditkateninformationen wirst du auf die Bestellbestätigungsseite " -"weitergeleitet." - msgid "Processing" msgstr "Weiter" @@ -474,6 +490,11 @@ msgstr "Du kannst dich nun" msgid "Sorry. Your request is invalid." msgstr "Entschuldigung, deine Anfrage ist ungültig." +#, fuzzy +#| msgid "Credit Card" +msgid "Invalid credit card" +msgstr "Kreditkarte" + msgid "Confirm Order" msgstr "Bestellung Bestätigen" @@ -482,6 +503,19 @@ msgid "" "contact Data Center Light Support." msgstr "" +#~ msgid "" +#~ "\n" +#~ " You are not making any payment " +#~ "yet. After submitting your card\n" +#~ " information, you will be taken to " +#~ "the Confirm Order Page.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ "Es wird noch keine Bezahlung vorgenommen. Nach der Eingabe Deiner " +#~ "Kreditkateninformationen wirst du auf die Bestellbestätigungsseite " +#~ "weitergeleitet." + #~ msgid "Ipv4" #~ msgstr "IPv4" @@ -597,9 +631,6 @@ msgstr "" #~ msgid "Generate Key Pair" #~ msgstr "Schlüsselpaar generieren" -#~ msgid "Created at" -#~ msgstr "Erstellt am" - #~ msgid "Billing Amount" #~ msgstr "Rechnungsbetrag" From 27a233ffc41e9d9882fc03b1e129dbe069bfb315 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Wed, 23 Aug 2017 18:14:33 +0530 Subject: [PATCH 029/336] translations added --- hosting/locale/de/LC_MESSAGES/django.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index 54ddb6a8..0206e8b1 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -173,25 +173,25 @@ msgid "Start VM" msgstr "VM jetzt starten" msgid "My Dashboard" -msgstr "" +msgstr "Mein Dashboard" msgid "Create VM" -msgstr "" +msgstr "VM erstellen" msgid "My VMs" -msgstr "" +msgstr "Meine VMs" msgid "My SSH Keys" -msgstr "" +msgstr "Meine SSH Keys" msgid "My Bills" -msgstr "" +msgstr "Meine Rechnungen" msgid "My Settings" -msgstr "" +msgstr "Meine Einstellungen" msgid "Support / Contact" -msgstr "" +msgstr "Support / Kontakt" #, python-format msgid "" From 4179d622aa95f8a5ea707ce07364ac4934289e64 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Wed, 23 Aug 2017 23:46:59 +0530 Subject: [PATCH 030/336] changed border color for error input --- hosting/static/hosting/css/landing-page.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosting/static/hosting/css/landing-page.css b/hosting/static/hosting/css/landing-page.css index 7a569dc8..c5ef9489 100644 --- a/hosting/static/hosting/css/landing-page.css +++ b/hosting/static/hosting/css/landing-page.css @@ -760,7 +760,6 @@ a.unlink:hover { .has-error.checkbox label, .has-error.radio-inline label, .has-error.checkbox-inline label, -.has-error .form-control, .has-error .form-control-feedback, .alert-danger, .list-group-item-danger, @@ -770,6 +769,7 @@ a.list-group-item-danger:focus, .panel-danger > .panel-heading { color: #eb4d5c; } +.has-error .form-control, .has-error .input-group-addon { color: #eb4d5c; border-color: #eb4d5c; From fc0ed904472ce0aeeb8e6406f8aa0d944ca87377 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 24 Aug 2017 00:39:47 +0530 Subject: [PATCH 031/336] background and margin fix --- hosting/static/hosting/css/dashboard.css | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hosting/static/hosting/css/dashboard.css b/hosting/static/hosting/css/dashboard.css index 7a80e162..ac5634c0 100644 --- a/hosting/static/hosting/css/dashboard.css +++ b/hosting/static/hosting/css/dashboard.css @@ -1,6 +1,6 @@ .hosting-dashboard:after { content: ''; - position: absolute; + position: fixed; top: 0; bottom: 0; left: 0; @@ -10,7 +10,7 @@ } .hosting-dashboard:before { content: ''; - position: absolute; + position: fixed; top: 0; bottom: 0; left: 0; @@ -18,6 +18,7 @@ background: url(../../datacenterlight/img/pattern.jpg) no-repeat center center; background-size: cover; z-index: -2; + height: 100%; } .hosting-dashboard .dashboard-container-head { @@ -31,6 +32,8 @@ padding: 25px; color: rgba(124, 139, 175, 0.7); font-size: 19px; + display: block; + margin-bottom: 15px; } .hosting-dashboard-item:hover, .hosting-dashboard-item:focus, @@ -72,6 +75,5 @@ } .hosting-dashboard-item { width: 32%; - margin-bottom: 15px; } } \ No newline at end of file From cfb1a303a17030b659fab0abebb461c5fd2c68bc Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 24 Aug 2017 19:56:30 +0530 Subject: [PATCH 032/336] new icons --- hosting/static/hosting/css/dashboard.css | 2 +- .../static/hosting/img/24-hours-support.svg | 76 ++++--------------- hosting/static/hosting/img/billing.svg | 14 +++- .../static/hosting/img/dashboard_settings.svg | 64 ++++------------ hosting/static/hosting/img/key.svg | 17 +++-- hosting/static/hosting/img/plusVM.svg | 21 ++--- hosting/static/hosting/img/vm.svg | 17 +++-- 7 files changed, 73 insertions(+), 138 deletions(-) diff --git a/hosting/static/hosting/css/dashboard.css b/hosting/static/hosting/css/dashboard.css index ac5634c0..3974d4c5 100644 --- a/hosting/static/hosting/css/dashboard.css +++ b/hosting/static/hosting/css/dashboard.css @@ -30,7 +30,7 @@ background: #e9ebee; box-shadow: 1px 3px 3px rgba(0,0,0,0.5); padding: 25px; - color: rgba(124, 139, 175, 0.7); + color: rgba(124, 139, 175, 0.8); font-size: 19px; display: block; margin-bottom: 15px; diff --git a/hosting/static/hosting/img/24-hours-support.svg b/hosting/static/hosting/img/24-hours-support.svg index 4db05be3..e7ca37ff 100644 --- a/hosting/static/hosting/img/24-hours-support.svg +++ b/hosting/static/hosting/img/24-hours-support.svg @@ -1,61 +1,15 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + Slice 23 + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/hosting/static/hosting/img/billing.svg b/hosting/static/hosting/img/billing.svg index d002fa6c..67f928ea 100644 --- a/hosting/static/hosting/img/billing.svg +++ b/hosting/static/hosting/img/billing.svg @@ -1 +1,13 @@ -billing icon \ No newline at end of file + + + + Slice 23 + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/hosting/static/hosting/img/dashboard_settings.svg b/hosting/static/hosting/img/dashboard_settings.svg index 4044e93a..38130c74 100644 --- a/hosting/static/hosting/img/dashboard_settings.svg +++ b/hosting/static/hosting/img/dashboard_settings.svg @@ -1,50 +1,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + Slice 23 + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/hosting/static/hosting/img/key.svg b/hosting/static/hosting/img/key.svg index b2bd7bc3..4a1a39b8 100644 --- a/hosting/static/hosting/img/key.svg +++ b/hosting/static/hosting/img/key.svg @@ -1,7 +1,12 @@ - - - - - Svg Vector Icons : http://www.onlinewebfonts.com/icon - + + + + Slice 23 + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/hosting/static/hosting/img/plusVM.svg b/hosting/static/hosting/img/plusVM.svg index 2c1bb8f8..cd4ed759 100644 --- a/hosting/static/hosting/img/plusVM.svg +++ b/hosting/static/hosting/img/plusVM.svg @@ -1,19 +1,14 @@ - - - +VM + + + Slice 23 Created with Sketch. - - - - - - - - + - - + + + + + \ No newline at end of file diff --git a/hosting/static/hosting/img/vm.svg b/hosting/static/hosting/img/vm.svg index 376e7d0a..696619b9 100644 --- a/hosting/static/hosting/img/vm.svg +++ b/hosting/static/hosting/img/vm.svg @@ -1,7 +1,12 @@ - - - - - Svg Vector Icons : http://www.onlinewebfonts.com/icon - + + + + Slice 23 + Created with Sketch. + + + + + + \ No newline at end of file From c87e2cd36b334efe81640344d606c9dbadd55776 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 24 Aug 2017 20:28:02 +0530 Subject: [PATCH 033/336] hosting settings url, view and template added --- hosting/urls.py | 4 +++- hosting/views.py | 20 ++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/hosting/urls.py b/hosting/urls.py index 23709904..90e32c14 100644 --- a/hosting/urls.py +++ b/hosting/urls.py @@ -7,7 +7,8 @@ from .views import DjangoHostingView, RailsHostingView, PaymentVMView,\ VirtualMachineView, OrdersHostingDeleteView, NotificationsView, \ MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, HostingPricingView,\ CreateVirtualMachinesView, HostingBillListView, HostingBillDetailView, \ - SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView, SSHKeyChoiceView + SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView, SSHKeyChoiceView, \ + SettingsView urlpatterns = [ url(r'index/?$', IndexView.as_view(), name='index'), @@ -16,6 +17,7 @@ urlpatterns = [ url(r'rails/?$', RailsHostingView.as_view(), name='railshosting'), url(r'pricing/?$', HostingPricingView.as_view(), name='pricing'), url(r'payment/?$', PaymentVMView.as_view(), name='payment'), + url(r'settings/?$', SettingsView.as_view(), name='settings'), url(r'orders/?$', OrdersHostingListView.as_view(), name='orders'), url(r'orders/(?P\d+)/?$', OrdersHostingDetailView.as_view(), name='orders'), url(r'bills/?$', HostingBillListView.as_view(), name='bills'), diff --git a/hosting/views.py b/hosting/views.py index 0747f134..dba74c8f 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -40,6 +40,20 @@ CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a backend connection error. please try again in a few minutes." +class SettingsView(View): + template_name = "hosting/settings.html" + + def get_context_data(self, **kwargs): + context = { + + } + return context + + def get(self, request, *args, **kwargs): + context = self.get_context_data() + return render(request, self.template_name, context) + + class DjangoHostingView(ProcessVMSelectionMixin, View): template_name = "hosting/django.html" @@ -558,7 +572,8 @@ class PaymentVMView(LoginRequiredMixin, FormView): token=token) if not customer: msg = _("Invalid credit card") - messages.add_message(self.request, messages.ERROR, msg, extra_tags='make_charge_error') + messages.add_message( + self.request, messages.ERROR, msg, extra_tags='make_charge_error') return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error') # Create Billing Address @@ -572,7 +587,8 @@ class PaymentVMView(LoginRequiredMixin, FormView): # Check if the payment was approved if not charge_response.get('response_object'): msg = charge_response.get('error') - messages.add_message(self.request, messages.ERROR, msg, extra_tags='make_charge_error') + messages.add_message( + self.request, messages.ERROR, msg, extra_tags='make_charge_error') return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error') charge = charge_response.get('response_object') From 9be42f3fd4bf0ebc03277ad7835f45cfae16676d Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 24 Aug 2017 20:36:00 +0530 Subject: [PATCH 034/336] links added to the boxes --- hosting/templates/hosting/dashboard.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hosting/templates/hosting/dashboard.html b/hosting/templates/hosting/dashboard.html index 562b3671..4464c5ca 100644 --- a/hosting/templates/hosting/dashboard.html +++ b/hosting/templates/hosting/dashboard.html @@ -8,25 +8,25 @@

    {% trans "My Dashboard" %}

    - +

    {% trans "Create VM" %}

    - +

    {% trans "My VMs" %}

    - +

    {% trans "My SSH Keys" %}

    - +

    {% trans "My Bills" %}

    From daa50d467238fcba442d17d6bf7525e3f9a3a36a Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 24 Aug 2017 22:11:15 +0530 Subject: [PATCH 035/336] settings page design --- hosting/static/hosting/css/commons.css | 28 +++++ hosting/templates/hosting/settings.html | 151 ++++++++++++++++++++++++ hosting/views.py | 60 +++++++--- 3 files changed, 225 insertions(+), 14 deletions(-) create mode 100644 hosting/templates/hosting/settings.html diff --git a/hosting/static/hosting/css/commons.css b/hosting/static/hosting/css/commons.css index 1ebae4b4..e8ba9ceb 100644 --- a/hosting/static/hosting/css/commons.css +++ b/hosting/static/hosting/css/commons.css @@ -6,6 +6,11 @@ max-width: 768px; } +.dashboard-container.wide { + padding-top: 90px; + max-width: 980px; +} + .content-dashboard{ min-height: calc(100vh - 70px); width: 80%; @@ -233,4 +238,27 @@ -webkit-transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); transform: translate(-50%,-50%); +} + +.settings-container { + padding: 8px; +} + +.settings-container h4 { + margin-bottom: 15px; + color: #999; +} + +.settings-container .card-expiry-element, +.settings-container .card-cvc-element { + padding: 0 15px; +} + +.settings-container .stripe-payment-btn { + float: none; + position: static; +} + +.credit-card-form { + max-width: 360px; } \ No newline at end of file diff --git a/hosting/templates/hosting/settings.html b/hosting/templates/hosting/settings.html new file mode 100644 index 00000000..c540918e --- /dev/null +++ b/hosting/templates/hosting/settings.html @@ -0,0 +1,151 @@ +{% extends "hosting/base_short.html" %} +{% load staticfiles bootstrap3 i18n %} + +{% block content %} +
    +
    +

    {% trans "My Settings" %}

    +
    + +
    +
    +
    +

    {%trans "Billing Address"%}

    +
    +
    + {% for field in form %} + {% csrf_token %} + {% bootstrap_field field show_label=False type='fields'%} + {% endfor %} +
    +
    +
    +

    {%trans "Credit Card"%}

    +
    +
    +
    + {% if credit_card_data.last4 %} +
    +
    Credit Card
    +
    Last 4: *****{{credit_card_data.last4}}
    +
    Type: {{credit_card_data.cc_brand}}
    + +
    +
    +
    + {% if not messages and not form.non_field_errors %} +

    + {% blocktrans %}You are not making any payment yet. After submitting your card information, you will be taken to the Confirm Order Page.{% endblocktrans %} +

    + {% endif %} +
    + {% for message in messages %} + {% if 'failed_payment' or 'make_charge_error' in message.tags %} +
    • +

      {{ message|safe }}

      +
    + {% endif %} + {% endfor %} + {% for error in form.non_field_errors %} +

    + {{ error|escape }} +

    + {% endfor %} +
    +
    +
    +
    + +
    +
    +
    + {% endif %} +

    {% trans "Add new Card" %}

    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    + +
    + {% if not messages and not form.non_field_errors %} +

    + {% blocktrans %}You are not making any payment here. After submitting your card information, you will be taken to the Confirm Order Page.{% endblocktrans %} +

    + {% endif %} +
    + {% for message in messages %} + {% if 'failed_payment' or 'make_charge_error' in message.tags %} +
    • +

      {{ message|safe }}

      +
    + {% endif %} + {% endfor %} + + {% for error in form.non_field_errors %} +

    + {{ error|escape }} +

    + {% endfor %} +
    +
    +
    + +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    +
    +
    + + + {% if stripe_key %} + {% get_current_language as LANGUAGE_CODE %} + + {%endif%} + + {% if credit_card_data.last4 and credit_card_data.cc_brand %} + + {%endif%} +{%endblock%} diff --git a/hosting/views.py b/hosting/views.py index dba74c8f..a860dfc9 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -40,20 +40,6 @@ CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a backend connection error. please try again in a few minutes." -class SettingsView(View): - template_name = "hosting/settings.html" - - def get_context_data(self, **kwargs): - context = { - - } - return context - - def get(self, request, *args, **kwargs): - context = self.get_context_data() - return render(request, self.template_name, context) - - class DjangoHostingView(ProcessVMSelectionMixin, View): template_name = "hosting/django.html" @@ -489,6 +475,52 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView): return self.form_invalid(form) +class SettingsView(LoginRequiredMixin, FormView): + template_name = "hosting/settings.html" + login_url = reverse_lazy('hosting:login') + form_class = BillingAddressForm + + def get_form_kwargs(self): + current_billing_address = self.request.user.billing_addresses.first() + form_kwargs = super(SettingsView, self).get_form_kwargs() + if not current_billing_address: + return form_kwargs + + form_kwargs.update({ + 'initial': { + 'cardholder_name': current_billing_address.cardholder_name, + 'street_address': current_billing_address.street_address, + 'city': current_billing_address.city, + 'postal_code': current_billing_address.postal_code, + 'country': current_billing_address.country, + } + }) + return form_kwargs + + def get_context_data(self, **kwargs): + context = super(SettingsView, self).get_context_data(**kwargs) + # Get user + user = self.request.user + + # Get user last order + last_hosting_order = HostingOrder.objects.filter( + customer__user=user).last() + + # If user has already an hosting order, get the credit card data from + # it + if last_hosting_order: + credit_card_data = last_hosting_order.get_cc_data() + context.update({ + 'credit_card_data': credit_card_data if credit_card_data else None, + }) + + context.update({ + 'stripe_key': settings.STRIPE_API_PUBLIC_KEY + }) + + return context + + class PaymentVMView(LoginRequiredMixin, FormView): template_name = 'hosting/payment.html' login_url = reverse_lazy('hosting:login') From 0ee0d96e0fc30b188a2b4ce292b0b9606b48e78d Mon Sep 17 00:00:00 2001 From: PCoder Date: Sat, 26 Aug 2017 02:56:05 +0530 Subject: [PATCH 036/336] Added default text plugin for the cms page title --- dynamicweb/settings/base.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dynamicweb/settings/base.py b/dynamicweb/settings/base.py index 08ce457d..4950da5e 100644 --- a/dynamicweb/settings/base.py +++ b/dynamicweb/settings/base.py @@ -317,6 +317,15 @@ CMS_PLACEHOLDER_CONF = { }, ] }, + 'datacenterlight_cms_page_title': { + 'name': _('Data Center Light Title Text'), + 'default_plugins': [ + { + 'plugin_type': 'TextPlugin', + 'values': {'body': '

    '}, + }, + ] + }, } CACHES = { From 0be3266ed36324eefc87cc7dbc7e3f2b2d13254a Mon Sep 17 00:00:00 2001 From: PCoder Date: Sat, 26 Aug 2017 20:46:51 +0530 Subject: [PATCH 037/336] Moved cms toolbar before title tag --- datacenterlight/templates/datacenterlight/base.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/datacenterlight/templates/datacenterlight/base.html b/datacenterlight/templates/datacenterlight/base.html index 671d894e..18ce14eb 100644 --- a/datacenterlight/templates/datacenterlight/base.html +++ b/datacenterlight/templates/datacenterlight/base.html @@ -10,9 +10,10 @@ - - Data Center Light - - {% block title %}VM hosting made in Switzerland{% endblock %} + {% cms_toolbar %} + + {% block title %}{% page_attribute page_title %}{% endblock %} + @@ -41,7 +42,6 @@ - {% cms_toolbar %} {% include "datacenterlight/includes/_navbar.html" %} From af713a0e965ea46a28fb44ba818ffad825cc9631 Mon Sep 17 00:00:00 2001 From: PCoder Date: Sat, 26 Aug 2017 20:49:17 +0530 Subject: [PATCH 038/336] cms_page.html: Added placeholder for title tag --- datacenterlight/templates/datacenterlight/cms_page.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/datacenterlight/templates/datacenterlight/cms_page.html b/datacenterlight/templates/datacenterlight/cms_page.html index f42528e4..7b43c02b 100644 --- a/datacenterlight/templates/datacenterlight/cms_page.html +++ b/datacenterlight/templates/datacenterlight/cms_page.html @@ -1,10 +1,12 @@ {% extends "datacenterlight/base.html" %} {% load staticfiles cms_tags sekizai_tags %} +{% block title %} +{% placeholder 'datacenterlight_cms_page_title_tag' %} +{% endblock %} {% block content %} {% addtoblock "css" %} {% endaddtoblock %} -
    From 67880d5d60789ed201cec0f9cd761fcb5ed52b01 Mon Sep 17 00:00:00 2001 From: PCoder Date: Sat, 26 Aug 2017 20:52:47 +0530 Subject: [PATCH 039/336] Added configuration for datacenterlight_cms_page_title_tag --- dynamicweb/settings/base.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/dynamicweb/settings/base.py b/dynamicweb/settings/base.py index 4950da5e..f6839783 100644 --- a/dynamicweb/settings/base.py +++ b/dynamicweb/settings/base.py @@ -317,12 +317,21 @@ CMS_PLACEHOLDER_CONF = { }, ] }, + 'datacenterlight_cms_page_title_tag': { + 'name': _('Data Center Light Title Tag Text'), + 'default_plugins': [ + { + 'plugin_type': 'TextPlugin', + 'values': {'body': ''}, + }, + ] + }, 'datacenterlight_cms_page_title': { 'name': _('Data Center Light Title Text'), 'default_plugins': [ { 'plugin_type': 'TextPlugin', - 'values': {'body': '

    '}, + 'values': {'body': ''}, }, ] }, From 6c1307d1d389e0dfbc40dac874ecd1f1dcd24e15 Mon Sep 17 00:00:00 2001 From: PCoder Date: Sat, 26 Aug 2017 21:01:21 +0530 Subject: [PATCH 040/336] Reverted back to original title in base.html --- datacenterlight/templates/datacenterlight/base.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/datacenterlight/templates/datacenterlight/base.html b/datacenterlight/templates/datacenterlight/base.html index 18ce14eb..45b30cad 100644 --- a/datacenterlight/templates/datacenterlight/base.html +++ b/datacenterlight/templates/datacenterlight/base.html @@ -11,9 +11,8 @@ {% cms_toolbar %} - - {% block title %}{% page_attribute page_title %}{% endblock %} - + Data Center Light - + {% block title %}VM hosting made in Switzerland{% endblock %} From 464b48000d4d513eded877223d3b6be9f9c5f2ff Mon Sep 17 00:00:00 2001 From: PCoder Date: Sun, 27 Aug 2017 12:52:30 +0530 Subject: [PATCH 041/336] Added cdist requirement --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8d9c68c5..33bd51fa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -95,4 +95,5 @@ pycodestyle==2.3.1 pyflakes==1.5.0 billiard==3.5.0.3 amqp==2.2.1 -vine==1.1.4 \ No newline at end of file +vine==1.1.4 +file:///home/test/projects/Nico/cdist-pcoder/cdist/#egg=cdist-web From cd67bb9938211ea927e37b5431b00788647421df Mon Sep 17 00:00:00 2001 From: PCoder Date: Sat, 19 Aug 2017 06:37:40 +0530 Subject: [PATCH 042/336] Added faq.html cms template --- .../templates/datacenterlight/faq.html | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 datacenterlight/templates/datacenterlight/faq.html diff --git a/datacenterlight/templates/datacenterlight/faq.html b/datacenterlight/templates/datacenterlight/faq.html new file mode 100644 index 00000000..96970ada --- /dev/null +++ b/datacenterlight/templates/datacenterlight/faq.html @@ -0,0 +1,29 @@ +{% extends "datacenterlight/base.html" %} +{% load staticfiles cms_tags %} +{% block content %} +
    +
    +
    +
    +
    +
    +

    {% placeholder 'datacenterlight_faq_title' %}

    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + {% placeholder 'datacenterlight_faq_text' %} +
    +
    +
    +
    +
    +{% endblock %} From 189adbadfb43cbda4b4688578f91b8f45e1dbc28 Mon Sep 17 00:00:00 2001 From: PCoder Date: Sat, 19 Aug 2017 06:39:56 +0530 Subject: [PATCH 043/336] Added cms_tags, sekizai_tags and cms_toolbar --- datacenterlight/templates/datacenterlight/base.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/datacenterlight/templates/datacenterlight/base.html b/datacenterlight/templates/datacenterlight/base.html index fc69a2d5..671d894e 100644 --- a/datacenterlight/templates/datacenterlight/base.html +++ b/datacenterlight/templates/datacenterlight/base.html @@ -1,4 +1,4 @@ -{% load staticfiles i18n%} +{% load staticfiles i18n cms_tags sekizai_tags %} {% get_current_language as LANGUAGE_CODE %} @@ -33,13 +33,15 @@ + {% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %} + {% render_block "js" postprocessor "compressor.contrib.sekizai.compress" %} {% include "google_analytics.html" %} - + {% cms_toolbar %} {% include "datacenterlight/includes/_navbar.html" %} From 8ab52c339855a79100ed762874b81108d8f4b58c Mon Sep 17 00:00:00 2001 From: PCoder Date: Sat, 19 Aug 2017 06:41:29 +0530 Subject: [PATCH 044/336] faq.html now referred as DCL.Faq --- dynamicweb/settings/base.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dynamicweb/settings/base.py b/dynamicweb/settings/base.py index f3d00e47..209ece99 100644 --- a/dynamicweb/settings/base.py +++ b/dynamicweb/settings/base.py @@ -213,6 +213,8 @@ CMS_TEMPLATES = ( # ungleich ('blog_ungleich.html', gettext('Blog')), ('page.html', gettext('Page')), + # dcl + ('datacenterlight/faq.html', gettext('DCL.Faq')), ) DATABASES = { From 8caeaf02172a59eb28f1e817e1608d46ab20180a Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Mon, 21 Aug 2017 17:51:17 +0200 Subject: [PATCH 045/336] Added cms.css and renamed faq.html to cms_page.html --- .../static/datacenterlight/css/cms.css | 47 +++++++++++++++++++ .../{faq.html => cms_page.html} | 6 ++- 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 datacenterlight/static/datacenterlight/css/cms.css rename datacenterlight/templates/datacenterlight/{faq.html => cms_page.html} (80%) diff --git a/datacenterlight/static/datacenterlight/css/cms.css b/datacenterlight/static/datacenterlight/css/cms.css new file mode 100644 index 00000000..abf06501 --- /dev/null +++ b/datacenterlight/static/datacenterlight/css/cms.css @@ -0,0 +1,47 @@ +.dcl-cms_page-full-width { + color: #fff; + text-align: center; + background-image: -ms-linear-gradient(right, #29427A 50%, #4F6699 100%); + background-image: -moz-linear-gradient(right, #29427A 50%, #4F6699 100%); + background-image: -o-linear-gradient(right, #29427A 50%, #4F6699 100%); + background-image: -webkit-gradient(linear, right top, left top, color-stop(50, #29427A), color-stop(100, #4F6699)); + background-image: -webkit-linear-gradient(right, #29427A 50%, #4F6699 100%); + background-image: linear-gradient(to left, #29427A 50%, #4F6699 100%); +} + +.dcl-cms_page-header { + padding: 150px 0 150px 0; + text-align: center; + color: #f8f8f8; + background: url(../img/pattern.jpg) no-repeat center center; + background-size: cover; + position: relative; + background-attachment: fixed; +} + +.dcl-cms_page-header::before { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: rgba(90, 116, 175, 0.85); +} + +#dcl-cms_page-text { + background: #fff; +} + +#dcl-cms_page-text h3 { + font-size: 42px; + width: 70%; +} + +@media (max-width: 767px) { + #dcl-cms_page-text h3 { + font-size: 30px; + line-height: 40px; + width: 100%; + } +} \ No newline at end of file diff --git a/datacenterlight/templates/datacenterlight/faq.html b/datacenterlight/templates/datacenterlight/cms_page.html similarity index 80% rename from datacenterlight/templates/datacenterlight/faq.html rename to datacenterlight/templates/datacenterlight/cms_page.html index 96970ada..6f377749 100644 --- a/datacenterlight/templates/datacenterlight/faq.html +++ b/datacenterlight/templates/datacenterlight/cms_page.html @@ -1,6 +1,10 @@ {% extends "datacenterlight/base.html" %} -{% load staticfiles cms_tags %} +{% load staticfiles cms_tags sekizai_tags %} {% block content %} +{% addtoblock "css" %} + +{% endaddtoblock %} +
    From 597541a2ee9bf51c3d00b7baffb69dc3b0ce5926 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Mon, 21 Aug 2017 17:52:57 +0200 Subject: [PATCH 046/336] Updated _navbar to show menu on other pages except for index and whydcl --- .../datacenterlight/includes/_navbar.html | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/datacenterlight/templates/datacenterlight/includes/_navbar.html b/datacenterlight/templates/datacenterlight/includes/_navbar.html index 99f6a4a8..fe948861 100644 --- a/datacenterlight/templates/datacenterlight/includes/_navbar.html +++ b/datacenterlight/templates/datacenterlight/includes/_navbar.html @@ -29,6 +29,22 @@
  • {% trans "Reliable and light" %}
  • {% trans "Order VM" %}
  • + +
  • + {% trans "Why Data Center Light?" %} +
  • +
  • + {% trans "Contact" %} +
  • + {% else %} +
  • {% trans "Why Data Center Light?" %} From 929d790517c14d52cd30330bceca8b19a78001b6 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Mon, 21 Aug 2017 17:59:56 +0200 Subject: [PATCH 047/336] Renamed faq.html to cms_page.html --- dynamicweb/settings/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamicweb/settings/base.py b/dynamicweb/settings/base.py index 209ece99..08ce457d 100644 --- a/dynamicweb/settings/base.py +++ b/dynamicweb/settings/base.py @@ -214,7 +214,7 @@ CMS_TEMPLATES = ( ('blog_ungleich.html', gettext('Blog')), ('page.html', gettext('Page')), # dcl - ('datacenterlight/faq.html', gettext('DCL.Faq')), + ('datacenterlight/cms_page.html', gettext('Data Center Light')), ) DATABASES = { From b044acab5dd4da6217e0794e981666767532ea98 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Mon, 21 Aug 2017 18:00:41 +0200 Subject: [PATCH 048/336] Refactored class names to better names --- .../templates/datacenterlight/cms_page.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/datacenterlight/templates/datacenterlight/cms_page.html b/datacenterlight/templates/datacenterlight/cms_page.html index 6f377749..f42528e4 100644 --- a/datacenterlight/templates/datacenterlight/cms_page.html +++ b/datacenterlight/templates/datacenterlight/cms_page.html @@ -5,13 +5,13 @@ {% endaddtoblock %} -
    -
    +
    +
    -

    {% placeholder 'datacenterlight_faq_title' %}

    +

    {% placeholder 'datacenterlight_cms_page_title' %}

    @@ -19,12 +19,12 @@
    -
    +
    - {% placeholder 'datacenterlight_faq_text' %} + {% placeholder 'datacenterlight_cms_page_text' %}
    From 6cca92ec3afc07e940162f73d7d444ae4ace668d Mon Sep 17 00:00:00 2001 From: PCoder Date: Mon, 21 Aug 2017 23:16:30 +0530 Subject: [PATCH 049/336] Reformatted dcl's _navbar.html. Attention: Some lines are over 120 char limit as multiline templatetags is not supported. --- .../datacenterlight/includes/_navbar.html | 189 ++++++++++-------- 1 file changed, 106 insertions(+), 83 deletions(-) diff --git a/datacenterlight/templates/datacenterlight/includes/_navbar.html b/datacenterlight/templates/datacenterlight/includes/_navbar.html index fe948861..9df9e227 100644 --- a/datacenterlight/templates/datacenterlight/includes/_navbar.html +++ b/datacenterlight/templates/datacenterlight/includes/_navbar.html @@ -1,90 +1,113 @@ {% load staticfiles i18n%} {% get_current_language as LANGUAGE_CODE %} {% load custom_tags %} \ No newline at end of file + From 28bcef082c8e7e64feef358ced784c58230aef6f Mon Sep 17 00:00:00 2001 From: PCoder Date: Sun, 27 Aug 2017 13:19:05 +0530 Subject: [PATCH 050/336] Merged tiwariav/task/3657/contact_section into task/3740/contact_send_message --- datacenterlight/forms.py | 9 +- .../locale/de/LC_MESSAGES/django.po | 30 ++- datacenterlight/migrations/0007_contactus.py | 24 +++ .../migrations/0008_contactus_field.py | 23 +++ datacenterlight/models.py | 10 +- .../datacenterlight/css/landing-page.css | 183 +++++++++++++----- .../datacenterlight/img/facebook_logo.svg | 11 ++ .../static/datacenterlight/js/main.js | 27 ++- .../datacenterlight/contact_form.html | 50 +++++ .../templates/datacenterlight/index.html | 32 +-- datacenterlight/urls.py | 9 +- datacenterlight/views.py | 33 +++- 12 files changed, 362 insertions(+), 79 deletions(-) create mode 100644 datacenterlight/migrations/0007_contactus.py create mode 100644 datacenterlight/migrations/0008_contactus_field.py create mode 100644 datacenterlight/static/datacenterlight/img/facebook_logo.svg create mode 100644 datacenterlight/templates/datacenterlight/contact_form.html diff --git a/datacenterlight/forms.py b/datacenterlight/forms.py index 33d95c29..3ffe403c 100644 --- a/datacenterlight/forms.py +++ b/datacenterlight/forms.py @@ -1,6 +1,6 @@ from django import forms -from .models import BetaAccess +from .models import BetaAccess, ContactUs class BetaAccessForm(forms.ModelForm): @@ -11,6 +11,13 @@ class BetaAccessForm(forms.ModelForm): model = BetaAccess +class ContactForm(forms.ModelForm): + + class Meta: + fields = ['name', 'email', 'message'] + model = ContactUs + + # class BetaAccessVMForm(forms.ModelForm): # type = forms.CharField(widget=forms.EmailInput()) diff --git a/datacenterlight/locale/de/LC_MESSAGES/django.po b/datacenterlight/locale/de/LC_MESSAGES/django.po index 3853d4e3..c0dc55ca 100644 --- a/datacenterlight/locale/de/LC_MESSAGES/django.po +++ b/datacenterlight/locale/de/LC_MESSAGES/django.po @@ -82,6 +82,24 @@ msgstr "Bitte gib eine gültige E-Mailadresse ein." msgid "Continue" msgstr "Weiter" +msgid "Thank you for contacting us." +msgstr "Nachricht gesendet." + +msgid "Your message was successfully sent to our team." +msgstr "Vielen Dank für Deine Nachricht." + +msgid "Get in touch with us!" +msgstr "Sende uns eine Nachricht." + +msgid "Message" +msgstr "Nachricht" + +msgid "Sorry, there was an unexpected error. Kindly retry." +msgstr "Bitte entschuldige, es scheint ein unerwarteter Fehler aufgetreten zu sein. Versuche es doch bitte noch einmal." + +msgid "SUBMIT" +msgstr "ABSENDEN" + msgid "Thank you for your request." msgstr "Vielen Dank für Ihre Anfrage." @@ -234,15 +252,12 @@ msgstr "" msgid "Affordable VM hosting based in Switzerland" msgstr "Bezahlbares VM Hosting in der Schweiz" +msgid "Contact us" +msgstr "Kontaktiere uns" + msgid "Switzerland " msgstr "Schweiz" -msgid "Questions?" -msgstr "Fragen?" - -msgid "Contact us!" -msgstr "Kontaktiere uns!" - msgid "Confirm Order" msgstr "Bestellung Bestätigen" @@ -412,6 +427,9 @@ msgstr "ist kein gültiger Name" msgid "is not a proper email" msgstr "ist keine gültige E-Mailadresse" +#~ msgid "Questions?" +#~ msgstr "Fragen?" + #~ msgid "Please enter a value greater than or equal to 1." #~ msgstr "Bitte gib einen Wert größer oder gleich 1 ein." diff --git a/datacenterlight/migrations/0007_contactus.py b/datacenterlight/migrations/0007_contactus.py new file mode 100644 index 00000000..12af594c --- /dev/null +++ b/datacenterlight/migrations/0007_contactus.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.4 on 2017-08-19 21:08 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('datacenterlight', '0006_vmtemplate'), + ] + + operations = [ + migrations.CreateModel( + name='ContactUs', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=250)), + ('email', models.CharField(max_length=250)), + ('message', models.TextField()), + ], + ), + ] diff --git a/datacenterlight/migrations/0008_contactus_field.py b/datacenterlight/migrations/0008_contactus_field.py new file mode 100644 index 00000000..ceea8f8f --- /dev/null +++ b/datacenterlight/migrations/0008_contactus_field.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.4 on 2017-08-23 13:06 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +from django.utils.timezone import utc + + +class Migration(migrations.Migration): + + dependencies = [ + ('datacenterlight', '0007_contactus'), + ] + + operations = [ + migrations.AddField( + model_name='contactus', + name='field', + field=models.DateTimeField(auto_now_add=True, default=datetime.datetime(2017, 8, 23, 13, 6, 24, 650869, tzinfo=utc)), + preserve_default=False, + ), + ] diff --git a/datacenterlight/models.py b/datacenterlight/models.py index f7b50a01..e2de41e1 100644 --- a/datacenterlight/models.py +++ b/datacenterlight/models.py @@ -57,7 +57,8 @@ class VMTemplate(models.Model): @classmethod def create(cls, name, opennebula_vm_template_id): - vm_template = cls(name=name, opennebula_vm_template_id=opennebula_vm_template_id) + vm_template = cls( + name=name, opennebula_vm_template_id=opennebula_vm_template_id) return vm_template @@ -71,3 +72,10 @@ class StripePlan(models.Model): def create(cls, stripe_plan_id): stripe_plan = cls(stripe_plan_id=stripe_plan_id) return stripe_plan + + +class ContactUs(models.Model): + name = models.CharField(max_length=250) + email = models.CharField(max_length=250) + message = models.TextField() + field = models.DateTimeField(auto_now_add=True) diff --git a/datacenterlight/static/datacenterlight/css/landing-page.css b/datacenterlight/static/datacenterlight/css/landing-page.css index a5562710..9d83a88f 100755 --- a/datacenterlight/static/datacenterlight/css/landing-page.css +++ b/datacenterlight/static/datacenterlight/css/landing-page.css @@ -323,9 +323,9 @@ button, input, optgroup, select, textarea { padding-top: 50px; /* If you're making other pages, make sure there is 50px of padding to make sure the navbar doesn't overlap content! */ padding-bottom: 50px; - text-align: center; +/* text-align: center; */ color: #f8f8f8; - background: url(../img/banner-bg.jpg) no-repeat center center; + background: url(../img/pattern.jpg) no-repeat center center; background-size: cover; position: relative; } @@ -654,74 +654,161 @@ button, input, optgroup, select, textarea { position: relative; } -.full-contact-section { - background-image: -ms-linear-gradient(right, #29427A 50%, #4F6699 100%); - background-image: -moz-linear-gradient(right, #29427A 50%, #4F6699 100%); - background-image: -o-linear-gradient(right, #29427A 50%, #4F6699 100%); - background-image: -webkit-gradient(linear, right top, left top, color-stop(50, #29427A), color-stop(100, #4F6699)); - background-image: -webkit-linear-gradient(right, #29427A 50%, #4F6699 100%); - background-image: linear-gradient(to left, #29427A 50%, #4F6699 100%); -} - .contact-section { - padding: 60px 0; - color: #fff; + padding: 80px 0; + color: rgba(255,255,255,0.9); background-attachment: fixed; } -.contact-section .card { - text-align: center; - width: 350px; - margin: 0 auto; - background: #fff; - box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); - padding-bottom: 40px; - border-radius: 7px; - color: #4c4444; - box-sizing: border-box; - padding: 45px; - margin-top: -115px; +.contact-section .modal { + color: #333; } -.contact-section .card .social a { - color: #29427A; +.contact-details { + padding-left: 5px; +} + +.contact-section .description{ + font-size: 20px; +} + +.contact-section .social a { + color: #fff; font-size: 45px; } -.contact-section .card .subtitle h3 { - font-size: 30px; - margin-bottom: 23px; +.contact-section .social .fa-facebook { + font-size: 40px; + background: #fff; + border-radius: 100%; + color: #425d89; + width: 40px; + text-align: center; + top: -2px; + position: relative; + left: 10px; +} +.contact-section .social .fa-facebook:before { + font-size: 32px; + position: relative; + top: -1px; + left: -1px; } -.contact-section .card .social a:hover { +.contact-section .social a:hover { text-decoration: none; } -.contact-section .title { - margin-right: auto; - width: 80%; - max-width: 468px; +.contact-section .subtitle h3 { + font-size: 30px; + margin-bottom: 15px; +} + +.contact-section .contact-form-success { + font-size: 18px; + text-align: center; + background-color: rgba(0,0,0,0.2); + padding: 0 15px 35px; + margin-top: 25px; } .contact-section .title h2 { font-size: 65px; margin: 0; - color: #fff; - padding-bottom: 25px; position: relative; - text-align: right; +/* color: #eee; + padding-bottom: 25px; + text-align: right; */ } -.contact-section .title h2::before { - content: ""; +.contact-form .form-group { + border: 0; + margin-bottom: 20px; +} + +.contact-form .form-group label { + letter-spacing: 0.6px; + font-weight: 400; +} + +.contact-form .btn { + min-width: 140px; + background: rgba(23, 23, 23, 0.18); + color: #fff; + border-radius: 4px; + border-width: 2px; + box-shadow: none; + letter-spacing: 2px; + border-color: #fff; +} + +.contact-form .btn.sending { + cursor: wait; +} + +@keyframes sending { + 0% {content: '.';} + 50% {content: '..';} + 100% {content: '...';} +} + +.contact-form .btn.sending:after { + content: '.'; position: absolute; - bottom: 0; - background: #fff; - height: 7px; - width: 70px; - right: 0; + display: inline-block; + text-align: left; + margin-left: 5px; + width: 20px; + animation: sending 1s linear infinite; } +.contact-form .btn:hover, +.contact-form .btn:focus { + background: rgba(23, 23, 23, 0.28); + border-color: #fff; + box-shadow: none; + outline: 0; +} + +.contact-form .form-control { + box-shadow: none; + border-color: #ccc; +} + +.contact-form .errorlist { + list-style: none; + padding: 5px; + margin: 0; + color: rgb(255, 164, 164); + font-weight: 600; + letter-spacing: 0.4px; +} + +.contact-form .form-error { + background: rgba(255,255,255,0.9); + color: #eb4d5c; + padding: 10px; + text-align: center; + margin-bottom: 20px; + border-radius: 5px; +} + +.contact-form .has-error label { + color: #fff; +} + +.contact-form .has-error .form-control { + border: 2px solid #e8534b; + box-shadow: none; +} + +.contact-form .subtitle { + padding: 22px 0 15px; +} + +.contact-form textarea { + resize: none; +} /*Why DCL*/ @@ -1311,9 +1398,9 @@ tech-sub-sec h2 { margin: 0 auto; } .contact-section .title h2 { - font-size: 35px; + font-size: 45px; line-height: 40px; - text-align: center; +/* text-align: center; */ margin-top: 35px; } .contact-section .title h2::before { @@ -1558,4 +1645,4 @@ a.list-group-item-danger.active:focus { } .panel-danger > .panel-heading .badge { background-color: #eb4d5c; -} \ No newline at end of file +} diff --git a/datacenterlight/static/datacenterlight/img/facebook_logo.svg b/datacenterlight/static/datacenterlight/img/facebook_logo.svg new file mode 100644 index 00000000..c2ab1b51 --- /dev/null +++ b/datacenterlight/static/datacenterlight/img/facebook_logo.svg @@ -0,0 +1,11 @@ + + + + Slice 20 + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/datacenterlight/static/datacenterlight/js/main.js b/datacenterlight/static/datacenterlight/js/main.js index 5594fe11..2e928955 100644 --- a/datacenterlight/static/datacenterlight/js/main.js +++ b/datacenterlight/static/datacenterlight/js/main.js @@ -39,7 +39,7 @@ _initScroll(); _initNavUrl(); _initPricing(); - + ajaxForms(); }); $(window).resize(function() { @@ -157,4 +157,27 @@ $('#valueTotal').text(numbers * price * 31); } -})(jQuery); + function ajaxForms() { + $('body').on('submit', '.ajax-form', function(e){ + e.preventDefault(); + var $form = $(this); + $form.find('[type=submit]').addClass('sending'); + $.ajax({ + url: $form.attr('action'), + type: $form.attr('method'), + data: $form.serialize(), + + success: function(response) { + var responseContain = $($form.attr('data-response')); + responseContain.html(response); + $form.find('[type=submit]').removeClass('sending'); + }, + + error: function() { + $form.find('[type=submit]').removeClass('sending'); + $form.find('.form-error').removeClass('hide'); + } + }); + }) + } +})(jQuery); \ No newline at end of file diff --git a/datacenterlight/templates/datacenterlight/contact_form.html b/datacenterlight/templates/datacenterlight/contact_form.html new file mode 100644 index 00000000..458d6168 --- /dev/null +++ b/datacenterlight/templates/datacenterlight/contact_form.html @@ -0,0 +1,50 @@ +{% load i18n %} + +{% if success %} +
    +
    +

    {% trans "Thank you for contacting us." %}

    +
    +

    + {% trans "Your message was successfully sent to our team." %} +

    +
    +{% else %} +
    +
    +
    +

    {% trans "Get in touch with us!" %}

    +
    +
    +
    +
    + {% csrf_token %} +
    + +
    + + {{contact_form.name.errors}} +
    +
    +
    + +
    + + {{contact_form.email.errors}} +
    +
    +
    + +
    + + {{contact_form.message.errors}} +
    +
    +
    +
    +
    {% trans "Sorry, there was an unexpected error. Kindly retry." %}
    + +
    +
    +
    +{% endif %} \ No newline at end of file diff --git a/datacenterlight/templates/datacenterlight/index.html b/datacenterlight/templates/datacenterlight/index.html index 3ddb516d..3f89055c 100755 --- a/datacenterlight/templates/datacenterlight/index.html +++ b/datacenterlight/templates/datacenterlight/index.html @@ -1,5 +1,5 @@ {% extends "datacenterlight/base.html" %} -{% load staticfiles i18n%} +{% load staticfiles i18n %} {% block content %} @@ -149,32 +149,34 @@
    - +
    - -
    -
    +
    +
    +

    {% trans "Contact us" %}

    +
    +
    -

    ungleich GmbH

    +

    ungleich GmbH

    -

    info@datacenterlight.ch

    +

    info@datacenterlight.ch

    In der Au 7, Schwanden 8762

    {% trans "Switzerland " %}

    - +
    +
    -
    -
    -

    {% trans "Questions?" %} {% trans "Contact us!" %}

    +
    +
    + {% include "datacenterlight/contact_form.html" %}
    diff --git a/datacenterlight/urls.py b/datacenterlight/urls.py index a3aed7a6..f5f84ba9 100644 --- a/datacenterlight/urls.py +++ b/datacenterlight/urls.py @@ -1,17 +1,20 @@ from django.conf.urls import url from .views import IndexView, BetaProgramView, LandingProgramView, BetaAccessView, PricingView, SuccessView, \ - PaymentOrderView, OrderConfirmationView, WhyDataCenterLightView + PaymentOrderView, OrderConfirmationView, WhyDataCenterLightView, ContactUsView urlpatterns = [ url(r'^$', IndexView.as_view(), name='index'), - url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(), name='whydatacenterlight'), + url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(), + name='whydatacenterlight'), url(r'^beta-program/?$', BetaProgramView.as_view(), name='beta'), url(r'^landing/?$', LandingProgramView.as_view(), name='landing'), url(r'^pricing/?$', PricingView.as_view(), name='pricing'), url(r'^payment/?$', PaymentOrderView.as_view(), name='payment'), - url(r'^order-confirmation/?$', OrderConfirmationView.as_view(), name='order_confirmation'), + url(r'^order-confirmation/?$', OrderConfirmationView.as_view(), + name='order_confirmation'), url(r'^order-success/?$', SuccessView.as_view(), name='order_success'), url(r'^beta_access?$', BetaAccessView.as_view(), name='beta_access'), + url(r'^contact/?$', ContactUsView.as_view(), name='contact_us'), ] diff --git a/datacenterlight/views.py b/datacenterlight/views.py index fd1435a1..c7b258c2 100644 --- a/datacenterlight/views.py +++ b/datacenterlight/views.py @@ -1,6 +1,6 @@ from django.views.generic import FormView, CreateView, TemplateView, DetailView from django.http import HttpResponseRedirect -from .forms import BetaAccessForm +from .forms import BetaAccessForm, ContactForm from .models import BetaAccess, BetaAccessVMType, BetaAccessVM, VMTemplate from django.contrib import messages from django.core.urlresolvers import reverse @@ -23,6 +23,33 @@ from opennebula_api.serializers import VirtualMachineTemplateSerializer, \ from datacenterlight.tasks import create_vm_task +class ContactUsView(FormView): + template_name = "datacenterlight/contact_form.html" + form_class = ContactForm + + def get(self, request, *args, **kwargs): + return HttpResponseRedirect(reverse('datacenterlight:index')) + + def form_invalid(self, form): + if self.request.is_ajax(): + return self.render_to_response( + self.get_context_data(contact_form=form)) + else: + return render(self.request, + 'datacenterlight/index.html', + self.get_context_data(contact_form=form)) + + def form_valid(self, form): + form.save() + if self.request.is_ajax(): + return self.render_to_response( + self.get_context_data(success=True, contact_form=form)) + else: + return render(self.request, + 'datacenterlight/index.html', + self.get_context_data(success=True, contact_form=form)) + + class LandingProgramView(TemplateView): template_name = "datacenterlight/landing.html" @@ -314,8 +341,8 @@ class IndexView(CreateView): def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) context.update({ - 'base_url': "{0}://{1}".format(self.request.scheme, - self.request.get_host()) + 'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host()), + 'contact_form': ContactForm }) return context From 7c9ec6fdde76b6fe1d1675a679b4d4fc6f67ba5d Mon Sep 17 00:00:00 2001 From: PCoder Date: Sun, 27 Aug 2017 13:38:08 +0530 Subject: [PATCH 051/336] Added contact us migrations after --merge with the existing migrations --- datacenterlight/migrations/0009_merge.py | 16 ++++++++++++++++ datacenterlight/migrations/0010_merge.py | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 datacenterlight/migrations/0009_merge.py create mode 100644 datacenterlight/migrations/0010_merge.py diff --git a/datacenterlight/migrations/0009_merge.py b/datacenterlight/migrations/0009_merge.py new file mode 100644 index 00000000..1f5d5bad --- /dev/null +++ b/datacenterlight/migrations/0009_merge.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.4 on 2017-08-27 07:55 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('datacenterlight', '0007_contactus'), + ('datacenterlight', '0008_auto_20170821_2024'), + ] + + operations = [ + ] diff --git a/datacenterlight/migrations/0010_merge.py b/datacenterlight/migrations/0010_merge.py new file mode 100644 index 00000000..72feedf5 --- /dev/null +++ b/datacenterlight/migrations/0010_merge.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.4 on 2017-08-27 08:02 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('datacenterlight', '0009_merge'), + ('datacenterlight', '0008_contactus_field'), + ] + + operations = [ + ] From d69dbcb720002ff64684596f96508c97f6b6ff25 Mon Sep 17 00:00:00 2001 From: PCoder Date: Sun, 27 Aug 2017 15:20:23 +0530 Subject: [PATCH 052/336] Cleaned up some comment code --- datacenterlight/tests.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/datacenterlight/tests.py b/datacenterlight/tests.py index 602fb403..7c2f7353 100644 --- a/datacenterlight/tests.py +++ b/datacenterlight/tests.py @@ -6,10 +6,8 @@ import stripe from celery.result import AsyncResult from django.conf import settings from django.core.management import call_command -# Create your tests here. from django.test import TestCase, override_settings from model_mommy import mommy - from datacenterlight.models import VMTemplate from datacenterlight.tasks import create_vm_task from membership.models import StripeCustomer From 1da04a05d1f6bf8d38975cd0324e8f90b4036fca Mon Sep 17 00:00:00 2001 From: PCoder Date: Sun, 27 Aug 2017 15:23:19 +0530 Subject: [PATCH 053/336] Created send_plain_email_task celery task and calling it on contact send --- datacenterlight/views.py | 10 ++++++++++ utils/tasks.py | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 utils/tasks.py diff --git a/datacenterlight/views.py b/datacenterlight/views.py index c7b258c2..9eaf95aa 100644 --- a/datacenterlight/views.py +++ b/datacenterlight/views.py @@ -21,6 +21,7 @@ from opennebula_api.models import OpenNebulaManager from opennebula_api.serializers import VirtualMachineTemplateSerializer, \ VMTemplateSerializer from datacenterlight.tasks import create_vm_task +from utils.tasks import send_plain_email_task class ContactUsView(FormView): @@ -41,6 +42,15 @@ class ContactUsView(FormView): def form_valid(self, form): form.save() + email_data = { + 'subject': 'Request received on Data Center Light', + 'from_email': settings.DCL_SUPPORT_FROM_ADDRESS, + 'to': ['info@ungleich.ch'], + 'body': "\n".join( + ["%s=%s" % (k, v) for (k, v) in form.cleaned_data.items()]), + 'reply_to': [form.cleaned_data.get('email')], + } + send_plain_email_task.delay(email_data) if self.request.is_ajax(): return self.render_to_response( self.get_context_data(success=True, contact_form=form)) diff --git a/utils/tasks.py b/utils/tasks.py new file mode 100644 index 00000000..5334b507 --- /dev/null +++ b/utils/tasks.py @@ -0,0 +1,20 @@ +from celery.utils.log import get_task_logger +from django.conf import settings +from dynamicweb.celery import app +from django.core.mail import EmailMessage + +logger = get_task_logger(__name__) + + +@app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES) +def send_plain_email_task(self, email_data): + """ + This is a generic celery task to be used for sending emails. + A celery wrapper task for EmailMessage + + :param self: + :param email_data: A dict of all needed email headers + :return: + """ + email = EmailMessage(**email_data) + email.send() From 568f38dd6794c052d3109a35003d84842b9c4eac Mon Sep 17 00:00:00 2001 From: PCoder Date: Mon, 28 Aug 2017 12:25:39 +0530 Subject: [PATCH 054/336] Added utils/tasks.py --- utils/tasks.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 utils/tasks.py diff --git a/utils/tasks.py b/utils/tasks.py new file mode 100644 index 00000000..692e9e42 --- /dev/null +++ b/utils/tasks.py @@ -0,0 +1,31 @@ +from dynamicweb.celery import app +from celery.utils.log import get_task_logger +from django.conf import settings +from cdist.integration import configure_hosts_simple +import cdist +import tempfile +import pathlib + +logger = get_task_logger(__name__) + + +@app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES) +def save_ssh_key(hosts, keys): + """ + Saves ssh key into the VMs of a user using cdist + + :param hosts: A list of hosts to be configured + :param keys: A list of keys to be added + """ + # Generate manifest to be used for configuring the hosts + with tempfile.NamedTemporaryFile() as tmp_manifest: + tmp_manifest.writelines(['__ssh_authorized_keys root \\', + ' --key "{keys}"'.format( + keys='\n'.join(keys))]) + + f = pathlib.Path(tmp_manifest.name) + configure_hosts_simple(hosts, + tmp_manifest.name, + verbose=cdist.argparse.VERBOSE_TRACE) + + From 2b541da94b9ab75a234b2def31da13bbbbe1b76c Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Mon, 28 Aug 2017 11:39:46 +0200 Subject: [PATCH 055/336] Added SaveSSHKeyTestCase --- utils/tests.py | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/utils/tests.py b/utils/tests.py index c4608e73..362a84bc 100644 --- a/utils/tests.py +++ b/utils/tests.py @@ -1,16 +1,19 @@ import uuid +from time import sleep from unittest.mock import patch import stripe +from celery.result import AsyncResult +from django.conf import settings from django.http.request import HttpRequest from django.test import Client -from django.test import TestCase +from django.test import TestCase, override_settings from model_mommy import mommy from datacenterlight.models import StripePlan from membership.models import StripeCustomer from utils.stripe_utils import StripeUtils -from django.conf import settings +from .tasks import save_ssh_key class BaseTestCase(TestCase): @@ -235,3 +238,29 @@ class StripePlanTestCase(TestStripeCustomerDescription): 'response_object').stripe_plan_id}]) self.assertIsNone(result.get('response_object'), None) self.assertIsNotNone(result.get('error')) + + +class SaveSSHKeyTestCase(TestCase): + """ + A test case to test the celery save_ssh_key task + """ + + @override_settings( + task_eager_propagates=True, + task_always_eager=True, + ) + def setUp(self): + self.public_key = ["This is a test", ] + self.hosts = ['localhost'] + + def test_save_ssh_key(self): + async_task = save_ssh_key.delay(self.hosts, self.public_key) + save_ssh_key_result = None + for i in range(0, 10): + sleep(5) + res = AsyncResult(async_task.task_id) + if type(res.result) is bool: + save_ssh_key_result = res.result + break + self.assertIsNotNone(save_ssh_key, "save_ssh_key_result is None") + self.assertTrue(save_ssh_key_result, "save_ssh_key_result is False") From 21f51692c48de1dc93784d32877c2e859581b89c Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Mon, 28 Aug 2017 11:40:59 +0200 Subject: [PATCH 056/336] Improved save_ssh_key celery task --- requirements.txt | 3 ++- utils/tasks.py | 34 ++++++++++++++++++---------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/requirements.txt b/requirements.txt index 33bd51fa..639ac881 100644 --- a/requirements.txt +++ b/requirements.txt @@ -96,4 +96,5 @@ pyflakes==1.5.0 billiard==3.5.0.3 amqp==2.2.1 vine==1.1.4 -file:///home/test/projects/Nico/cdist-pcoder/cdist/#egg=cdist-web +#git+https://github.com/pcoder/cdist.git#egg=cdist-web +file:///home/mravi/gitprojects/cdist-pcoder/cdist/#egg=cdist-web diff --git a/utils/tasks.py b/utils/tasks.py index 692e9e42..7e015df7 100644 --- a/utils/tasks.py +++ b/utils/tasks.py @@ -1,31 +1,33 @@ -from dynamicweb.celery import app -from celery.utils.log import get_task_logger -from django.conf import settings -from cdist.integration import configure_hosts_simple import cdist import tempfile -import pathlib +from cdist.integration import configure_hosts_simple +from celery.utils.log import get_task_logger +from django.conf import settings + +from dynamicweb.celery import app logger = get_task_logger(__name__) @app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES) -def save_ssh_key(hosts, keys): +def save_ssh_key(self, hosts, keys): """ Saves ssh key into the VMs of a user using cdist :param hosts: A list of hosts to be configured :param keys: A list of keys to be added """ - # Generate manifest to be used for configuring the hosts + return_value = True with tempfile.NamedTemporaryFile() as tmp_manifest: - tmp_manifest.writelines(['__ssh_authorized_keys root \\', + # Generate manifest to be used for configuring the hosts + tmp_manifest.writelines([b'__ssh_authorized_keys root \\', ' --key "{keys}"'.format( - keys='\n'.join(keys))]) - - f = pathlib.Path(tmp_manifest.name) - configure_hosts_simple(hosts, - tmp_manifest.name, - verbose=cdist.argparse.VERBOSE_TRACE) - - + keys='\n'.join(keys)).encode('utf-8')]) + try: + configure_hosts_simple(hosts, + tmp_manifest.name, + verbose=cdist.argparse.VERBOSE_TRACE) + except Exception as cdist_exception: + logger.error(cdist_exception) + return_value = False + return return_value From 12255364b28d254adc5fbb01e8bf157e3e1089c8 Mon Sep 17 00:00:00 2001 From: PCoder Date: Tue, 29 Aug 2017 13:31:05 +0530 Subject: [PATCH 057/336] Attempted to get hosts for adding ssh keys (to be tested) --- hosting/views.py | 95 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 64 insertions(+), 31 deletions(-) diff --git a/hosting/views.py b/hosting/views.py index 0747f134..f6150190 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -7,7 +7,8 @@ from django.shortcuts import render from django.http import Http404 from django.core.urlresolvers import reverse_lazy, reverse from django.contrib.auth.mixins import LoginRequiredMixin -from django.views.generic import View, CreateView, FormView, ListView, DetailView, \ +from django.views.generic import View, CreateView, FormView, ListView, \ + DetailView, \ DeleteView, TemplateView, UpdateView from django.http import HttpResponseRedirect from django.contrib import messages @@ -24,17 +25,23 @@ from django.utils.safestring import mark_safe from membership.models import CustomUser, StripeCustomer from utils.stripe_utils import StripeUtils -from utils.forms import BillingAddressForm, PasswordResetRequestForm, UserBillingAddressForm -from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, LoginViewMixin +from utils.forms import BillingAddressForm, PasswordResetRequestForm, \ + UserBillingAddressForm +from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, \ + LoginViewMixin from utils.mailer import BaseEmail from .models import HostingOrder, HostingBill, HostingPlan, UserHostingKey -from .forms import HostingUserSignupForm, HostingUserLoginForm, UserHostingKeyForm, generate_ssh_key_name +from .forms import HostingUserSignupForm, HostingUserLoginForm, \ + UserHostingKeyForm, generate_ssh_key_name from .mixins import ProcessVMSelectionMixin from opennebula_api.models import OpenNebulaManager from opennebula_api.serializers import VirtualMachineSerializer, \ VirtualMachineTemplateSerializer from django.utils.translation import ugettext_lazy as _ +import logging + +logger = logging.getLogger(__name__) CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a backend \ connection error. please try again in a few minutes." @@ -284,7 +291,8 @@ class PasswordResetConfirmView(PasswordResetConfirmViewMixin): form = self.form_class(request.POST) - if user is not None and default_token_generator.check_token(user, token): + if user is not None and default_token_generator.check_token(user, + token): if form.is_valid(): new_password = form.cleaned_data['new_password2'] user.set_password(new_password) @@ -385,7 +393,8 @@ class SSHKeyListView(LoginRequiredMixin, ListView): def render_to_response(self, context, **response_kwargs): if not self.queryset: return HttpResponseRedirect(reverse('hosting:choice_ssh_keys')) - return super(SSHKeyListView, self).render_to_response(context, **response_kwargs) + return super(SSHKeyListView, self).render_to_response(context, + **response_kwargs) class SSHKeyChoiceView(LoginRequiredMixin, View): @@ -448,18 +457,29 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView): }) owner = self.request.user - manager = OpenNebulaManager() + # Get all VMs belonging to the user + allorders = HostingOrder.objects.filter(customer__user=owner) + if len(allorders) > 0: + logger.debug("The user {} has 1 or more VMs. We need to configure " + "the ssh keys.".format(self.request.user.email)) + hosts = [order.vm_id for order in allorders] - # Get user ssh key - public_key = str(form.cleaned_data.get('public_key', '')) - # Add ssh key to user - try: - manager.add_public_key( - user=owner, public_key=public_key, merge=True) - except ConnectionError: - pass - except WrongNameError: - pass + + else: + logger.debug("The user {} has no VMs. We don't need to configure " + "the ssh keys.".format(self.request.user.email)) + # manager = OpenNebulaManager() + # + # # Get user ssh key + # public_key = str(form.cleaned_data.get('public_key', '')) + # # Add ssh key to user + # try: + # manager.add_public_key( + # user=owner, public_key=public_key, merge=True) + # except ConnectionError: + # pass + # except WrongNameError: + # pass return HttpResponseRedirect(self.success_url) @@ -558,8 +578,10 @@ class PaymentVMView(LoginRequiredMixin, FormView): token=token) if not customer: msg = _("Invalid credit card") - messages.add_message(self.request, messages.ERROR, msg, extra_tags='make_charge_error') - return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error') + messages.add_message(self.request, messages.ERROR, msg, + extra_tags='make_charge_error') + return HttpResponseRedirect( + reverse('hosting:payment') + '#payment_error') # Create Billing Address billing_address = form.save() @@ -572,8 +594,10 @@ class PaymentVMView(LoginRequiredMixin, FormView): # Check if the payment was approved if not charge_response.get('response_object'): msg = charge_response.get('error') - messages.add_message(self.request, messages.ERROR, msg, extra_tags='make_charge_error') - return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error') + messages.add_message(self.request, messages.ERROR, msg, + extra_tags='make_charge_error') + return HttpResponseRedirect( + reverse('hosting:payment') + '#payment_error') charge = charge_response.get('response_object') @@ -581,7 +605,8 @@ class PaymentVMView(LoginRequiredMixin, FormView): manager = OpenNebulaManager(email=owner.email, password=owner.password) # Get user ssh key - if not UserHostingKey.objects.filter(user=self.request.user).exists(): + if not UserHostingKey.objects.filter( + user=self.request.user).exists(): context.update({ 'sshError': 'error', 'form': form @@ -633,7 +658,8 @@ class PaymentVMView(LoginRequiredMixin, FormView): context = { 'vm': vm, 'order': order, - 'base_url': "{0}://{1}".format(request.scheme, request.get_host()) + 'base_url': "{0}://{1}".format(request.scheme, + request.get_host()) } email_data = { @@ -647,13 +673,15 @@ class PaymentVMView(LoginRequiredMixin, FormView): email.send() return HttpResponseRedirect( - "{url}?{query_params}".format(url=reverse('hosting:orders', kwargs={'pk': order.id}), - query_params='page=payment')) + "{url}?{query_params}".format( + url=reverse('hosting:orders', kwargs={'pk': order.id}), + query_params='page=payment')) else: return self.form_invalid(form) -class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin, DetailView): +class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin, + DetailView): template_name = "hosting/order_detail.html" context_object_name = "order" login_url = reverse_lazy('hosting:login') @@ -761,7 +789,8 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View): configuration_options = HostingPlan.get_serialized_configs() context = { - 'templates': VirtualMachineTemplateSerializer(templates, many=True).data, + 'templates': VirtualMachineTemplateSerializer(templates, + many=True).data, 'configuration_options': configuration_options, } except: @@ -832,7 +861,8 @@ class VirtualMachineView(LoginRequiredMixin, View): serializer = VirtualMachineSerializer(vm) context = { 'virtual_machine': serializer.data, - 'order': HostingOrder.objects.get(vm_id=serializer.data['vm_id']) + 'order': HostingOrder.objects.get( + vm_id=serializer.data['vm_id']) } except: pass @@ -863,7 +893,8 @@ class VirtualMachineView(LoginRequiredMixin, View): context = { 'vm': vm, - 'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host()) + 'base_url': "{0}://{1}".format(self.request.scheme, + self.request.get_host()) } email_data = { 'subject': 'Virtual machine plan canceled', @@ -883,7 +914,8 @@ class VirtualMachineView(LoginRequiredMixin, View): return HttpResponseRedirect(self.get_success_url()) -class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin, ListView): +class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin, + ListView): template_name = "hosting/bills.html" login_url = reverse_lazy('hosting:login') permission_required = ['view_hostingview'] @@ -893,7 +925,8 @@ class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin, ListView) ordering = '-id' -class HostingBillDetailView(PermissionRequiredMixin, LoginRequiredMixin, DetailView): +class HostingBillDetailView(PermissionRequiredMixin, LoginRequiredMixin, + DetailView): template_name = "hosting/bill_detail.html" login_url = reverse_lazy('hosting:login') permission_required = ['view_hostingview'] From 2f2dcb08145b08ca774eb697c897163f5d4439dd Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Tue, 29 Aug 2017 10:43:30 +0200 Subject: [PATCH 058/336] Added datacenterlight/t, datacenterlight/g, datacenterlight/f url routes to point to dcl's IndexView --- datacenterlight/urls.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/datacenterlight/urls.py b/datacenterlight/urls.py index a3aed7a6..3c8eafae 100644 --- a/datacenterlight/urls.py +++ b/datacenterlight/urls.py @@ -1,17 +1,22 @@ from django.conf.urls import url -from .views import IndexView, BetaProgramView, LandingProgramView, BetaAccessView, PricingView, SuccessView, \ - PaymentOrderView, OrderConfirmationView, WhyDataCenterLightView - +from .views import IndexView, BetaProgramView, LandingProgramView, \ + BetaAccessView, PricingView, SuccessView, \ + PaymentOrderView, OrderConfirmationView, WhyDataCenterLightView urlpatterns = [ url(r'^$', IndexView.as_view(), name='index'), - url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(), name='whydatacenterlight'), + url(r'^t$', IndexView.as_view(), name='index_t'), + url(r'^g$', IndexView.as_view(), name='index_g'), + url(r'^f$', IndexView.as_view(), name='index_g'), + url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(), + name='whydatacenterlight'), url(r'^beta-program/?$', BetaProgramView.as_view(), name='beta'), url(r'^landing/?$', LandingProgramView.as_view(), name='landing'), url(r'^pricing/?$', PricingView.as_view(), name='pricing'), url(r'^payment/?$', PaymentOrderView.as_view(), name='payment'), - url(r'^order-confirmation/?$', OrderConfirmationView.as_view(), name='order_confirmation'), + url(r'^order-confirmation/?$', OrderConfirmationView.as_view(), + name='order_confirmation'), url(r'^order-success/?$', SuccessView.as_view(), name='order_success'), url(r'^beta_access?$', BetaAccessView.as_view(), name='beta_access'), ] From 12bb95f68588964db48d38fa557697e4f1677f9b Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Tue, 29 Aug 2017 10:46:16 +0200 Subject: [PATCH 059/336] Fixed a mistake --- datacenterlight/urls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datacenterlight/urls.py b/datacenterlight/urls.py index 3c8eafae..ceb4ff93 100644 --- a/datacenterlight/urls.py +++ b/datacenterlight/urls.py @@ -8,7 +8,7 @@ urlpatterns = [ url(r'^$', IndexView.as_view(), name='index'), url(r'^t$', IndexView.as_view(), name='index_t'), url(r'^g$', IndexView.as_view(), name='index_g'), - url(r'^f$', IndexView.as_view(), name='index_g'), + url(r'^f$', IndexView.as_view(), name='index_f'), url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(), name='whydatacenterlight'), url(r'^beta-program/?$', BetaProgramView.as_view(), name='beta'), From e032fb744c2049c5d21bb1055d5e580a8971994a Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Tue, 29 Aug 2017 14:24:27 +0530 Subject: [PATCH 060/336] svg images fixed --- hosting/static/hosting/css/dashboard.css | 2 +- .../static/hosting/css/virtual-machine.css | 11 +-- .../static/hosting/img/24-hours-support.svg | 70 +------------------ hosting/static/hosting/img/billing.svg | 8 +-- .../static/hosting/img/dashboard_settings.svg | 4 +- hosting/static/hosting/img/key.svg | 4 +- hosting/static/hosting/img/plusVM.svg | 8 +-- hosting/static/hosting/img/vm.svg | 4 +- 8 files changed, 22 insertions(+), 89 deletions(-) diff --git a/hosting/static/hosting/css/dashboard.css b/hosting/static/hosting/css/dashboard.css index 3974d4c5..80855301 100644 --- a/hosting/static/hosting/css/dashboard.css +++ b/hosting/static/hosting/css/dashboard.css @@ -30,7 +30,7 @@ background: #e9ebee; box-shadow: 1px 3px 3px rgba(0,0,0,0.5); padding: 25px; - color: rgba(124, 139, 175, 0.8); + color: rgba(124, 139, 175, 1); font-size: 19px; display: block; margin-bottom: 15px; diff --git a/hosting/static/hosting/css/virtual-machine.css b/hosting/static/hosting/css/virtual-machine.css index 45aa68ff..806d40c6 100644 --- a/hosting/static/hosting/css/virtual-machine.css +++ b/hosting/static/hosting/css/virtual-machine.css @@ -440,10 +440,11 @@ } .dashboard-title-thin .un-icon { - height: 30px; + height: 34px; margin-right: 5px; - margin-top: -1px; - width: 30px; + margin-top: -2px; + width: 34px; + vertical-align: middle; } .dashboard-subtitle { @@ -528,8 +529,8 @@ font-size: 22px; } .dashboard-title-thin .un-icon { - height: 20px; - width: 18px; + height: 22px; + width: 22px; margin-top: -3px; } .dashboard-subtitle p { diff --git a/hosting/static/hosting/img/24-hours-support.svg b/hosting/static/hosting/img/24-hours-support.svg index 1617197e..473828a2 100644 --- a/hosting/static/hosting/img/24-hours-support.svg +++ b/hosting/static/hosting/img/24-hours-support.svg @@ -1,79 +1,15 @@ -<<<<<<< HEAD Slice 23 Created with Sketch. - - + + - -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> master + \ No newline at end of file diff --git a/hosting/static/hosting/img/billing.svg b/hosting/static/hosting/img/billing.svg index 253b0fb4..c382cffa 100644 --- a/hosting/static/hosting/img/billing.svg +++ b/hosting/static/hosting/img/billing.svg @@ -1,17 +1,13 @@ -<<<<<<< HEAD Slice 23 Created with Sketch. - - + + -======= -billing icon ->>>>>>> master diff --git a/hosting/static/hosting/img/dashboard_settings.svg b/hosting/static/hosting/img/dashboard_settings.svg index 38130c74..f8d60bf5 100644 --- a/hosting/static/hosting/img/dashboard_settings.svg +++ b/hosting/static/hosting/img/dashboard_settings.svg @@ -4,8 +4,8 @@ Slice 23 Created with Sketch. - - + + diff --git a/hosting/static/hosting/img/key.svg b/hosting/static/hosting/img/key.svg index 4a1a39b8..42b1e539 100644 --- a/hosting/static/hosting/img/key.svg +++ b/hosting/static/hosting/img/key.svg @@ -4,8 +4,8 @@ Slice 23 Created with Sketch. - - + + diff --git a/hosting/static/hosting/img/plusVM.svg b/hosting/static/hosting/img/plusVM.svg index cd4ed759..2bd59e2d 100644 --- a/hosting/static/hosting/img/plusVM.svg +++ b/hosting/static/hosting/img/plusVM.svg @@ -4,11 +4,11 @@ Slice 23 Created with Sketch. - - + + - - + + \ No newline at end of file diff --git a/hosting/static/hosting/img/vm.svg b/hosting/static/hosting/img/vm.svg index 696619b9..061d80ce 100644 --- a/hosting/static/hosting/img/vm.svg +++ b/hosting/static/hosting/img/vm.svg @@ -4,8 +4,8 @@ Slice 23 Created with Sketch. - - + + From 49cc441fa027661c20ba9c98ac71fa8ad8c1795e Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Tue, 29 Aug 2017 14:53:03 +0530 Subject: [PATCH 061/336] style changes --- hosting/locale/de/LC_MESSAGES/django.po | 21 ++++- hosting/static/hosting/css/commons.css | 12 +++ hosting/templates/hosting/settings.html | 113 ++++++++++++------------ 3 files changed, 89 insertions(+), 57 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index ddb853da..36a9cc09 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-24 11:12+0000\n" +"POT-Creation-Date: 2017-08-29 14:38+0530\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -330,6 +330,25 @@ msgstr "Deine Kreditkartennummer" msgid "Reset your password" msgstr "Passwort zurücksetzen" +#, fuzzy +#| msgid "VM Settings" +msgid "My Settings" +msgstr "VM Einstellungen" + +msgid "Last" +msgstr "" + +#, fuzzy +#| msgid "Card Type" +msgid "Type" +msgstr "Kartentyp" + +msgid "You are not making any payment here." +msgstr "" + +msgid "Add new Card" +msgstr "" + msgid "Add your public SSH key" msgstr "Füge deinen öffentlichen SSH-Key hinzu" diff --git a/hosting/static/hosting/css/commons.css b/hosting/static/hosting/css/commons.css index e8ba9ceb..4710b294 100644 --- a/hosting/static/hosting/css/commons.css +++ b/hosting/static/hosting/css/commons.css @@ -253,12 +253,24 @@ .settings-container .card-cvc-element { padding: 0 15px; } +.settings-container .card-cvc-element .my-input, +.settings-container .card-cvc-element label { + padding-left: 0; +} .settings-container .stripe-payment-btn { float: none; position: static; } +.settings-container h3 { + font-weight: bold; +} + +.settings-container hr { + margin-top: 15px; +} + .credit-card-form { max-width: 360px; } \ No newline at end of file diff --git a/hosting/templates/hosting/settings.html b/hosting/templates/hosting/settings.html index c540918e..f044b4b6 100644 --- a/hosting/templates/hosting/settings.html +++ b/hosting/templates/hosting/settings.html @@ -26,16 +26,16 @@
    {% if credit_card_data.last4 %}
    -
    Credit Card
    -
    Last 4: *****{{credit_card_data.last4}}
    -
    Type: {{credit_card_data.cc_brand}}
    +
    {% trans "Credit Card" %}
    +
    {% trans "Last" %} 4: *****{{credit_card_data.last4}}
    +
    {% trans "Type" %}: {{credit_card_data.cc_brand}}
    {% if not messages and not form.non_field_errors %}

    - {% blocktrans %}You are not making any payment yet. After submitting your card information, you will be taken to the Confirm Order Page.{% endblocktrans %} + {% blocktrans %}You are not making any payment here.{% endblocktrans %}

    {% endif %}
    @@ -62,64 +62,65 @@
    - {% endif %} -

    {% trans "Add new Card" %}

    -
    - -
    -
    - -
    -
    -
    -
    - -
    + {% else %} +

    {% trans "Add new Card" %}

    + + +
    +
    + +
    -
    - -
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    -
    -
    - - -
    -
    - -
    - {% if not messages and not form.non_field_errors %} -

    - {% blocktrans %}You are not making any payment here. After submitting your card information, you will be taken to the Confirm Order Page.{% endblocktrans %} -

    - {% endif %} -
    - {% for message in messages %} - {% if 'failed_payment' or 'make_charge_error' in message.tags %} -
    • -

      {{ message|safe }}

      -
    - {% endif %} - {% endfor %} - - {% for error in form.non_field_errors %} -

    - {{ error|escape }} -

    - {% endfor %}
    -
    -
    - + +
    + {% if not messages and not form.non_field_errors %} +

    + {% blocktrans %}You are not making any payment here.{% endblocktrans %} +

    + {% endif %} +
    + {% for message in messages %} + {% if 'failed_payment' or 'make_charge_error' in message.tags %} +
    • +

      {{ message|safe }}

      +
    + {% endif %} + {% endfor %} + + {% for error in form.non_field_errors %} +

    + {{ error|escape }} +

    + {% endfor %} +
    +
    +
    + +
    -
    -
    -

    -
    - +
    +

    +
    + + {% endif %}
    From ce1d346bc112c71780129078e5502138a22e8f7a Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Tue, 29 Aug 2017 17:42:35 +0530 Subject: [PATCH 062/336] billing form in settings page --- hosting/locale/de/LC_MESSAGES/django.po | 7 ++--- hosting/static/hosting/css/commons.css | 14 +++++++++ hosting/templates/hosting/settings.html | 41 +++++-------------------- hosting/views.py | 40 ++++++++++++++---------- utils/forms.py | 1 + 5 files changed, 48 insertions(+), 55 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index 36a9cc09..e2bba040 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-29 14:38+0530\n" +"POT-Creation-Date: 2017-08-29 17:41+0530\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -343,10 +343,7 @@ msgstr "" msgid "Type" msgstr "Kartentyp" -msgid "You are not making any payment here." -msgstr "" - -msgid "Add new Card" +msgid "No Cards found for your account." msgstr "" msgid "Add your public SSH key" diff --git a/hosting/static/hosting/css/commons.css b/hosting/static/hosting/css/commons.css index 4710b294..dd81a423 100644 --- a/hosting/static/hosting/css/commons.css +++ b/hosting/static/hosting/css/commons.css @@ -271,6 +271,20 @@ margin-top: 15px; } +.settings-container .credit-card-details { + padding-bottom: 15px; + border-bottom: 1px solid #eee; +} + +.settings-container .credit-card-details h5 { + font-weight: bold; + font-size: 16px; +} + .credit-card-form { max-width: 360px; +} + +.btn-wide { + min-width: 120px; } \ No newline at end of file diff --git a/hosting/templates/hosting/settings.html b/hosting/templates/hosting/settings.html index f044b4b6..130234db 100644 --- a/hosting/templates/hosting/settings.html +++ b/hosting/templates/hosting/settings.html @@ -17,6 +17,9 @@ {% csrf_token %} {% bootstrap_field field show_label=False type='fields'%} {% endfor %} +
    + +
    @@ -25,45 +28,14 @@
    {% if credit_card_data.last4 %} -
    +
    {% trans "Credit Card" %}
    {% trans "Last" %} 4: *****{{credit_card_data.last4}}
    {% trans "Type" %}: {{credit_card_data.cc_brand}}
    - - -
    -
    - {% if not messages and not form.non_field_errors %} -

    - {% blocktrans %}You are not making any payment here.{% endblocktrans %} -

    - {% endif %} -
    - {% for message in messages %} - {% if 'failed_payment' or 'make_charge_error' in message.tags %} -
    • -

      {{ message|safe }}

      -
    - {% endif %} - {% endfor %} - {% for error in form.non_field_errors %} -

    - {{ error|escape }} -

    - {% endfor %} -
    -
    -
    -
    - -
    -
    {% else %} -

    {% trans "Add new Card" %}

    +

    {% trans "No Cards found for your account." %}

    + {% comment %}
    @@ -120,6 +92,7 @@

    + {% endcomment %} {% endif %}
    diff --git a/hosting/views.py b/hosting/views.py index a860dfc9..9853078b 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -480,22 +480,14 @@ class SettingsView(LoginRequiredMixin, FormView): login_url = reverse_lazy('hosting:login') form_class = BillingAddressForm - def get_form_kwargs(self): - current_billing_address = self.request.user.billing_addresses.first() - form_kwargs = super(SettingsView, self).get_form_kwargs() - if not current_billing_address: - return form_kwargs - - form_kwargs.update({ - 'initial': { - 'cardholder_name': current_billing_address.cardholder_name, - 'street_address': current_billing_address.street_address, - 'city': current_billing_address.city, - 'postal_code': current_billing_address.postal_code, - 'country': current_billing_address.country, - } - }) - return form_kwargs + def get_form(self, form_class): + """ + Check if the user already saved contact details. If so, then show + the form populated with those details, to let user change them. + """ + return form_class( + instance=self.request.user.billing_addresses.first(), + **self.get_form_kwargs()) def get_context_data(self, **kwargs): context = super(SettingsView, self).get_context_data(**kwargs) @@ -520,6 +512,22 @@ class SettingsView(LoginRequiredMixin, FormView): return context + def post(self, request, *args, **kwargs): + form = self.get_form() + if form.is_valid(): + billing_address_data = form.cleaned_data + billing_address_data.update({ + 'user': self.request.user.id + }) + billing_address_user_form = UserBillingAddressForm( + instance=self.request.user.billing_addresses.first(), + data=billing_address_data) + billing_address_user_form.save() + return self.render_to_response(self.get_context_data()) + else: + billing_address_data = form.cleaned_data + return self.form_invalid(form) + class PaymentVMView(LoginRequiredMixin, FormView): template_name = 'hosting/payment.html' diff --git a/utils/forms.py b/utils/forms.py index c521e3ba..7d9d20c0 100644 --- a/utils/forms.py +++ b/utils/forms.py @@ -117,6 +117,7 @@ class UserBillingAddressForm(forms.ModelForm): class Meta: model = UserBillingAddress + # cardholder name not saved fields = ['street_address', 'city', 'postal_code', 'country', 'user'] labels = { 'street_address': _('Street Building'), From 58e7a2aca797250cf6b42937241e1766d359ee09 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Tue, 29 Aug 2017 17:48:41 +0530 Subject: [PATCH 063/336] saving cardholder name --- hosting/locale/de/LC_MESSAGES/django.po | 10 +++------- hosting/templates/hosting/settings.html | 4 +--- utils/forms.py | 17 +++++++++++------ 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index d46b33d1..6056dc15 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -330,20 +330,16 @@ msgstr "Deine Kreditkartennummer" msgid "Reset your password" msgstr "Passwort zurücksetzen" -#, fuzzy -#| msgid "VM Settings" msgid "My Settings" -msgstr "VM Einstellungen" +msgstr "Meine Einstellungen" msgid "Last" msgstr "" -#, fuzzy -#| msgid "Card Type" msgid "Type" msgstr "Kartentyp" -msgid "No Cards found for your account." +msgid "Add a new Card." msgstr "" msgid "Add your public SSH key" @@ -508,7 +504,7 @@ msgstr "Bestellung Bestätigen" msgid "" "We could not find the requested VM. Please " "contact Data Center Light Support." -msgstr "" +msgstr "Kontaktiere den Data Center Light Support." #~ msgid "" #~ "\n" diff --git a/hosting/templates/hosting/settings.html b/hosting/templates/hosting/settings.html index 130234db..11283b94 100644 --- a/hosting/templates/hosting/settings.html +++ b/hosting/templates/hosting/settings.html @@ -34,8 +34,7 @@
    {% trans "Type" %}: {{credit_card_data.cc_brand}}
    {% else %} -

    {% trans "No Cards found for your account." %}

    - {% comment %} +

    {% trans "Add a new Card." %}

    @@ -92,7 +91,6 @@

    - {% endcomment %} {% endif %}
    diff --git a/utils/forms.py b/utils/forms.py index 7d9d20c0..c3f3b6db 100644 --- a/utils/forms.py +++ b/utils/forms.py @@ -41,7 +41,8 @@ class LoginFormMixin(forms.Form): password = self.cleaned_data.get('password') is_auth = authenticate(email=email, password=password) if not is_auth: - raise forms.ValidationError("Your username and/or password were incorrect.") + raise forms.ValidationError( + "Your username and/or password were incorrect.") return self.cleaned_data def clean_email(self): @@ -101,7 +102,8 @@ class BillingAddressForm(forms.ModelForm): class Meta: model = BillingAddress - fields = ['cardholder_name', 'street_address', 'city', 'postal_code', 'country'] + fields = ['cardholder_name', 'street_address', + 'city', 'postal_code', 'country'] labels = { 'cardholder_name': _('Cardholder Name'), 'street_address': _('Street Address'), @@ -117,9 +119,10 @@ class UserBillingAddressForm(forms.ModelForm): class Meta: model = UserBillingAddress - # cardholder name not saved - fields = ['street_address', 'city', 'postal_code', 'country', 'user'] + fields = ['cardholder_name', 'street_address', + 'city', 'postal_code', 'country', 'user'] labels = { + 'cardholder_name': _('Cardholder Name'), 'street_address': _('Street Building'), 'city': _('City'), 'postal_code': _('Postal Code'), @@ -147,8 +150,10 @@ class ContactUsForm(forms.ModelForm): } def send_email(self, email_to='info@digitalglarus.ch'): - text_content = render_to_string('emails/contact.txt', {'data': self.cleaned_data}) - html_content = render_to_string('emails/contact.html', {'data': self.cleaned_data}) + text_content = render_to_string( + 'emails/contact.txt', {'data': self.cleaned_data}) + html_content = render_to_string( + 'emails/contact.html', {'data': self.cleaned_data}) email = EmailMultiAlternatives('Subject', text_content) email.attach_alternative(html_content, "text/html") email.to = [email_to] From 591c51bb4630e80385e2a2a0ff1e6a4ae72305de Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Tue, 29 Aug 2017 17:57:11 +0530 Subject: [PATCH 064/336] translation fix --- hosting/locale/de/LC_MESSAGES/django.po | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index 54d0ed42..3351aee3 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -366,8 +366,6 @@ msgstr "Erstelle dein neues Keypaar" msgid "Warning!" msgstr "Achtung!" -#, fuzzy -#| msgid "You can download your SSH private key once. Don't lost your key" msgid "You can download your SSH private key once. Don't loose your key" msgstr "" "Du kannst deinen privaten SSH Schlüssel nur einmal herunterladen. Beware ihn " @@ -403,8 +401,6 @@ msgstr "Möchtest Du den Schlüssel löschen?" msgid "Show" msgstr "Anzeigen" -#, fuzzy -#| msgid "Public SSH Key" msgid "Public SSH Key" msgstr "Public SSH Key" @@ -444,9 +440,6 @@ msgstr "Fehlgeschlagen" msgid "Terminate VM" msgstr "VM Beenden" -msgid "Support / Contact" -msgstr "Support / Kontakt" - msgid "Something doesn't work?" msgstr "Etwas funktioniert nicht?" @@ -513,7 +506,7 @@ msgstr "Bestellung Bestätigen" msgid "" "We could not find the requested VM. Please " "contact Data Center Light Support." -msgstr "" +msgstr "Kontaktiere den Data Center Light Support." #~ msgid "Approved" #~ msgstr "Akzeptiert" From 919ad6e869646a863429feed041671504b01ed4c Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Tue, 29 Aug 2017 18:01:00 +0530 Subject: [PATCH 065/336] email added to contact button --- hosting/templates/hosting/dashboard.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosting/templates/hosting/dashboard.html b/hosting/templates/hosting/dashboard.html index 4464c5ca..4d41874e 100644 --- a/hosting/templates/hosting/dashboard.html +++ b/hosting/templates/hosting/dashboard.html @@ -38,7 +38,7 @@
    - +

    {% trans "Support / Contact" %}

    From 34580b6514155970e1bd2c9800d450981f70c975 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Tue, 29 Aug 2017 17:51:58 +0200 Subject: [PATCH 066/336] Refactored saving public key functionality to opennebula_api.models.save_public_key. Also, now creating hosting VMs loaded by default with ONEADMIN_USER_SSH_PUBLIC_KEY --- hosting/views.py | 47 ++++++++++++++--------------------------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/hosting/views.py b/hosting/views.py index f6150190..3acc3f11 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -27,8 +27,8 @@ from membership.models import CustomUser, StripeCustomer from utils.stripe_utils import StripeUtils from utils.forms import BillingAddressForm, PasswordResetRequestForm, \ UserBillingAddressForm -from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, \ - LoginViewMixin +from utils.views import PasswordResetViewMixin, \ + PasswordResetConfirmViewMixin, LoginViewMixin from utils.mailer import BaseEmail from .models import HostingOrder, HostingBill, HostingPlan, UserHostingKey from .forms import HostingUserSignupForm, HostingUserLoginForm, \ @@ -43,8 +43,9 @@ import logging logger = logging.getLogger(__name__) -CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a backend \ - connection error. please try again in a few minutes." +CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a \ + backend connection error. please try again in a few \ + minutes." class DjangoHostingView(ProcessVMSelectionMixin, View): @@ -457,30 +458,14 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView): }) owner = self.request.user - # Get all VMs belonging to the user - allorders = HostingOrder.objects.filter(customer__user=owner) - if len(allorders) > 0: - logger.debug("The user {} has 1 or more VMs. We need to configure " - "the ssh keys.".format(self.request.user.email)) - hosts = [order.vm_id for order in allorders] - - - else: - logger.debug("The user {} has no VMs. We don't need to configure " - "the ssh keys.".format(self.request.user.email)) - # manager = OpenNebulaManager() - # - # # Get user ssh key - # public_key = str(form.cleaned_data.get('public_key', '')) - # # Add ssh key to user - # try: - # manager.add_public_key( - # user=owner, public_key=public_key, merge=True) - # except ConnectionError: - # pass - # except WrongNameError: - # pass - + manager = OpenNebulaManager( + email=owner.email, + password=owner.password + ) + public_key = form.cleaned_data['public_key'] + if type(public_key) is bytes: + public_key = public_key.decode() + manager.save_public_key([public_key]) return HttpResponseRedirect(self.success_url) def post(self, request, *args, **kwargs): @@ -612,16 +597,12 @@ class PaymentVMView(LoginRequiredMixin, FormView): 'form': form }) return render(request, self.template_name, context) - # For now just get first one - user_key = UserHostingKey.objects.filter( - user=self.request.user).first() # Create a vm using logged user vm_id = manager.create_vm( template_id=vm_template_id, - # XXX: Confi specs=specs, - ssh_key=user_key.public_key, + ssh_key=settings.ONEADMIN_USER_SSH_PUBLIC_KEY, ) # Create a Hosting Order From d25bca0860bcabb7ebdb629c25edf807d1c1a76f Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Tue, 29 Aug 2017 18:02:56 +0200 Subject: [PATCH 067/336] Added save_public_key and reformatted code --- opennebula_api/models.py | 90 +++++++++++++++++++++++++++++----------- 1 file changed, 66 insertions(+), 24 deletions(-) diff --git a/opennebula_api/models.py b/opennebula_api/models.py index 60f3159c..a99d8353 100644 --- a/opennebula_api/models.py +++ b/opennebula_api/models.py @@ -9,6 +9,8 @@ from django.conf import settings from utils.models import CustomUser from .exceptions import KeyExistsError, UserExistsError, UserCredentialError +from hosting.models import HostingOrder +from utils.tasks import save_ssh_key logger = logging.getLogger(__name__) @@ -122,16 +124,19 @@ class OpenNebulaManager(): except WrongNameError: user_id = self.oneadmin_client.call(oca.User.METHODS['allocate'], - user.email, user.password, 'core') - logger.debug('Created a user for CustomObject: {user} with user id = {u_id}', - user=user, - u_id=user_id - ) + user.email, user.password, + 'core') + logger.debug( + 'Created a user for CustomObject: {user} with user id = {u_id}', + user=user, + u_id=user_id + ) return user_id except ConnectionRefusedError: - logger.error('Could not connect to host: {host} via protocol {protocol}'.format( - host=settings.OPENNEBULA_DOMAIN, - protocol=settings.OPENNEBULA_PROTOCOL) + logger.error( + 'Could not connect to host: {host} via protocol {protocol}'.format( + host=settings.OPENNEBULA_DOMAIN, + protocol=settings.OPENNEBULA_PROTOCOL) ) raise ConnectionRefusedError @@ -141,8 +146,9 @@ class OpenNebulaManager(): opennebula_user = user_pool.get_by_name(email) return opennebula_user except WrongNameError as wrong_name_err: - opennebula_user = self.oneadmin_client.call(oca.User.METHODS['allocate'], email, - password, 'core') + opennebula_user = self.oneadmin_client.call( + oca.User.METHODS['allocate'], email, + password, 'core') logger.debug( "User {0} does not exist. Created the user. User id = {1}", email, @@ -150,9 +156,10 @@ class OpenNebulaManager(): ) return opennebula_user except ConnectionRefusedError: - logger.info('Could not connect to host: {host} via protocol {protocol}'.format( - host=settings.OPENNEBULA_DOMAIN, - protocol=settings.OPENNEBULA_PROTOCOL) + logger.info( + 'Could not connect to host: {host} via protocol {protocol}'.format( + host=settings.OPENNEBULA_DOMAIN, + protocol=settings.OPENNEBULA_PROTOCOL) ) raise ConnectionRefusedError @@ -161,9 +168,10 @@ class OpenNebulaManager(): user_pool = oca.UserPool(self.oneadmin_client) user_pool.info() except ConnectionRefusedError: - logger.info('Could not connect to host: {host} via protocol {protocol}'.format( - host=settings.OPENNEBULA_DOMAIN, - protocol=settings.OPENNEBULA_PROTOCOL) + logger.info( + 'Could not connect to host: {host} via protocol {protocol}'.format( + host=settings.OPENNEBULA_DOMAIN, + protocol=settings.OPENNEBULA_PROTOCOL) ) raise return user_pool @@ -183,9 +191,10 @@ class OpenNebulaManager(): raise ConnectionRefusedError except ConnectionRefusedError: - logger.info('Could not connect to host: {host} via protocol {protocol}'.format( - host=settings.OPENNEBULA_DOMAIN, - protocol=settings.OPENNEBULA_PROTOCOL) + logger.info( + 'Could not connect to host: {host} via protocol {protocol}'.format( + host=settings.OPENNEBULA_DOMAIN, + protocol=settings.OPENNEBULA_PROTOCOL) ) raise ConnectionRefusedError # For now we'll just handle all other errors as connection errors @@ -258,7 +267,8 @@ class OpenNebulaManager(): vm_specs += "" if ssh_key: - vm_specs += "{ssh}".format(ssh=ssh_key) + vm_specs += "{ssh}".format( + ssh=ssh_key) vm_specs += """YES @@ -312,9 +322,11 @@ class OpenNebulaManager(): template_pool.info() return template_pool except ConnectionRefusedError: - logger.info('Could not connect to host: {host} via protocol {protocol}'.format( - host=settings.OPENNEBULA_DOMAIN, - protocol=settings.OPENNEBULA_PROTOCOL) + logger.info( + '''Could not connect to host: {host} via protocol \ + {protocol}'''.format( + host=settings.OPENNEBULA_DOMAIN, + protocol=settings.OPENNEBULA_PROTOCOL) ) raise ConnectionRefusedError except: @@ -347,7 +359,8 @@ class OpenNebulaManager(): except: raise ConnectionRefusedError - def create_template(self, name, cores, memory, disk_size, core_price, memory_price, + def create_template(self, name, cores, memory, disk_size, core_price, + memory_price, disk_size_price, ssh=''): """Create and add a new template to opennebula. :param name: A string representation describing the template. @@ -490,3 +503,32 @@ class OpenNebulaManager(): except ConnectionError: raise + + def save_public_key(self, keys): + """ + A function that saves the supplied keys to the authorized_keys file + + :param keys: List of ssh keys that are to be added + :return: + """ + owner = CustomUser.objects.filter( + email=self.opennebula_user.name).first() + all_orders = HostingOrder.objects.filter(customer__user=owner) + if len(all_orders) > 0: + logger.debug("The user {} has 1 or more VMs. We need to configure " + "the ssh keys.".format(self.opennebula_user.name)) + hosts = [] + for order in all_orders: + try: + vm = self.get_vm(order.vm_id) + for nic in vm.template.nics: + if hasattr(nic, 'ip'): + hosts.append(nic.ip) + except WrongIdError: + logger.debug( + "VM with ID {} does not exist".format(order.vm_id)) + if len(keys) > 0: + save_ssh_key.delay(hosts, keys) + else: + logger.debug("The user {} has no VMs. We don't need to configure " + "the ssh keys.".format(self.opennebula_user.name)) From 96be1245dcb94a98a565aecb5b91a4205914634e Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Tue, 29 Aug 2017 18:15:23 +0200 Subject: [PATCH 068/336] utils/tasks: Refactored code --- utils/tasks.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/utils/tasks.py b/utils/tasks.py index 7e015df7..a96decce 100644 --- a/utils/tasks.py +++ b/utils/tasks.py @@ -18,11 +18,13 @@ def save_ssh_key(self, hosts, keys): :param keys: A list of keys to be added """ return_value = True - with tempfile.NamedTemporaryFile() as tmp_manifest: + with tempfile.NamedTemporaryFile(delete=True) as tmp_manifest: # Generate manifest to be used for configuring the hosts - tmp_manifest.writelines([b'__ssh_authorized_keys root \\', - ' --key "{keys}"'.format( - keys='\n'.join(keys)).encode('utf-8')]) + lines_list = [' --key "{key}"\\\n'.format(key=key).encode('utf-8') for + key in keys] + lines_list.insert(0, b'__ssh_authorized_keys root \\\n') + tmp_manifest.writelines(lines_list) + tmp_manifest.flush() try: configure_hosts_simple(hosts, tmp_manifest.name, From 3e88b3bd5372398787712c599ece074bc77a3eb4 Mon Sep 17 00:00:00 2001 From: PCoder Date: Wed, 30 Aug 2017 01:51:59 +0530 Subject: [PATCH 069/336] Updated Changelog for 1.1.1 --- Changelog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Changelog b/Changelog index 6d1dfd5d..1f5b70e6 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,8 @@ +1.1.1: 2017-08-29 + * #3709: [datacenterlight] Added faq tos cms template + * #3657: [datacenterlight] Added a new contact section at landing + * #3740: [datacenterlight] Made contact section to send email to info when user submits a message + * #3757: [datacenterlight] Added new routes to dcl 1.1: 2017-08-24 * #3637: [datacenterlight, hosting] Added Stripe error handler * #3695: [hosting] Applied new design for VM list in hosting From 92e47b6f90803a52a6ea5ab4dd2a335eca007cde Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Wed, 30 Aug 2017 09:42:56 +0200 Subject: [PATCH 070/336] Added manage_public_key when deleting a key (However, this does not seem to work in cdist) --- hosting/views.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/hosting/views.py b/hosting/views.py index 3acc3f11..05a2b0dd 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -363,17 +363,14 @@ class SSHKeyDeleteView(LoginRequiredMixin, DeleteView): def delete(self, request, *args, **kwargs): owner = self.request.user - manager = OpenNebulaManager() + manager = OpenNebulaManager( + email=owner.email, + password=owner.password + ) pk = self.kwargs.get('pk') # Get user ssh key public_key = UserHostingKey.objects.get(pk=pk).public_key - # Add ssh key to user - try: - manager.remove_public_key(user=owner, public_key=public_key) - except ConnectionError: - pass - except WrongNameError: - pass + manager.manage_public_key([{'value': public_key, 'state': False}]) return super(SSHKeyDeleteView, self).delete(request, *args, **kwargs) @@ -465,7 +462,7 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView): public_key = form.cleaned_data['public_key'] if type(public_key) is bytes: public_key = public_key.decode() - manager.save_public_key([public_key]) + manager.manage_public_key([{'value': public_key, 'state': True}]) return HttpResponseRedirect(self.success_url) def post(self, request, *args, **kwargs): From 666cf187eac933e89a94cd1fd0ca2161918fe623 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Wed, 30 Aug 2017 09:43:54 +0200 Subject: [PATCH 071/336] Refactored and added comments --- opennebula_api/models.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/opennebula_api/models.py b/opennebula_api/models.py index a99d8353..0167e000 100644 --- a/opennebula_api/models.py +++ b/opennebula_api/models.py @@ -504,11 +504,16 @@ class OpenNebulaManager(): except ConnectionError: raise - def save_public_key(self, keys): + def manage_public_key(self, keys): """ - A function that saves the supplied keys to the authorized_keys file + A function that manages the supplied keys in the authorized_keys file - :param keys: List of ssh keys that are to be added + :param keys: List of ssh keys that are to be added/removed + A key should be a dict of the form + { + 'value': 'sha-.....', # public key as string + 'state': True # whether key is to be added or + } # removed :return: """ owner = CustomUser.objects.filter( From a4a2b2a803ec90d2f9f752dfaeb70e94b105e6c3 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Wed, 30 Aug 2017 09:44:33 +0200 Subject: [PATCH 072/336] Refactored and commented utils/tasks --- utils/tasks.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/utils/tasks.py b/utils/tasks.py index a96decce..ad0a0e53 100644 --- a/utils/tasks.py +++ b/utils/tasks.py @@ -15,13 +15,22 @@ def save_ssh_key(self, hosts, keys): Saves ssh key into the VMs of a user using cdist :param hosts: A list of hosts to be configured - :param keys: A list of keys to be added + :param keys: A list of keys to be added. A key should be dict of the + form { + 'value': 'sha-.....', # public key as string + 'state': True # whether key is to be added or + } # removed + """ return_value = True with tempfile.NamedTemporaryFile(delete=True) as tmp_manifest: # Generate manifest to be used for configuring the hosts - lines_list = [' --key "{key}"\\\n'.format(key=key).encode('utf-8') for - key in keys] + lines_list = [ + ' --key "{key}" --state {state} \\\n'.format( + key=key['value'], + state='present' if key['state'] else 'absent' + ).encode('utf-8') + for key in keys] lines_list.insert(0, b'__ssh_authorized_keys root \\\n') tmp_manifest.writelines(lines_list) tmp_manifest.flush() From 5ffb2a2bb702b25499a540190e2e9efc1e264431 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Wed, 30 Aug 2017 10:04:19 +0200 Subject: [PATCH 073/336] Improved the contact us email message subject & reformatted code --- datacenterlight/views.py | 44 +++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/datacenterlight/views.py b/datacenterlight/views.py index 9eaf95aa..25c2b87f 100644 --- a/datacenterlight/views.py +++ b/datacenterlight/views.py @@ -1,27 +1,27 @@ -from django.views.generic import FormView, CreateView, TemplateView, DetailView -from django.http import HttpResponseRedirect -from .forms import BetaAccessForm, ContactForm -from .models import BetaAccess, BetaAccessVMType, BetaAccessVM, VMTemplate -from django.contrib import messages -from django.core.urlresolvers import reverse -from utils.mailer import BaseEmail -from django.shortcuts import render -from django.shortcuts import redirect from django import forms -from django.core.exceptions import ValidationError -from django.views.decorators.cache import cache_control from django.conf import settings +from django.contrib import messages +from django.core.exceptions import ValidationError +from django.core.urlresolvers import reverse +from django.http import HttpResponseRedirect +from django.shortcuts import redirect +from django.shortcuts import render from django.utils.translation import ugettext_lazy as _ -from utils.forms import BillingAddressForm -from utils.models import BillingAddress +from django.views.decorators.cache import cache_control +from django.views.generic import FormView, CreateView, TemplateView, DetailView + +from datacenterlight.tasks import create_vm_task from hosting.models import HostingOrder -from utils.stripe_utils import StripeUtils from membership.models import CustomUser, StripeCustomer from opennebula_api.models import OpenNebulaManager from opennebula_api.serializers import VirtualMachineTemplateSerializer, \ VMTemplateSerializer -from datacenterlight.tasks import create_vm_task +from utils.forms import BillingAddressForm +from utils.mailer import BaseEmail +from utils.stripe_utils import StripeUtils from utils.tasks import send_plain_email_task +from .forms import BetaAccessForm, ContactForm +from .models import BetaAccess, BetaAccessVMType, BetaAccessVM, VMTemplate class ContactUsView(FormView): @@ -43,7 +43,10 @@ class ContactUsView(FormView): def form_valid(self, form): form.save() email_data = { - 'subject': 'Request received on Data Center Light', + 'subject': "{dcl_text} Message from {sender}".format( + dcl_text=settings.DCL_TEXT, + sender=form.cleaned_data.get('email') + ), 'from_email': settings.DCL_SUPPORT_FROM_ADDRESS, 'to': ['info@ungleich.ch'], 'body': "\n".join( @@ -57,7 +60,8 @@ class ContactUsView(FormView): else: return render(self.request, 'datacenterlight/index.html', - self.get_context_data(success=True, contact_form=form)) + self.get_context_data(success=True, + contact_form=form)) class LandingProgramView(TemplateView): @@ -351,7 +355,8 @@ class IndexView(CreateView): def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) context.update({ - 'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host()), + 'base_url': "{0}://{1}".format(self.request.scheme, + self.request.get_host()), 'contact_form': ContactForm }) return context @@ -456,7 +461,8 @@ class PaymentOrderView(FormView): token=token) if not customer: form.add_error("__all__", "Invalid credit card") - return self.render_to_response(self.get_context_data(form=form)) + return self.render_to_response( + self.get_context_data(form=form)) # Create Billing Address billing_address = form.save() From 51b1ee201344c1f425906e929c2feff2ed0ad889 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Wed, 30 Aug 2017 12:02:53 +0200 Subject: [PATCH 074/336] Added call to manage_public_key task when generating dcl generated keys and reorganized imports --- hosting/views.py | 62 ++++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/hosting/views.py b/hosting/views.py index 05a2b0dd..3b59a09f 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -1,45 +1,42 @@ +import logging import uuid -from django.core.files.base import ContentFile - -from oca.pool import WrongNameError, WrongIdError -from django.shortcuts import render -from django.http import Http404 -from django.core.urlresolvers import reverse_lazy, reverse +from django.conf import settings +from django.contrib import messages from django.contrib.auth.mixins import LoginRequiredMixin +from django.contrib.auth.tokens import default_token_generator +from django.core.files.base import ContentFile +from django.core.urlresolvers import reverse_lazy, reverse +from django.http import Http404 +from django.http import HttpResponseRedirect +from django.shortcuts import redirect +from django.shortcuts import render +from django.utils.http import urlsafe_base64_decode +from django.utils.safestring import mark_safe +from django.utils.translation import ugettext_lazy as _ from django.views.generic import View, CreateView, FormView, ListView, \ DetailView, \ DeleteView, TemplateView, UpdateView -from django.http import HttpResponseRedirect -from django.contrib import messages -from django.conf import settings -from django.shortcuts import redirect -from django.utils.http import urlsafe_base64_decode -from django.contrib.auth.tokens import default_token_generator - from guardian.mixins import PermissionRequiredMixin -from stored_messages.settings import stored_messages_settings -from stored_messages.models import Message +from oca.pool import WrongIdError from stored_messages.api import mark_read -from django.utils.safestring import mark_safe +from stored_messages.models import Message +from stored_messages.settings import stored_messages_settings from membership.models import CustomUser, StripeCustomer -from utils.stripe_utils import StripeUtils -from utils.forms import BillingAddressForm, PasswordResetRequestForm, \ - UserBillingAddressForm -from utils.views import PasswordResetViewMixin, \ - PasswordResetConfirmViewMixin, LoginViewMixin -from utils.mailer import BaseEmail -from .models import HostingOrder, HostingBill, HostingPlan, UserHostingKey -from .forms import HostingUserSignupForm, HostingUserLoginForm, \ - UserHostingKeyForm, generate_ssh_key_name -from .mixins import ProcessVMSelectionMixin - from opennebula_api.models import OpenNebulaManager from opennebula_api.serializers import VirtualMachineSerializer, \ VirtualMachineTemplateSerializer -from django.utils.translation import ugettext_lazy as _ -import logging +from utils.forms import BillingAddressForm, PasswordResetRequestForm, \ + UserBillingAddressForm +from utils.mailer import BaseEmail +from utils.stripe_utils import StripeUtils +from utils.views import PasswordResetViewMixin, \ + PasswordResetConfirmViewMixin, LoginViewMixin +from .forms import HostingUserSignupForm, HostingUserLoginForm, \ + UserHostingKeyForm, generate_ssh_key_name +from .mixins import ProcessVMSelectionMixin +from .models import HostingOrder, HostingBill, HostingPlan, UserHostingKey logger = logging.getLogger(__name__) @@ -411,6 +408,13 @@ class SSHKeyChoiceView(LoginRequiredMixin, View): user=request.user, public_key=public_key, name=name) filename = name + '_' + str(uuid.uuid4())[:8] + '_private.pem' ssh_key.private_key.save(filename, content) + owner = self.request.user + manager = OpenNebulaManager( + email=owner.email, + password=owner.password + ) + public_key_str = public_key.decode() + manager.manage_public_key([{'value': public_key_str, 'state': True}]) return redirect(reverse_lazy('hosting:ssh_keys'), foo='bar') From 03ab40eed590b9646bd4ce310910758349892958 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Wed, 30 Aug 2017 16:05:35 +0530 Subject: [PATCH 075/336] proportions fixed for dashboard box --- hosting/static/hosting/css/dashboard.css | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/hosting/static/hosting/css/dashboard.css b/hosting/static/hosting/css/dashboard.css index 80855301..7d2f245d 100644 --- a/hosting/static/hosting/css/dashboard.css +++ b/hosting/static/hosting/css/dashboard.css @@ -5,7 +5,7 @@ bottom: 0; left: 0; right: 0; - background-color: rgba(41, 66, 122, 0.59); + background-color: rgba(91, 116, 173, 0.7); z-index: -1; } .hosting-dashboard:before { @@ -23,12 +23,12 @@ .hosting-dashboard .dashboard-container-head { color: #fff; - margin-bottom: 25px; + margin-bottom: 60px; } .hosting-dashboard-item { background: #e9ebee; - box-shadow: 1px 3px 3px rgba(0,0,0,0.5); + box-shadow: 1px 3px 3px rgba(0,0,0,0.4); padding: 25px; color: rgba(124, 139, 175, 1); font-size: 19px; @@ -45,14 +45,14 @@ .hosting-dashboard-item h2 { margin: 0; - font-size: 19px; - padding-bottom: 10px; + font-size: 18px; + padding-bottom: 15px; border-bottom: 2px solid #acb5cf; margin-bottom: 25px; } .hosting-dashboard-image { - height: 100px; + height: 110px; fill: #8b9bb7; display: flex; align-items: center; @@ -61,7 +61,7 @@ .hosting-dashboard-image svg { width: 100%; height: 100%; - max-height: 65px; + max-height: 79px; } .hosting-dashboard-image img { opacity: 0.2; @@ -74,6 +74,6 @@ flex-wrap: wrap; } .hosting-dashboard-item { - width: 32%; + width: 31.5%; } } \ No newline at end of file From e4b5ed5e4b6950ef86a886cf0d0b5747c2f1b4fb Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Wed, 30 Aug 2017 16:14:02 +0530 Subject: [PATCH 076/336] hover color fix --- hosting/static/hosting/css/dashboard.css | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/hosting/static/hosting/css/dashboard.css b/hosting/static/hosting/css/dashboard.css index 7d2f245d..c7bbecd9 100644 --- a/hosting/static/hosting/css/dashboard.css +++ b/hosting/static/hosting/css/dashboard.css @@ -33,7 +33,7 @@ color: rgba(124, 139, 175, 1); font-size: 19px; display: block; - margin-bottom: 15px; + margin-bottom: 20px; } .hosting-dashboard-item:hover, .hosting-dashboard-item:focus, @@ -48,15 +48,21 @@ font-size: 18px; padding-bottom: 15px; border-bottom: 2px solid #acb5cf; - margin-bottom: 25px; + margin-bottom: 10px; } .hosting-dashboard-image { - height: 110px; + height: 120px; fill: #8b9bb7; display: flex; align-items: center; } +.hosting-dashboard-item:hover .hosting-dashboard-image, +.hosting-dashboard-item:focus .hosting-dashboard-image, +.hosting-dashboard-item:active .hosting-dashboard-image { + fill: #6D84AC; + color: #6D84AC; +} .hosting-dashboard-image img, .hosting-dashboard-image svg { width: 100%; From f45ec160913d38525db4daa3dc1077e115b6f26f Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Wed, 30 Aug 2017 19:35:23 +0530 Subject: [PATCH 077/336] added options to card details --- hosting/static/hosting/css/commons.css | 24 ++++++++++++++++++++- hosting/static/hosting/css/landing-page.css | 5 +++-- hosting/static/hosting/img/delete.svg | 7 ++++++ hosting/templates/hosting/settings.html | 17 +++++++++++++-- 4 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 hosting/static/hosting/img/delete.svg diff --git a/hosting/static/hosting/css/commons.css b/hosting/static/hosting/css/commons.css index dd81a423..18edfa22 100644 --- a/hosting/static/hosting/css/commons.css +++ b/hosting/static/hosting/css/commons.css @@ -246,7 +246,8 @@ .settings-container h4 { margin-bottom: 15px; - color: #999; + color: #333; + font-size: 14px; } .settings-container .card-expiry-element, @@ -287,4 +288,25 @@ .btn-wide { min-width: 120px; +} + +.caps_link { + font-weight: 600; + color: #8da4c0; + fill: #8da4c0; + padding: 6px 0; + display: block; +} +.caps_link:hover { + color: #627388; + fill: #627388; + text-decoration: none; +} + +.settings-container .credit-card-details-opt { + padding-top: 15px; +} + +.caps_link .un-icon { + margin-right: 5px; } \ No newline at end of file diff --git a/hosting/static/hosting/css/landing-page.css b/hosting/static/hosting/css/landing-page.css index d1dc657a..07e7490c 100644 --- a/hosting/static/hosting/css/landing-page.css +++ b/hosting/static/hosting/css/landing-page.css @@ -568,6 +568,7 @@ a.unlink:hover { border: 1px solid #a1a1a1; border-radius: 3px; padding: 5px; + margin-bottom: 15px; } .card-warning-error { border: 1px solid #EB4D5C; @@ -725,12 +726,12 @@ a.unlink:hover { @media (min-width: 768px) { .dcl-billing { - padding-right: 50px; + padding-right: 65px; border-right: 1px solid #eee; } .dcl-creditcard { - padding-left: 50px; + padding-left: 65px; } .tbl-tot { diff --git a/hosting/static/hosting/img/delete.svg b/hosting/static/hosting/img/delete.svg new file mode 100644 index 00000000..31991c4a --- /dev/null +++ b/hosting/static/hosting/img/delete.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + \ No newline at end of file diff --git a/hosting/templates/hosting/settings.html b/hosting/templates/hosting/settings.html index 11283b94..04a2a017 100644 --- a/hosting/templates/hosting/settings.html +++ b/hosting/templates/hosting/settings.html @@ -27,14 +27,27 @@
    - {% if credit_card_data.last4 %} + {% if not credit_card_data.last4 %} {% else %} -

    {% trans "Add a new Card." %}

    +

    + {% trans "Add a new Card." %}
    + {% trans "We are using Stripe for payment and store your information in our database." %} +

    From 9ab82298c5e12508abdf417267997c6b0500bf17 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Wed, 30 Aug 2017 20:00:59 +0530 Subject: [PATCH 078/336] edit card, remove settings styles --- hosting/locale/de/LC_MESSAGES/django.po | 57 +++++++++++++++---------- hosting/static/hosting/css/commons.css | 19 +++++++-- hosting/templates/hosting/settings.html | 14 +++--- 3 files changed, 58 insertions(+), 32 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index 525320a8..726af613 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-29 17:41+0530\n" +"POT-Creation-Date: 2017-08-30 19:54+0530\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -323,9 +323,8 @@ msgid "" "You are not making any payment yet. After submitting your card information, " "you will be taken to the Confirm Order Page." msgstr "" -"Es wird noch keine Bezahlung vorgenommen. Die Bezahlung wird erst " -"ausgelöst, nachdem Du die Bestellung auf der nächsten Seite bestätigt " -"hast." +"Es wird noch keine Bezahlung vorgenommen. Die Bezahlung wird erst ausgelöst, " +"nachdem Du die Bestellung auf der nächsten Seite bestätigt hast." msgid "Submit" msgstr "Absenden" @@ -351,18 +350,46 @@ msgstr "Deine Kreditkartennummer" msgid "Reset your password" msgstr "Passwort zurücksetzen" -msgid "My Settings" -msgstr "Meine Einstellungen" - msgid "Last" msgstr "" msgid "Type" msgstr "Kartentyp" +msgid "REMOVE CARD" +msgstr "" + +msgid "EDIT CARD" +msgstr "" + msgid "Add a new Card." msgstr "" +#, fuzzy +#| msgid "" +#| "\n" +#| " Please fill in your credit card " +#| "information below. We are using Stripe for payment and do not store\n" +#| " your information in our database.\n" +#| " " +msgid "" +"\n" +" Please fill in your credit card " +"information below. We are using Stripe for payment and do not store your information in our " +"database.\n" +" " +msgstr "" +"\n" +"Bitte füll Deine Kreditkarteninformationen unten aus. Wir nutzen Stripe für die Bezahlung und " +"speichern keine Informationen in unserer Datenbank." + +msgid "You are not making any payment here." +msgstr "" + msgid "Add your public SSH key" msgstr "Füge deinen öffentlichen SSH-Key hinzu" @@ -519,22 +546,6 @@ msgid "" "We could not find the requested VM. Please " "contact Data Center Light Support." msgstr "Kontaktiere den Data Center Light Support." -<<<<<<< HEAD - -#~ msgid "" -#~ "\n" -#~ " You are not making any " -#~ "payment yet. After submitting your card\n" -#~ " information, you will be " -#~ "taken to the Confirm Order Page.\n" -#~ " " -#~ msgstr "" -#~ "\n" -#~ "Es wird noch keine Bezahlung vorgenommen. Nach der Eingabe Deiner " -#~ "Kreditkateninformationen wirst du auf die Bestellbestätigungsseite " -#~ "weitergeleitet." -======= ->>>>>>> master #~ msgid "Approved" #~ msgstr "Akzeptiert" diff --git a/hosting/static/hosting/css/commons.css b/hosting/static/hosting/css/commons.css index 18edfa22..2516ed24 100644 --- a/hosting/static/hosting/css/commons.css +++ b/hosting/static/hosting/css/commons.css @@ -290,14 +290,14 @@ min-width: 120px; } -.caps_link { +.caps-link { font-weight: 600; color: #8da4c0; fill: #8da4c0; padding: 6px 0; display: block; } -.caps_link:hover { +.caps-link:hover { color: #627388; fill: #627388; text-decoration: none; @@ -307,6 +307,19 @@ padding-top: 15px; } -.caps_link .un-icon { +.caps-link .svg-img { margin-right: 5px; + height: 12px; + position: relative; + top: 1px; +} + +.settings-container .caps-link { + font-size: 12px; + letter-spacing: 1.1px; +} + +.settings-container .credit-card-details-opt .btn-vm-contact { + font-weight: 600; + padding: 4px 15px; } \ No newline at end of file diff --git a/hosting/templates/hosting/settings.html b/hosting/templates/hosting/settings.html index 04a2a017..e841e534 100644 --- a/hosting/templates/hosting/settings.html +++ b/hosting/templates/hosting/settings.html @@ -27,7 +27,7 @@
    - {% if not credit_card_data.last4 %} + {% if credit_card_data.last4 %}
    {% trans "Credit Card" %}
    {% trans "Last" %} 4: *****{{credit_card_data.last4}}
    @@ -35,7 +35,7 @@
    {% else %} -

    - {% trans "Add a new Card." %}
    - {% trans "We are using Stripe for payment and store your information in our database." %} -

    +

    {% trans "Add a new Card." %}

    +

    + {% blocktrans %} + Please fill in your credit card information below. We are using Stripe for payment and do not store your information in our database. + {% endblocktrans %} +

    From 51190a5546aa4cda999c29b2bfc7c493640ff481 Mon Sep 17 00:00:00 2001 From: PCoder Date: Thu, 31 Aug 2017 00:36:19 +0530 Subject: [PATCH 079/336] Added page_title in the title tag and the page title text --- datacenterlight/templates/datacenterlight/cms_page.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/datacenterlight/templates/datacenterlight/cms_page.html b/datacenterlight/templates/datacenterlight/cms_page.html index 7b43c02b..3e3b038a 100644 --- a/datacenterlight/templates/datacenterlight/cms_page.html +++ b/datacenterlight/templates/datacenterlight/cms_page.html @@ -1,7 +1,7 @@ {% extends "datacenterlight/base.html" %} {% load staticfiles cms_tags sekizai_tags %} {% block title %} -{% placeholder 'datacenterlight_cms_page_title_tag' %} +{% page_attribute page_title %} {% endblock %} {% block content %} {% addtoblock "css" %} @@ -13,7 +13,7 @@
    -

    {% placeholder 'datacenterlight_cms_page_title' %}

    +

    {% page_attribute page_title %}

    From b3b2ca7193c436ef5d672fb71e124b27eb59ffba Mon Sep 17 00:00:00 2001 From: PCoder Date: Thu, 31 Aug 2017 00:39:36 +0530 Subject: [PATCH 080/336] Removed unused placeholder configuration --- dynamicweb/settings/base.py | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/dynamicweb/settings/base.py b/dynamicweb/settings/base.py index f6839783..08ce457d 100644 --- a/dynamicweb/settings/base.py +++ b/dynamicweb/settings/base.py @@ -317,24 +317,6 @@ CMS_PLACEHOLDER_CONF = { }, ] }, - 'datacenterlight_cms_page_title_tag': { - 'name': _('Data Center Light Title Tag Text'), - 'default_plugins': [ - { - 'plugin_type': 'TextPlugin', - 'values': {'body': ''}, - }, - ] - }, - 'datacenterlight_cms_page_title': { - 'name': _('Data Center Light Title Text'), - 'default_plugins': [ - { - 'plugin_type': 'TextPlugin', - 'values': {'body': ''}, - }, - ] - }, } CACHES = { From 79ecdadeb2b93ec055fbd3c1fc42c9e862982561 Mon Sep 17 00:00:00 2001 From: PCoder Date: Thu, 31 Aug 2017 12:53:00 +0530 Subject: [PATCH 081/336] Added ssh public key validation --- hosting/forms.py | 45 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/hosting/forms.py b/hosting/forms.py index 288a8caf..c9ceb514 100644 --- a/hosting/forms.py +++ b/hosting/forms.py @@ -1,13 +1,17 @@ +import base64 import datetime +import logging +import struct from django import forms -from membership.models import CustomUser from django.contrib.auth import authenticate - from django.utils.translation import ugettext_lazy as _ +from membership.models import CustomUser from .models import UserHostingKey +logger = logging.getLogger(__name__) + def generate_ssh_key_name(): return 'dcl-generated-key-' + datetime.datetime.now().strftime('%m%d%y%H%M') @@ -38,7 +42,7 @@ class HostingUserLoginForm(forms.Form): CustomUser.objects.get(email=email) return email except CustomUser.DoesNotExist: - raise forms.ValidationError("User does not exist") + raise forms.ValidationError(_("User does not exist")) else: return email @@ -51,7 +55,8 @@ class HostingUserSignupForm(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): @@ -65,19 +70,45 @@ class HostingUserSignupForm(forms.ModelForm): class UserHostingKeyForm(forms.ModelForm): private_key = forms.CharField(widget=forms.HiddenInput(), required=False) public_key = forms.CharField(widget=forms.Textarea( - attrs={'class': 'form_public_key', 'placeholder': _('Paste here your public key')}), + attrs={'class': 'form_public_key', + 'placeholder': _('Paste here your public key')}), required=False, ) user = forms.models.ModelChoiceField(queryset=CustomUser.objects.all(), - required=False, widget=forms.HiddenInput()) + required=False, + widget=forms.HiddenInput()) name = forms.CharField(required=False, widget=forms.TextInput( - attrs={'class': 'form_key_name', 'placeholder': _('Give a name to your key')})) + attrs={'class': 'form_key_name', + 'placeholder': _('Give a name to your key')})) def __init__(self, *args, **kwargs): self.request = kwargs.pop("request") super(UserHostingKeyForm, self).__init__(*args, **kwargs) self.fields['name'].label = _('Key name') + def clean_public_key(self): + """ + A simple validation of ssh public key + See https://www.ietf.org/rfc/rfc4716.txt + :return: + """ + KEY_ERROR_MESSAGE = _("Please input a proper SSH key") + openssh_pubkey = self.data.get('public_key') + data = None + try: + key_type, key_string, comment = openssh_pubkey.split() + data = base64.decodebytes(key_string.encode('utf-8')) + except Exception as e: + logger.error("Exception while decoding ssh key {}".format(e)) + raise forms.ValidationError(KEY_ERROR_MESSAGE) + int_len = 4 + str_len = struct.unpack('>I', data[:int_len])[0] # this should return 7 + if str_len != 7: + raise forms.ValidationError(KEY_ERROR_MESSAGE) + if data[int_len:int_len + str_len] != key_type.encode('utf-8'): + raise forms.ValidationError(KEY_ERROR_MESSAGE) + return openssh_pubkey + def clean_name(self): return self.data.get('name') From fae96ec5acc4615df09074366b341172e65d1f46 Mon Sep 17 00:00:00 2001 From: PCoder Date: Thu, 31 Aug 2017 12:54:08 +0530 Subject: [PATCH 082/336] Added email and password as attributes of the class OpenNebulaManager --- opennebula_api/models.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/opennebula_api/models.py b/opennebula_api/models.py index 0167e000..89a56774 100644 --- a/opennebula_api/models.py +++ b/opennebula_api/models.py @@ -1,16 +1,15 @@ -import oca -import socket import logging +import socket -from oca.pool import WrongNameError, WrongIdError -from oca.exceptions import OpenNebulaException - +import oca from django.conf import settings +from oca.exceptions import OpenNebulaException +from oca.pool import WrongNameError, WrongIdError -from utils.models import CustomUser -from .exceptions import KeyExistsError, UserExistsError, UserCredentialError from hosting.models import HostingOrder +from utils.models import CustomUser from utils.tasks import save_ssh_key +from .exceptions import KeyExistsError, UserExistsError, UserCredentialError logger = logging.getLogger(__name__) @@ -19,7 +18,8 @@ class OpenNebulaManager(): """This class represents an opennebula manager.""" def __init__(self, email=None, password=None): - + self.email = email + self.password = password # Get oneadmin client self.oneadmin_client = self._get_opennebula_client( settings.OPENNEBULA_USERNAME, @@ -517,11 +517,11 @@ class OpenNebulaManager(): :return: """ owner = CustomUser.objects.filter( - email=self.opennebula_user.name).first() + email=self.email).first() all_orders = HostingOrder.objects.filter(customer__user=owner) if len(all_orders) > 0: logger.debug("The user {} has 1 or more VMs. We need to configure " - "the ssh keys.".format(self.opennebula_user.name)) + "the ssh keys.".format(self.email)) hosts = [] for order in all_orders: try: @@ -536,4 +536,4 @@ class OpenNebulaManager(): save_ssh_key.delay(hosts, keys) else: logger.debug("The user {} has no VMs. We don't need to configure " - "the ssh keys.".format(self.opennebula_user.name)) + "the ssh keys.".format(self.email)) From b35e74e3551857f845cfdb9dd3352883bb47bd2f Mon Sep 17 00:00:00 2001 From: PCoder Date: Thu, 31 Aug 2017 12:55:19 +0530 Subject: [PATCH 083/336] Updated cdist integration code with index parameter --- utils/tasks.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/utils/tasks.py b/utils/tasks.py index 1c6dd449..6a246d54 100644 --- a/utils/tasks.py +++ b/utils/tasks.py @@ -1,6 +1,7 @@ -import cdist import tempfile -from cdist.integration import configure_hosts_simple + +import cdist +import cdist.integration as cdist_integration from celery.utils.log import get_task_logger from django.conf import settings from django.core.mail import EmailMessage @@ -50,9 +51,13 @@ def save_ssh_key(self, hosts, keys): tmp_manifest.writelines(lines_list) tmp_manifest.flush() try: - configure_hosts_simple(hosts, - tmp_manifest.name, - verbose=cdist.argparse.VERBOSE_TRACE) + cdist_instance_index = cdist_integration.instance_index + cdist_index = next(cdist_instance_index) + cdist_integration.configure_hosts_simple(hosts, + tmp_manifest.name, + index=cdist_index, + verbose=cdist.argparse.VERBOSE_TRACE) + cdist_instance_index.free(cdist_index) except Exception as cdist_exception: logger.error(cdist_exception) return_value = False From 60561be3b9f726f7cc7cb057c4ee8b57ce2c0c1f Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Thu, 31 Aug 2017 12:20:00 +0200 Subject: [PATCH 084/336] Added missing condition and reformatted code --- hosting/forms.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/hosting/forms.py b/hosting/forms.py index c9ceb514..8541e1f1 100644 --- a/hosting/forms.py +++ b/hosting/forms.py @@ -1,8 +1,8 @@ -import base64 import datetime import logging -import struct +import base64 +import struct from django import forms from django.contrib.auth import authenticate from django.utils.translation import ugettext_lazy as _ @@ -14,7 +14,8 @@ logger = logging.getLogger(__name__) def generate_ssh_key_name(): - return 'dcl-generated-key-' + datetime.datetime.now().strftime('%m%d%y%H%M') + return 'dcl-generated-key-' + datetime.datetime.now().strftime( + '%m%d%y%H%M') class HostingUserLoginForm(forms.Form): @@ -92,6 +93,8 @@ class UserHostingKeyForm(forms.ModelForm): See https://www.ietf.org/rfc/rfc4716.txt :return: """ + if 'generate' in self.request.POST: + return self.data.get('public_key') KEY_ERROR_MESSAGE = _("Please input a proper SSH key") openssh_pubkey = self.data.get('public_key') data = None @@ -102,7 +105,7 @@ class UserHostingKeyForm(forms.ModelForm): logger.error("Exception while decoding ssh key {}".format(e)) raise forms.ValidationError(KEY_ERROR_MESSAGE) int_len = 4 - str_len = struct.unpack('>I', data[:int_len])[0] # this should return 7 + str_len = struct.unpack('>I', data[:int_len])[0] if str_len != 7: raise forms.ValidationError(KEY_ERROR_MESSAGE) if data[int_len:int_len + str_len] != key_type.encode('utf-8'): From a07922e4d45bf69bb47bf734c24528d412366fea Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 31 Aug 2017 15:54:01 +0530 Subject: [PATCH 085/336] style and translations fix --- hosting/locale/de/LC_MESSAGES/django.po | 23 +++++------------------ hosting/static/hosting/css/commons.css | 6 +++--- hosting/templates/hosting/base_short.html | 2 ++ hosting/templates/hosting/payment.html | 6 +++++- hosting/templates/hosting/settings.html | 10 ++++++---- hosting/views.py | 3 --- 6 files changed, 21 insertions(+), 29 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index 726af613..a0f8506a 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-30 19:54+0530\n" +"POT-Creation-Date: 2017-08-31 15:51+0530\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -365,30 +365,17 @@ msgstr "" msgid "Add a new Card." msgstr "" -#, fuzzy -#| msgid "" -#| "\n" -#| " Please fill in your credit card " -#| "information below. We are using Stripe for payment and do not store\n" -#| " your information in our database.\n" -#| " " msgid "" -"\n" -" Please fill in your credit card " -"information below. We are using Stripe for payment and do not store your information in our " -"database.\n" -" " +"Please fill in your credit card information below. We are using Stripe for payment and do not " +"store your information in our database." msgstr "" -"\n" "Bitte füll Deine Kreditkarteninformationen unten aus. Wir nutzen Stripe für die Bezahlung und " "speichern keine Informationen in unserer Datenbank." msgid "You are not making any payment here." -msgstr "" +msgstr "Es wird noch keine Bezahlung vorgenommen" msgid "Add your public SSH key" msgstr "Füge deinen öffentlichen SSH-Key hinzu" diff --git a/hosting/static/hosting/css/commons.css b/hosting/static/hosting/css/commons.css index 2516ed24..efa47ec6 100644 --- a/hosting/static/hosting/css/commons.css +++ b/hosting/static/hosting/css/commons.css @@ -294,7 +294,7 @@ font-weight: 600; color: #8da4c0; fill: #8da4c0; - padding: 6px 0; + padding: 8px 0; display: block; } .caps-link:hover { @@ -309,13 +309,13 @@ .caps-link .svg-img { margin-right: 5px; - height: 12px; + height: 11px; position: relative; top: 1px; } .settings-container .caps-link { - font-size: 12px; + font-size: 11px; letter-spacing: 1.1px; } diff --git a/hosting/templates/hosting/base_short.html b/hosting/templates/hosting/base_short.html index 4dcf5074..18d8bc30 100644 --- a/hosting/templates/hosting/base_short.html +++ b/hosting/templates/hosting/base_short.html @@ -25,6 +25,8 @@ + {% block css_extra %} + {% endblock css_extra %} diff --git a/hosting/templates/hosting/payment.html b/hosting/templates/hosting/payment.html index 543234f0..5d4c66e3 100644 --- a/hosting/templates/hosting/payment.html +++ b/hosting/templates/hosting/payment.html @@ -1,8 +1,12 @@ {% extends "hosting/base_short.html" %} {% load staticfiles bootstrap3 i18n %} + +{% block css_extra %} + +{% endblock css_extra %} + {% block content %} -
    diff --git a/hosting/templates/hosting/settings.html b/hosting/templates/hosting/settings.html index e841e534..fed85c9f 100644 --- a/hosting/templates/hosting/settings.html +++ b/hosting/templates/hosting/settings.html @@ -1,6 +1,10 @@ {% extends "hosting/base_short.html" %} {% load staticfiles bootstrap3 i18n %} +{% block css_extra %} + +{% endblock css_extra %} + {% block content %}
    @@ -15,7 +19,7 @@ {% for field in form %} {% csrf_token %} - {% bootstrap_field field show_label=False type='fields'%} + {% bootstrap_field field show_label=False type='fields' bound_css_class='' %} {% endfor %}
    @@ -46,9 +50,7 @@ {% else %}

    {% trans "Add a new Card." %}

    - {% blocktrans %} - Please fill in your credit card information below. We are using Stripe for payment and do not store your information in our database. - {% endblocktrans %} + {% blocktrans %}Please fill in your credit card information below. We are using Stripe for payment and do not store your information in our database.{% endblocktrans %}

    diff --git a/hosting/views.py b/hosting/views.py index 1ee4c73b..47b18d2a 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -505,11 +505,9 @@ class SettingsView(LoginRequiredMixin, FormView): context = super(SettingsView, self).get_context_data(**kwargs) # Get user user = self.request.user - # Get user last order last_hosting_order = HostingOrder.objects.filter( customer__user=user).last() - # If user has already an hosting order, get the credit card data from # it if last_hosting_order: @@ -517,7 +515,6 @@ class SettingsView(LoginRequiredMixin, FormView): context.update({ 'credit_card_data': credit_card_data if credit_card_data else None, }) - context.update({ 'stripe_key': settings.STRIPE_API_PUBLIC_KEY }) From 9bcd064aae22daff1dd9ed78dfa4b0b915c6251b Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 31 Aug 2017 15:59:22 +0530 Subject: [PATCH 086/336] btn text changed 'View Details' -> 'View Invoice' --- hosting/templates/hosting/orders.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosting/templates/hosting/orders.html b/hosting/templates/hosting/orders.html index ea4ded94..5515a0ab 100644 --- a/hosting/templates/hosting/orders.html +++ b/hosting/templates/hosting/orders.html @@ -40,7 +40,7 @@ {% endif %}
  • - {% trans "View Detail" %} + {% trans 'See Invoice' %}
    {{user_key.name}} - @@ -42,20 +41,18 @@ -

    +

    {% trans "Show" %}

    {% if user_key.private_key %}
    -
    {% endif %} diff --git a/hosting/templates/hosting/virtual_machine_detail.html b/hosting/templates/hosting/virtual_machine_detail.html index 59a36bdc..6243c309 100644 --- a/hosting/templates/hosting/virtual_machine_detail.html +++ b/hosting/templates/hosting/virtual_machine_detail.html @@ -101,9 +101,9 @@

    {% trans "Do you want to cancel your Virtual Machine" %} ?

    {{virtual_machine.name}}

    - - From 31552b886f3c5e8ceeef7f0f111c84916f391a62 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Sat, 2 Sep 2017 00:11:16 +0530 Subject: [PATCH 108/336] btn styles fixed --- hosting/locale/de/LC_MESSAGES/django.po | 5 ++++- hosting/static/hosting/css/commons.css | 11 ++++++----- hosting/templates/hosting/settings.html | 6 +++--- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index 35687e29..d114b029 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-31 23:46+0530\n" +"POT-Creation-Date: 2017-09-02 00:05+0530\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -347,6 +347,9 @@ msgstr "Deine Kreditkartennummer" msgid "Reset your password" msgstr "Passwort zurücksetzen" +msgid "UPDATE" +msgstr "" + msgid "Last" msgstr "" diff --git a/hosting/static/hosting/css/commons.css b/hosting/static/hosting/css/commons.css index b171764d..8304a846 100644 --- a/hosting/static/hosting/css/commons.css +++ b/hosting/static/hosting/css/commons.css @@ -293,7 +293,7 @@ } .btn-wide { - min-width: 120px; + min-width: 100px; } .caps-link { @@ -317,18 +317,19 @@ .caps-link .svg-img { margin-right: 5px; - height: 11px; + height: 12px; position: relative; top: 1px; vertical-align: baseline; } .settings-container .caps-link { - font-size: 11px; + font-size: 13px; letter-spacing: 1.1px; } -.settings-container .credit-card-details-opt .btn-vm-contact { +.settings-container .btn-vm-contact { font-weight: 600; - padding: 4px 15px; + font-size: 13px; + /* padding: 4px 15px; */ } \ No newline at end of file diff --git a/hosting/templates/hosting/settings.html b/hosting/templates/hosting/settings.html index 83bff422..87e52869 100644 --- a/hosting/templates/hosting/settings.html +++ b/hosting/templates/hosting/settings.html @@ -22,7 +22,7 @@ {% bootstrap_field field show_label=False type='fields' bound_css_class='' %} {% endfor %}
    - +
    @@ -31,7 +31,7 @@
    - {% if credit_card_data.last4 %} + {% if not credit_card_data.last4 %}
    {% trans "Credit Card" %}
    {% trans "Last" %} 4: *****{{credit_card_data.last4}}
    @@ -42,7 +42,7 @@ {% trans "REMOVE CARD" %}
    From 4a3ab29bd571d53592d59876e4e2969016f2b3c3 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Sat, 2 Sep 2017 00:14:12 +0530 Subject: [PATCH 109/336] minor fix --- hosting/templates/hosting/settings.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosting/templates/hosting/settings.html b/hosting/templates/hosting/settings.html index 87e52869..e5c22e2b 100644 --- a/hosting/templates/hosting/settings.html +++ b/hosting/templates/hosting/settings.html @@ -31,7 +31,7 @@
    - {% if not credit_card_data.last4 %} + {% if credit_card_data.last4 %}
    {% trans "Credit Card" %}
    {% trans "Last" %} 4: *****{{credit_card_data.last4}}
    From 765432acbc50ceec16e228b222ffefa79f9d105c Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Sat, 2 Sep 2017 00:17:01 +0530 Subject: [PATCH 110/336] minor fix --- hosting/static/hosting/css/commons.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosting/static/hosting/css/commons.css b/hosting/static/hosting/css/commons.css index 8304a846..aefb20ea 100644 --- a/hosting/static/hosting/css/commons.css +++ b/hosting/static/hosting/css/commons.css @@ -317,7 +317,7 @@ .caps-link .svg-img { margin-right: 5px; - height: 12px; + height: 13px; position: relative; top: 1px; vertical-align: baseline; From 654f7715c8f34f749b95b8f9b608e7787574ab18 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Sat, 2 Sep 2017 01:39:53 +0530 Subject: [PATCH 111/336] Updated changelog 1.1.1 -> 1.2 --- Changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Changelog b/Changelog index 1f5b70e6..924c8605 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,11 @@ +1.2: 2017-09-01 + * #3703: [hosting] Added a new dashboard + * #3717: [datacenterlight, hosting] Changed warning color for box + * #3748: [datacenterlight] Changed order msg position for mobile + * #3762: [hosting] Text fix View details to See Invoice + * #3765: [hosting] Text fix Your SSH Keys to My SSH Keys + * #3639: [datacenterlight] Added navbar menu after payment page on landing + * #3735: [hosting] enlarged modal width and modal button width 1.1.1: 2017-08-29 * #3709: [datacenterlight] Added faq tos cms template * #3657: [datacenterlight] Added a new contact section at landing From 6f091279d78fdb8cf74c3ac04f3f2f03c015a5fb Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Sat, 2 Sep 2017 01:45:07 +0530 Subject: [PATCH 112/336] translation fix on vm list page --- hosting/locale/de/LC_MESSAGES/django.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index fac8cc5a..e70d2add 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -458,7 +458,7 @@ msgid "Virtual Machines" msgstr "Virtuelle Maschinen" msgid "To create a new virtual machine, click \"Create VM\"" -msgstr "" +msgstr "Um eine neue VM zu erzeugen, klicke \"Neue VM erzeugen\"" msgid "CREATE VM" msgstr "NEUE VM" From 1426cba3a5703bcc84d030f606442ad7922d4419 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Sat, 2 Sep 2017 01:48:51 +0530 Subject: [PATCH 113/336] approved, declined translations added --- hosting/locale/de/LC_MESSAGES/django.po | 14 +++++++------- hosting/templates/hosting/orders.html | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index e70d2add..598bcff6 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-31 23:46+0530\n" +"POT-Creation-Date: 2017-09-02 01:47+0530\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -275,6 +275,12 @@ msgstr "Betrag" msgid "Status" msgstr "" +msgid "Approved" +msgstr "Akzeptiert" + +msgid "Declined" +msgstr "Abgelehnt" + msgid "See Invoice" msgstr "Rechnung" @@ -507,12 +513,6 @@ msgstr "Kontaktiere den Data Center Light Support." #~ msgid "Your SSH Keys" #~ msgstr "Deine SSH Keys" -#~ msgid "Approved" -#~ msgstr "Akzeptiert" - -#~ msgid "Declined" -#~ msgstr "Abgelehnt" - #~ msgid "Cancel Order" #~ msgstr "Bestellung stornieren" diff --git a/hosting/templates/hosting/orders.html b/hosting/templates/hosting/orders.html index 5515a0ab..3699e9a2 100644 --- a/hosting/templates/hosting/orders.html +++ b/hosting/templates/hosting/orders.html @@ -34,9 +34,9 @@
    {{ order.price }} {% if order.approved %} - Approved + {% trans "Approved" %} {% else %} - Declined + {% trans "Declined" %} {% endif %} From 979844e55b96339511b9a5fb47e2dd10bdabc5b4 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Sat, 2 Sep 2017 02:02:05 +0530 Subject: [PATCH 114/336] hosting payment and datacenterlight payment files supported --- .../datacenterlight/landing_payment.html | 217 ++++++++++++++++++ datacenterlight/views.py | 4 +- hosting/templates/hosting/payment.html | 4 - 3 files changed, 219 insertions(+), 6 deletions(-) create mode 100644 datacenterlight/templates/datacenterlight/landing_payment.html diff --git a/datacenterlight/templates/datacenterlight/landing_payment.html b/datacenterlight/templates/datacenterlight/landing_payment.html new file mode 100644 index 00000000..f4974a56 --- /dev/null +++ b/datacenterlight/templates/datacenterlight/landing_payment.html @@ -0,0 +1,217 @@ +{% extends "hosting/base_short.html" %} +{% load staticfiles bootstrap3 i18n %} + +{% block navbar %} + {% include "datacenterlight/includes/_navbar.html" %} +{% endblock navbar %} + +{% block content %} + + +
    +
    +
    +
    +

    {%trans "Your Order" %}

    +
    +
    + {%trans "Cores" %} +
    +
    + {%trans "Memory" %} +
    +
    + {%trans "Disk space" %} +
    +
    + {%trans "Configuration" %} +
    +
    +
    +
    + {{request.session.specs.cpu|floatformat}} +
    +
    + {{request.session.specs.memory|floatformat}} GB +
    +
    + {{request.session.specs.disk_size|floatformat}} GB +
    +
    + {{request.session.template.name}} +
    +
    +
    +
    + {%trans "Total" %} {%trans "including VAT" %} +
    +
    +
    +
    {{request.session.specs.price}} + CHF/{% trans "Month" %} +
    +
    +
    +
    +
    +
    +
    +
    +

    {%trans "Billing Address"%}

    +
    +
    + {% for field in form %} + {% csrf_token %} + {% bootstrap_field field show_label=False type='fields'%} + {% endfor %} +
    +
    +
    +

    {%trans "Credit Card"%}

    +
    +
    +
    +

    + {% blocktrans %} + Please fill in your credit card information below. We are using Stripe for payment and do not store + your information in our database. + {% endblocktrans %} +

    +
    +
    +
    + {% if credit_card_data.last4 %} +
    +
    Credit Card
    +
    Last 4: *****{{credit_card_data.last4}}
    +
    Type: {{credit_card_data.cc_brand}}
    + +
    +
    +
    + {% if not messages and not form.non_field_errors %} +

    + {% trans "You are not making any payment yet. After submitting your card information, you will be taken to the Confirm Order Page." %} +

    + {% endif %} +
    + {% for message in messages %} + {% if 'failed_payment' or 'make_charge_error' in message.tags %} +
    • +

      {{ message|safe }}

      +
    + {% endif %} + {% endfor %} + {% for error in form.non_field_errors %} +

    + {{ error|escape }} +

    + {% endfor %} +
    +
    +
    +
    + +
    +
    +
    + + {% else %} +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    + +
    +
    + {% if not messages and not form.non_field_errors %} +

    + {% trans "You are not making any payment yet. After submitting your card information, you will be taken to the Confirm Order Page." %} +

    + {% endif %} +
    + {% for message in messages %} + {% if 'failed_payment' or 'make_charge_error' in message.tags %} +
    • +

      {{ message|safe }}

      +
    + {% endif %} + {% endfor %} + + {% for error in form.non_field_errors %} +

    + {{ error|escape }} +

    + {% endfor %} +
    +
    +
    +
    + +
    +
    +
    + + +
    + + {% endif %} +
    +
    +
    +
    +
    +
    +
    + + +{% if stripe_key %} +{% get_current_language as LANGUAGE_CODE %} + +{%endif%} + +{% if credit_card_data.last4 and credit_card_data.cc_brand %} + +{%endif%} + +{%endblock%} diff --git a/datacenterlight/views.py b/datacenterlight/views.py index b6a644e4..0521ffef 100644 --- a/datacenterlight/views.py +++ b/datacenterlight/views.py @@ -406,7 +406,7 @@ class WhyDataCenterLightView(IndexView): class PaymentOrderView(FormView): - template_name = 'hosting/payment.html' + template_name = 'datacenterlight/landing_payment.html' form_class = BillingAddressForm def get_form_kwargs(self): @@ -478,7 +478,7 @@ class PaymentOrderView(FormView): class OrderConfirmationView(DetailView): template_name = "datacenterlight/order_detail.html" - payment_template_name = 'hosting/payment.html' + payment_template_name = 'datacenterlight/landing_payment.html' context_object_name = "order" model = HostingOrder diff --git a/hosting/templates/hosting/payment.html b/hosting/templates/hosting/payment.html index f4974a56..b9a04e43 100644 --- a/hosting/templates/hosting/payment.html +++ b/hosting/templates/hosting/payment.html @@ -1,10 +1,6 @@ {% extends "hosting/base_short.html" %} {% load staticfiles bootstrap3 i18n %} -{% block navbar %} - {% include "datacenterlight/includes/_navbar.html" %} -{% endblock navbar %} - {% block content %} From b9f0a886e0b9f24a1cc709fe65d62e0f2620ebc9 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Sat, 2 Sep 2017 03:09:02 +0530 Subject: [PATCH 115/336] translation fixes --- .../locale/de/LC_MESSAGES/django.po | 119 +++++++++++++----- hosting/locale/de/LC_MESSAGES/django.po | 21 ++-- hosting/templates/hosting/order_detail.html | 22 ++-- hosting/templates/hosting/orders.html | 2 +- 4 files changed, 111 insertions(+), 53 deletions(-) diff --git a/datacenterlight/locale/de/LC_MESSAGES/django.po b/datacenterlight/locale/de/LC_MESSAGES/django.po index c0dc55ca..c5723bf0 100644 --- a/datacenterlight/locale/de/LC_MESSAGES/django.po +++ b/datacenterlight/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-24 11:28+0000\n" +"POT-Creation-Date: 2017-09-02 03:08+0530\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -95,7 +95,9 @@ msgid "Message" msgstr "Nachricht" msgid "Sorry, there was an unexpected error. Kindly retry." -msgstr "Bitte entschuldige, es scheint ein unerwarteter Fehler aufgetreten zu sein. Versuche es doch bitte noch einmal." +msgstr "" +"Bitte entschuldige, es scheint ein unerwarteter Fehler aufgetreten zu sein. " +"Versuche es doch bitte noch einmal." msgid "SUBMIT" msgstr "ABSENDEN" @@ -166,6 +168,9 @@ msgstr "" "Du kannst deinen %(dcl_text)s Account aktivieren, indem du hier klickst " "%(base_url)s%(activation_link)s\n" +msgid "Home" +msgstr "Home" + msgid "Highlights" msgstr "" @@ -175,18 +180,15 @@ msgstr "Skalierung" msgid "Reliable and light" msgstr "Zuverlässig und leicht" +msgid "Pricing" +msgstr "Preise" + msgid "Order VM" msgstr "VM bestellen" msgid "Contact" msgstr "Kontakt" -msgid "Home" -msgstr "Home" - -msgid "Pricing" -msgstr "Preise" - msgid "All Rights Reserved" msgstr "Alle Rechte vorbehalten" @@ -256,25 +258,10 @@ msgid "Contact us" msgstr "Kontaktiere uns" msgid "Switzerland " -msgstr "Schweiz" +msgstr "Schweiz " -msgid "Confirm Order" -msgstr "Bestellung Bestätigen" - -msgid "Date" -msgstr "Datum" - -msgid "Billed To:" -msgstr "Rechnungsadresse" - -msgid "Payment Method:" -msgstr "Bezahlmethode" - -msgid "ending" -msgstr "endend in" - -msgid "Order summary" -msgstr "Bestellungsübersicht" +msgid "Your Order" +msgstr "Deine Bestellung" msgid "Cores" msgstr "Prozessorkerne" @@ -289,13 +276,82 @@ msgid "Configuration" msgstr "Konfiguration" msgid "Total" -msgstr "" +msgstr "Gesamt" + +msgid "including VAT" +msgstr "inkl. Mehrwertsteuer" -#, fuzzy -#| msgid "month" msgid "Month" msgstr "Monat" +msgid "Billing Address" +msgstr "Rechnungsadresse" + +msgid "Credit Card" +msgstr "Kreditkarte" + +msgid "" +"\n" +" Please fill in your credit card information " +"below. We are using Stripe for payment and do not store\n" +" your information in our database.\n" +" " +msgstr "" +"\n" +"Bitte füll Deine Kreditkarteninformationen unten aus. Wir nutzen Stripe für die Bezahlung und " +"speichern keine Informationen in unserer Datenbank." + +msgid "" +"You are not making any payment yet. After submitting your card information, " +"you will be taken to the Confirm Order Page." +msgstr "" +"Es wird noch keine Bezahlung vorgenommen. Die Bezahlung wird erst ausgelöst, " +"nachdem Du die Bestellung auf der nächsten Seite bestätigt hast." + +msgid "Submit" +msgstr "Absenden" + +msgid "Card Number" +msgstr "Kreditkartennummer" + +msgid "Expiry Date" +msgstr "Ablaufdatum" + +msgid "CVC" +msgstr "" + +msgid "Card Type" +msgstr "Kartentyp" + +msgid "Processing" +msgstr "Weiter" + +msgid "Enter your credit card number" +msgstr "Deine Kreditkartennummer" + +msgid "Confirm Order" +msgstr "Bestellung Bestätigen" + +msgid "Date" +msgstr "Datum" + +msgid "Billed To:" +msgstr "Rechnungsadresse" + +msgid "Payment Method:" +msgstr "Bezahlmethode" + +#, fuzzy +#| msgid "ending in" +msgid "ending" +msgstr "endend in" + +msgid "Order summary" +msgstr "Bestellungsübersicht" + #, python-format msgid "" "By clicking \"Place order\" this plan will charge your credit card account " @@ -331,7 +387,7 @@ msgstr "" msgid "Thank you for order! Our team will contact you via email" msgstr "" "Vielen Dank für die Bestellung. Unser Team setzt sich sobald wie möglich mit " -"Ihnen via E-Mail in Verbindung." +"Dir via E-Mail in Verbindung." msgid "as soon as possible!" msgstr "" @@ -495,9 +551,6 @@ msgstr "ist keine gültige E-Mailadresse" #~ msgid "Buy Now!" #~ msgstr "Kaufe jetzt!" -#~ msgid "Email address" -#~ msgstr "E-Mail Adresse" - #~ msgid "Our promise" #~ msgstr "Unser Versprechen" diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index 598bcff6..b7919369 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-02 01:47+0530\n" +"POT-Creation-Date: 2017-09-02 03:08+0530\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -37,7 +37,7 @@ msgid "My Virtual Machines" msgstr "Meine virtuellen Maschinen" msgid "My Orders" -msgstr "Meine Bestellungen" +msgstr "Meine Rechnungen" msgid "SSH Keys" msgstr "SSH Key" @@ -73,7 +73,7 @@ msgid "Mwst-Nummer: CHE-109.549.333 MWST" msgstr "" msgid "Total:" -msgstr "" +msgstr "Gesamt:" #, python-format msgid "Alles Preise in CHF mit 8%% Mehrwertsteuer." @@ -242,12 +242,21 @@ msgstr "Datum" msgid "Status:" msgstr "" +msgid "Approved" +msgstr "Akzeptiert" + +msgid "Declined" +msgstr "Abgelehnt" + msgid "Billed To:" msgstr "Rechnungsadresse" msgid "Payment Method:" msgstr "Bezahlmethode" +msgid "ending in" +msgstr "endend in" + msgid "Order summary" msgstr "Bestellungsübersicht" @@ -275,12 +284,6 @@ msgstr "Betrag" msgid "Status" msgstr "" -msgid "Approved" -msgstr "Akzeptiert" - -msgid "Declined" -msgstr "Abgelehnt" - msgid "See Invoice" msgstr "Rechnung" diff --git a/hosting/templates/hosting/order_detail.html b/hosting/templates/hosting/order_detail.html index 8a5f39f6..64c0b5d3 100644 --- a/hosting/templates/hosting/order_detail.html +++ b/hosting/templates/hosting/order_detail.html @@ -1,7 +1,7 @@ {% extends "hosting/base_short.html" %} {% load staticfiles bootstrap3 %} {% load i18n %} -{% block content %} +{% block content %}
    {% if messages %} @@ -17,7 +17,7 @@
    {% endif %} {% if not error %} -
    +

    {{page_header_text}}

    {% trans "Order #"%} {{order.id}}

    @@ -29,9 +29,11 @@ {% trans "Date"%}:
    {{order.created_at|date:'Y-m-d H:i'}}

    {% trans "Status:"%}
    - {{order.status}} + {% if order.status == 'Approved' %} + {% trans "Approved" %} + {% else %} + {% trans "Declined" %} + {% endif %}

    @@ -44,20 +46,20 @@ {{order.billing_address.city}}, {{order.billing_address.country}}.
    - +
    {% trans "Payment Method:"%}
    - {{order.cc_brand}} ending **** {{order.last4}}
    + {{order.cc_brand}} {% trans "ending in" %} **** {{order.last4}}
    {{user.email}}
    - +

    {% trans "Order summary"%}

    @@ -83,8 +85,8 @@ {% endif %}
    - - {%endif%} + {% endcomment %} {%endblock%} From a32bb9b774783edfebba52a9ca6f5f034c9b67dc Mon Sep 17 00:00:00 2001 From: PCoder Date: Tue, 5 Sep 2017 02:26:00 +0530 Subject: [PATCH 156/336] We use the default timezone available to celery --- dynamicweb/settings/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamicweb/settings/base.py b/dynamicweb/settings/base.py index 08ce457d..a2b60026 100644 --- a/dynamicweb/settings/base.py +++ b/dynamicweb/settings/base.py @@ -559,7 +559,7 @@ CELERY_RESULT_BACKEND = env('CELERY_RESULT_BACKEND') CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' -CELERY_TIMEZONE = 'Europe/Zurich' +#CELERY_TIMEZONE = 'Europe/Zurich' CELERY_MAX_RETRIES = int_env('CELERY_MAX_RETRIES', 5) ENABLE_DEBUG_LOGGING = bool_env('ENABLE_DEBUG_LOGGING') From dc6fa5428e40572bcf2a879328d0cfd086f20f60 Mon Sep 17 00:00:00 2001 From: PCoder Date: Tue, 5 Sep 2017 03:29:12 +0530 Subject: [PATCH 157/336] Corrected filtering public ssh keys condition --- utils/hosting_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/hosting_utils.py b/utils/hosting_utils.py index d73fb6b0..7c1a83ad 100644 --- a/utils/hosting_utils.py +++ b/utils/hosting_utils.py @@ -7,5 +7,5 @@ def get_all_public_keys(customer): :param customer: The customer whose public keys are needed :return: A list of public keys """ - return UserHostingKey.objects.filter( - user__site__customuser=customer).values_list("public_key", flat=True) + return UserHostingKey.objects.filter(user_id=customer.id).values_list( + "public_key", flat=True) From d13d9bf4416bf95f7f149b045ed8054fbee30413 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Tue, 5 Sep 2017 22:09:18 +0530 Subject: [PATCH 158/336] removed edit option from card details --- hosting/templates/hosting/settings.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosting/templates/hosting/settings.html b/hosting/templates/hosting/settings.html index 3729ac80..0bafe8e5 100644 --- a/hosting/templates/hosting/settings.html +++ b/hosting/templates/hosting/settings.html @@ -35,6 +35,7 @@
    {% trans "Credit Card" %}
    {% trans "Last" %} 4: *****{{credit_card_data.last4}}
    {% trans "Type" %}: {{credit_card_data.cc_brand}}
    + {% comment %}
    @@ -45,6 +46,7 @@
    + {% endcomment %}
    {% else %}
    From 2a9b208719e7d2eb3cff3c64c38cf4ea6dbafc0a Mon Sep 17 00:00:00 2001 From: PCoder Date: Wed, 6 Sep 2017 13:25:18 +0530 Subject: [PATCH 159/336] hosting: Moving the stripe charge to order confirmation page (still incomplete) --- hosting/templates/hosting/order_detail.html | 91 +++++++++++++++---- hosting/views.py | 99 ++------------------- 2 files changed, 80 insertions(+), 110 deletions(-) diff --git a/hosting/templates/hosting/order_detail.html b/hosting/templates/hosting/order_detail.html index 64c0b5d3..989d7419 100644 --- a/hosting/templates/hosting/order_detail.html +++ b/hosting/templates/hosting/order_detail.html @@ -20,30 +20,50 @@
    -

    {{page_header_text}}

    {% trans "Order #"%} {{order.id}}

    +

    {{page_header_text}}

    +

    + {% if order %} + {% trans "Order #"%} {{order.id}} + {% endif %} +


    {% trans "Date"%}:
    - {{order.created_at|date:'Y-m-d H:i'}}

    + + {% if order %} + {{order.created_at|date:'Y-m-d H:i'}} + {% else %} + {% now "Y-m-d H:i" %} + {% endif %} +

    + {% if order %} {% trans "Status:"%}
    - {% if order.status == 'Approved' %} - {% trans "Approved" %} - {% else %} - {% trans "Declined" %} - {% endif %} + {% if order.status == 'Approved' %} + {% trans "Approved" %} + {% else %} + {% trans "Declined" %} + {% endif %}

    + {% endif %}

    {% trans "Billed To:"%}

    + {% if order %} {{user.name}}
    {{order.billing_address.street_address}},{{order.billing_address.postal_code}}
    {{order.billing_address.city}}, {{order.billing_address.country}}. + {% else %} + {% with request.session.billing_address_data as billing_address %} + {{billing_address|get_value_from_dict:'cardholder_name'}}
    {{billing_address|get_value_from_dict:'street_address'}}, {{billing_address|get_value_from_dict:'postal_code'}}
    + {{billing_address|get_value_from_dict:'city'}}, {{billing_address|get_value_from_dict:'country'}}. + {% endwith %} + {% endif %}
    @@ -52,8 +72,13 @@
    {% trans "Payment Method:"%}
    + {% if order %} {{order.cc_brand}} {% trans "ending in" %} **** {{order.last4}}
    {{user.email}} + {% else %} + {{cc_brand}} {% trans "ending" %} **** {{cc_last4}}
    + {{request.session.user.email}} + {% endif %}
    @@ -65,20 +90,48 @@

    {% trans "Order summary"%}


    -

    {% trans "Cores"%} {{vm.cores}}

    -
    -

    {% trans "Memory"%} {{vm.memory}} GB

    -
    -

    {% trans "Disk space"%} {{vm.disk_size}} GB

    -
    -

    {% trans "Total"%}

    {{vm.price}} CHF

    + {% if request.session.specs %} + {% with request.session.specs as vm %} +

    {% trans "Cores"%} {{vm.cpu}}

    +
    +

    {% trans "Memory"%} {{vm.memory}} GB

    +
    +

    {% trans "Disk space"%} {{vm.disk_size}} GB

    +
    +

    {% trans "Configuration"%} {{request.session.template.name}}

    +
    +

    {% trans "Total"%}

    {{vm.price}} CHF /{% trans "Month" %}

    + {% endwith %} + {% else %} +

    {% trans "Cores"%} {{vm.cores}}

    +
    +

    {% trans "Memory"%} {{vm.memory}} GB

    +
    +

    {% trans "Disk space"%} {{vm.disk_size}} GB

    +
    +

    {% trans "Total"%}

    {{vm.price}} CHF

    + {% endif %}

    - {% url 'hosting:payment' as payment_url %} - {% if payment_url in request.META.HTTP_REFERER %} - + {% if not order %} +
    + {% csrf_token %} +
    +
    +

    {% blocktrans with vm_price=request.session.specs.price %}By clicking "Place order" this plan will charge your credit card account with the fee of {{ vm_price }}CHF/month{% endblocktrans %}.

    +
    + +
    +
    + {% else %} + {% url 'hosting:payment' as payment_url %} + {% if payment_url in request.META.HTTP_REFERER %} + + {% endif %} {% endif %}
    diff --git a/hosting/views.py b/hosting/views.py index 08f0862e..67cf8c28 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -569,100 +569,17 @@ class PaymentVMView(LoginRequiredMixin, FormView): customer = StripeCustomer.get_or_create(email=owner.email, token=token) if not customer: - msg = _("Invalid credit card") - messages.add_message( - self.request, messages.ERROR, msg, extra_tags='make_charge_error') - return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error') + form.add_error("__all__", _("Invalid credit card")) + return self.render_to_response( + self.get_context_data(form=form)) # Create Billing Address billing_address = form.save() - - # Make stripe charge to a customer - stripe_utils = StripeUtils() - charge_response = stripe_utils.make_charge(amount=final_price, - customer=customer.stripe_id) - - # Check if the payment was approved - if not charge_response.get('response_object'): - msg = charge_response.get('error') - messages.add_message( - self.request, messages.ERROR, msg, extra_tags='make_charge_error') - return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error') - - charge = charge_response.get('response_object') - - # Create OpenNebulaManager - manager = OpenNebulaManager(email=owner.email, - password=owner.password) - # Get user ssh key - if not UserHostingKey.objects.filter(user=self.request.user).exists(): - context.update({ - 'sshError': 'error', - 'form': form - }) - return render(request, self.template_name, context) - # For now just get first one - user_key = UserHostingKey.objects.filter( - user=self.request.user).first() - - # Create a vm using logged user - vm_id = manager.create_vm( - template_id=vm_template_id, - # XXX: Confi - specs=specs, - ssh_key=user_key.public_key, - ) - - # Create a Hosting Order - order = HostingOrder.create( - price=final_price, - vm_id=vm_id, - customer=customer, - billing_address=billing_address - ) - - # Create a Hosting Bill - HostingBill.create( - customer=customer, billing_address=billing_address) - - # Create Billing Address for User if he does not have one - if not customer.user.billing_addresses.count(): - billing_address_data.update({ - 'user': customer.user.id - }) - billing_address_user_form = UserBillingAddressForm( - billing_address_data) - billing_address_user_form.is_valid() - billing_address_user_form.save() - - # Associate an order with a stripe payment - order.set_stripe_charge(charge) - - # If the Stripe payment was successed, set order status approved - order.set_approved() - - vm = VirtualMachineSerializer(manager.get_vm(vm_id)).data - - # Send notification to ungleich as soon as VM has been booked - context = { - 'vm': vm, - 'order': order, - 'base_url': "{0}://{1}".format(request.scheme, request.get_host()) - - } - email_data = { - 'subject': 'New VM request', - 'to': request.user.email, - 'context': context, - 'template_name': 'new_booked_vm', - 'template_path': 'hosting/emails/' - } - email = BaseEmail(**email_data) - email.send() - - return HttpResponseRedirect( - "{url}?{query_params}".format(url=reverse('hosting:orders', kwargs={'pk': order.id}), - query_params='page=payment')) + request.session['billing_address_data'] = billing_address_data + request.session['billing_address'] = billing_address.id + request.session['token'] = token + request.session['customer'] = customer.id + return HttpResponseRedirect(reverse('hosting:orders')) else: return self.form_invalid(form) From c072d382eecc6094fe81fff58c2edacbaece8d62 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Wed, 6 Sep 2017 20:13:30 +0200 Subject: [PATCH 160/336] Added /fb and /li routes to datacenterlight --- datacenterlight/urls.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/datacenterlight/urls.py b/datacenterlight/urls.py index 5c9ffcd7..b2a774ec 100644 --- a/datacenterlight/urls.py +++ b/datacenterlight/urls.py @@ -7,9 +7,11 @@ from .views import IndexView, BetaProgramView, LandingProgramView, \ urlpatterns = [ url(r'^$', IndexView.as_view(), name='index'), - url(r'^t$', IndexView.as_view(), name='index_t'), - url(r'^g$', IndexView.as_view(), name='index_g'), - url(r'^f$', IndexView.as_view(), name='index_f'), + url(r'^t/$', IndexView.as_view(), name='index_t'), + url(r'^g/$', IndexView.as_view(), name='index_g'), + url(r'^f/$', IndexView.as_view(), name='index_f'), + url(r'^fb/$', IndexView.as_view(), name='index_fb'), + url(r'^li/$', IndexView.as_view(), name='index_li'), url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(), name='whydatacenterlight'), url(r'^beta-program/?$', BetaProgramView.as_view(), name='beta'), From 4925146715a573cbb091947715de81483e5446d1 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Wed, 6 Sep 2017 22:05:52 +0200 Subject: [PATCH 161/336] Using one lettered url patterns for social media links --- datacenterlight/urls.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/datacenterlight/urls.py b/datacenterlight/urls.py index b2a774ec..772e691d 100644 --- a/datacenterlight/urls.py +++ b/datacenterlight/urls.py @@ -10,8 +10,7 @@ urlpatterns = [ url(r'^t/$', IndexView.as_view(), name='index_t'), url(r'^g/$', IndexView.as_view(), name='index_g'), url(r'^f/$', IndexView.as_view(), name='index_f'), - url(r'^fb/$', IndexView.as_view(), name='index_fb'), - url(r'^li/$', IndexView.as_view(), name='index_li'), + url(r'^l/$', IndexView.as_view(), name='index_l'), url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(), name='whydatacenterlight'), url(r'^beta-program/?$', BetaProgramView.as_view(), name='beta'), From 7c87b520c1a1c3b9018a78a999b1e5e38e53fc87 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Wed, 6 Sep 2017 22:58:44 +0200 Subject: [PATCH 162/336] Updated Changelog for 1.2.1 --- Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Changelog b/Changelog index 1f5b70e6..3d6e1589 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,5 @@ +1.2.1: 2017-09-06 + * #3757: [datacenterlight] Added /l route for linkedin 1.1.1: 2017-08-29 * #3709: [datacenterlight] Added faq tos cms template * #3657: [datacenterlight] Added a new contact section at landing From df23862ea16ceabc71bd4eb7706d39bbe4f2b561 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Wed, 6 Sep 2017 23:49:38 +0200 Subject: [PATCH 163/336] Added per month text for price --- hosting/templates/hosting/order_detail.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosting/templates/hosting/order_detail.html b/hosting/templates/hosting/order_detail.html index 989d7419..d29d00d9 100644 --- a/hosting/templates/hosting/order_detail.html +++ b/hosting/templates/hosting/order_detail.html @@ -109,7 +109,7 @@

    {% trans "Disk space"%} {{vm.disk_size}} GB


    -

    {% trans "Total"%}

    {{vm.price}} CHF

    +

    {% trans "Total"%}

    {{vm.price}} CHF /{% trans "Month" %}

    {% endif %}

    From 67ab4ef0a1d32e705c5a83e74f235651686190ca Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Wed, 6 Sep 2017 23:50:19 +0200 Subject: [PATCH 164/336] hosting: Added order-confirmation url --- hosting/urls.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/hosting/urls.py b/hosting/urls.py index e6b6fee3..039331bd 100644 --- a/hosting/urls.py +++ b/hosting/urls.py @@ -20,9 +20,13 @@ urlpatterns = [ url(r'pricing/?$', HostingPricingView.as_view(), name='pricing'), url(r'payment/?$', PaymentVMView.as_view(), name='payment'), url(r'orders/?$', OrdersHostingListView.as_view(), name='orders'), - url(r'orders/(?P\d+)/?$', OrdersHostingDetailView.as_view(), name='orders'), + url(r'order-confirmation/?$', OrdersHostingDetailView.as_view(), + name='order-confirmation'), + url(r'orders/(?P\d+)/?$', OrdersHostingDetailView.as_view(), + name='orders'), url(r'bills/?$', HostingBillListView.as_view(), name='bills'), - url(r'bills/(?P\d+)/?$', HostingBillDetailView.as_view(), name='bills'), + url(r'bills/(?P\d+)/?$', HostingBillDetailView.as_view(), + name='bills'), url(r'cancel_order/(?P\d+)/?$', OrdersHostingDeleteView.as_view(), name='delete_order'), url(r'create_virtual_machine/?$', CreateVirtualMachinesView.as_view(), @@ -39,13 +43,16 @@ urlpatterns = [ 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\d+)/?$', MarkAsReadNotificationView.as_view(), name='read_notification'), url(r'login/?$', LoginView.as_view(), name='login'), url(r'signup/?$', SignupView.as_view(), name='signup'), - url(r'signup-validate/?$', SignupValidateView.as_view(), name='signup-validate'), - url(r'reset-password/?$', PasswordResetView.as_view(), name='reset_password'), + url(r'signup-validate/?$', SignupValidateView.as_view(), + name='signup-validate'), + url(r'reset-password/?$', PasswordResetView.as_view(), + name='reset_password'), url(r'reset-password-confirm/(?P[0-9A-Za-z]+)-(?P.+)/$', PasswordResetConfirmView.as_view(), name='reset_password_confirm'), url(r'^logout/?$', auth_views.logout, From 0fc0b0630cc184577a1985d6b9feedf9cfc4985b Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Wed, 6 Sep 2017 23:52:02 +0200 Subject: [PATCH 165/336] hosting: Updated OrdersHostingDetailView for stripe charging in this view --- hosting/views.py | 109 +++++++++++++++++++++++++++++------------------ 1 file changed, 67 insertions(+), 42 deletions(-) diff --git a/hosting/views.py b/hosting/views.py index 67cf8c28..36744724 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -7,7 +7,8 @@ from django.shortcuts import render from django.http import Http404 from django.core.urlresolvers import reverse_lazy, reverse from django.contrib.auth.mixins import LoginRequiredMixin -from django.views.generic import View, CreateView, FormView, ListView, DetailView, \ +from django.views.generic import View, CreateView, FormView, ListView, \ + DetailView, \ DeleteView, TemplateView, UpdateView from django.http import HttpResponseRedirect from django.contrib import messages @@ -24,11 +25,14 @@ from django.utils.safestring import mark_safe from membership.models import CustomUser, StripeCustomer from utils.stripe_utils import StripeUtils -from utils.forms import BillingAddressForm, PasswordResetRequestForm, UserBillingAddressForm -from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, LoginViewMixin +from utils.forms import BillingAddressForm, PasswordResetRequestForm, \ + UserBillingAddressForm +from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, \ + LoginViewMixin from utils.mailer import BaseEmail from .models import HostingOrder, HostingBill, HostingPlan, UserHostingKey -from .forms import HostingUserSignupForm, HostingUserLoginForm, UserHostingKeyForm, generate_ssh_key_name +from .forms import HostingUserSignupForm, HostingUserLoginForm, \ + UserHostingKeyForm, generate_ssh_key_name from .mixins import ProcessVMSelectionMixin from opennebula_api.models import OpenNebulaManager @@ -296,7 +300,8 @@ class PasswordResetConfirmView(PasswordResetConfirmViewMixin): form = self.form_class(request.POST) - if user is not None and default_token_generator.check_token(user, token): + if user is not None and default_token_generator.check_token(user, + token): if form.is_valid(): new_password = form.cleaned_data['new_password2'] user.set_password(new_password) @@ -397,7 +402,8 @@ class SSHKeyListView(LoginRequiredMixin, ListView): def render_to_response(self, context, **response_kwargs): if not self.queryset: return HttpResponseRedirect(reverse('hosting:choice_ssh_keys')) - return super(SSHKeyListView, self).render_to_response(context, **response_kwargs) + return super(SSHKeyListView, self).render_to_response(context, + **response_kwargs) class SSHKeyChoiceView(LoginRequiredMixin, View): @@ -548,23 +554,10 @@ class PaymentVMView(LoginRequiredMixin, FormView): def post(self, request, *args, **kwargs): form = self.get_form() if form.is_valid(): - # Get billing address data billing_address_data = form.cleaned_data - - context = self.get_context_data() - - template = request.session.get('template') - specs = request.session.get('specs') - - vm_template_id = template.get('id', 1) - - final_price = specs.get('price') - token = form.cleaned_data.get('token') - owner = self.request.user - # Get or create stripe customer customer = StripeCustomer.get_or_create(email=owner.email, token=token) @@ -579,12 +572,13 @@ class PaymentVMView(LoginRequiredMixin, FormView): request.session['billing_address'] = billing_address.id request.session['token'] = token request.session['customer'] = customer.id - return HttpResponseRedirect(reverse('hosting:orders')) + return HttpResponseRedirect(reverse('hosting:order-confirmation')) else: return self.form_invalid(form) -class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin, DetailView): +class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin, + DetailView): template_name = "hosting/order_detail.html" context_object_name = "order" login_url = reverse_lazy('hosting:login') @@ -596,26 +590,52 @@ class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin, Detai context = super(DetailView, self).get_context_data(**kwargs) obj = self.get_object() owner = self.request.user - manager = OpenNebulaManager(email=owner.email, - password=owner.password) + if 'specs' not in self.request.session or 'user' not in self.request.session: + return HttpResponseRedirect( + reverse('hosting:create_virtual_machine')) + if 'token' not in self.request.session: + return HttpResponseRedirect(reverse('hosting:payment')) + stripe_customer_id = self.request.session.get('customer') + customer = StripeCustomer.objects.filter(id=stripe_customer_id).first() + stripe_utils = StripeUtils() + card_details = stripe_utils.get_card_details(customer.stripe_id, + self.request.session.get( + 'token')) + if not card_details.get('response_object'): + msg = card_details.get('error') + messages.add_message(self.request, messages.ERROR, msg, + extra_tags='failed_payment') + return HttpResponseRedirect( + reverse('hosting:payment') + '#payment_error') + if self.request.GET.get('page', '') == 'payment': context['page_header_text'] = _('Confirm Order') else: context['page_header_text'] = _('Invoice') - try: - vm = manager.get_vm(obj.vm_id) - context['vm'] = VirtualMachineSerializer(vm).data - except WrongIdError: - messages.error(self.request, - 'The VM you are looking for is unavailable at the moment. \ - Please contact Data Center Light support.' - ) - self.kwargs['error'] = 'WrongIdError' - context['error'] = 'WrongIdError' - except ConnectionRefusedError: - messages.error(self.request, - 'In order to create a VM, you need to create/upload your SSH KEY first.' - ) + + if obj.vm_id: + try: + manager = OpenNebulaManager(email=owner.email, + password=owner.password) + vm = manager.get_vm(obj.vm_id) + context['vm'] = VirtualMachineSerializer(vm).data + except WrongIdError: + messages.error(self.request, + 'The VM you are looking for is unavailable at the moment. \ + Please contact Data Center Light support.' + ) + self.kwargs['error'] = 'WrongIdError' + context['error'] = 'WrongIdError' + except ConnectionRefusedError: + messages.error(self.request, + 'In order to create a VM, you need to create/upload your SSH KEY first.' + ) + else: + context['site_url'] = reverse('hosting:create_virtual_machine') + context['cc_last4'] = card_details.get('response_object').get( + 'last4') + context['cc_brand'] = card_details.get('response_object').get( + 'cc_brand') return context @@ -692,7 +712,8 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View): configuration_options = HostingPlan.get_serialized_configs() context = { - 'templates': VirtualMachineTemplateSerializer(templates, many=True).data, + 'templates': VirtualMachineTemplateSerializer(templates, + many=True).data, 'configuration_options': configuration_options, } except: @@ -763,7 +784,8 @@ class VirtualMachineView(LoginRequiredMixin, View): serializer = VirtualMachineSerializer(vm) context = { 'virtual_machine': serializer.data, - 'order': HostingOrder.objects.get(vm_id=serializer.data['vm_id']) + 'order': HostingOrder.objects.get( + vm_id=serializer.data['vm_id']) } except: pass @@ -794,7 +816,8 @@ class VirtualMachineView(LoginRequiredMixin, View): context = { 'vm': vm, - 'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host()) + 'base_url': "{0}://{1}".format(self.request.scheme, + self.request.get_host()) } email_data = { 'subject': 'Virtual machine plan canceled', @@ -814,7 +837,8 @@ class VirtualMachineView(LoginRequiredMixin, View): return HttpResponseRedirect(self.get_success_url()) -class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin, ListView): +class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin, + ListView): template_name = "hosting/bills.html" login_url = reverse_lazy('hosting:login') permission_required = ['view_hostingview'] @@ -824,7 +848,8 @@ class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin, ListView) ordering = '-id' -class HostingBillDetailView(PermissionRequiredMixin, LoginRequiredMixin, DetailView): +class HostingBillDetailView(PermissionRequiredMixin, LoginRequiredMixin, + DetailView): template_name = "hosting/bill_detail.html" login_url = reverse_lazy('hosting:login') permission_required = ['view_hostingview'] From cf6bd8a7c18140b9a9f8bd10b5b050c0a938113c Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Thu, 7 Sep 2017 00:31:09 +0200 Subject: [PATCH 166/336] Validating ssh public keys using sshpubkeys --- hosting/forms.py | 27 ++++++++++++------------- hosting/locale/de/LC_MESSAGES/django.po | 8 +++++++- requirements.txt | 1 + 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/hosting/forms.py b/hosting/forms.py index cf8dd9b7..a4076339 100644 --- a/hosting/forms.py +++ b/hosting/forms.py @@ -6,6 +6,8 @@ import struct from django import forms from django.contrib.auth import authenticate from django.utils.translation import ugettext_lazy as _ +from sshpubkeys import SSHKey +from sshpubkeys.exceptions import InvalidKeyException from membership.models import CustomUser from .models import UserHostingKey @@ -89,28 +91,25 @@ class UserHostingKeyForm(forms.ModelForm): def clean_public_key(self): """ - A simple validation of ssh public key - See https://www.ietf.org/rfc/rfc4716.txt + A function that validates a public ssh key using sshpubkeys module :return: """ if 'generate' in self.request.POST: return self.data.get('public_key') KEY_ERROR_MESSAGE = _("Please input a proper SSH key") - openssh_pubkey = self.data.get('public_key') - data = None + openssh_pubkey_str = self.data.get('public_key') + ssh_key = SSHKey(openssh_pubkey_str) try: - key_type, key_string, comment = openssh_pubkey.split() - data = base64.decodebytes(key_string.encode('utf-8')) - except Exception as e: - logger.error("Exception while decoding ssh key {}".format(e)) + ssh_key.parse() + except InvalidKeyException as err: + logger.error( + "InvalidKeyException while parsing ssh key {0}".format(err)) raise forms.ValidationError(KEY_ERROR_MESSAGE) - int_len = 4 - str_len = struct.unpack('>I', data[:int_len])[0] - if str_len != 7: + except NotImplementedError as err: + logger.error( + "NotImplementedError while parsing ssh key {0}".format(err)) raise forms.ValidationError(KEY_ERROR_MESSAGE) - if data[int_len:int_len + str_len] != key_type.encode('utf-8'): - raise forms.ValidationError(KEY_ERROR_MESSAGE) - return openssh_pubkey + return openssh_pubkey_str def clean_name(self): return self.data.get('name') diff --git a/hosting/locale/de/LC_MESSAGES/django.po b/hosting/locale/de/LC_MESSAGES/django.po index f905d905..eb7db5fe 100644 --- a/hosting/locale/de/LC_MESSAGES/django.po +++ b/hosting/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-02 03:08+0530\n" +"POT-Creation-Date: 2017-09-06 22:27+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,6 +24,9 @@ msgstr "Dein Benutzername und/oder Dein Passwort ist falsch." msgid "Your account is not activated yet." msgstr "Dein Account wurde noch nicht aktiviert." +msgid "User does not exist" +msgstr "" + msgid "Paste here your public key" msgstr "Füge deinen Public Key ein" @@ -33,6 +36,9 @@ msgstr "Gebe deinem SSH-Key einen Name" msgid "Key name" msgstr "Key-Name" +msgid "Please input a proper SSH key" +msgstr "" + msgid "My Virtual Machines" msgstr "Meine virtuellen Maschinen" diff --git a/requirements.txt b/requirements.txt index 73f0bc39..89123b46 100644 --- a/requirements.txt +++ b/requirements.txt @@ -97,3 +97,4 @@ billiard==3.5.0.3 amqp==2.2.1 vine==1.1.4 git+https://github.com/ungleich/cdist.git#egg=cdist +sshpubkeys \ No newline at end of file From ec300a76eb6b9591edfe81e1bce875ef8a5668d8 Mon Sep 17 00:00:00 2001 From: "M.Ravi" Date: Thu, 7 Sep 2017 00:44:39 +0200 Subject: [PATCH 167/336] Handled some more errors that can be generated when creating SSHKey --- hosting/forms.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/hosting/forms.py b/hosting/forms.py index a4076339..64de0276 100644 --- a/hosting/forms.py +++ b/hosting/forms.py @@ -98,8 +98,8 @@ class UserHostingKeyForm(forms.ModelForm): return self.data.get('public_key') KEY_ERROR_MESSAGE = _("Please input a proper SSH key") openssh_pubkey_str = self.data.get('public_key') - ssh_key = SSHKey(openssh_pubkey_str) try: + ssh_key = SSHKey(openssh_pubkey_str) ssh_key.parse() except InvalidKeyException as err: logger.error( @@ -109,6 +109,14 @@ class UserHostingKeyForm(forms.ModelForm): logger.error( "NotImplementedError while parsing ssh key {0}".format(err)) raise forms.ValidationError(KEY_ERROR_MESSAGE) + except UnicodeDecodeError as u: + logger.error( + "UnicodeDecodeError while parsing ssh key {0}".format(u)) + raise forms.ValidationError(KEY_ERROR_MESSAGE) + except ValueError as v: + logger.error( + "ValueError while parsing ssh key {0}".format(v)) + raise forms.ValidationError(KEY_ERROR_MESSAGE) return openssh_pubkey_str def clean_name(self): From d643e6a5b135e9c12234f00ee5a391fa38694433 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 7 Sep 2017 20:24:19 +0530 Subject: [PATCH 168/336] login btn on datacenterlight pages --- .../datacenterlight/css/landing-page.css | 25 +++++++++++++++++++ .../datacenterlight/includes/_navbar.html | 7 ++++++ 2 files changed, 32 insertions(+) diff --git a/datacenterlight/static/datacenterlight/css/landing-page.css b/datacenterlight/static/datacenterlight/css/landing-page.css index 9025473e..1507de2c 100755 --- a/datacenterlight/static/datacenterlight/css/landing-page.css +++ b/datacenterlight/static/datacenterlight/css/landing-page.css @@ -175,6 +175,31 @@ button, input, optgroup, select, textarea { .navbar-default .btn-link { box-shadow: none; } +.navbar-default .navbar-nav>li>.topnav_login { +/* color: #179; */ + font-weight: 400; + background: rgba(0,0,0,0.03); + border-radius: 5px; + padding-top: 10px; + padding-bottom: 10px; + top: 5px; +} +.navbar-default .navbar-nav>li>.topnav_login:hover, +.navbar-default .navbar-nav>li>.topnav_login:focus { + background: rgba(0,0,0,0.02); +} +.navbar-transparent .navbar-nav>li>.topnav_login { + background: rgba(0,0,0,0.2); + border-radius: 5px; + padding-top: 10px; + padding-bottom: 10px; + top: 5px; + color: #fff; +} +.navbar-transparent .navbar-nav>li>.topnav_login:hover, +.navbar-transparent .navbar-nav>li>.topnav_login:focus { + background: rgba(0,0,0,0.1); +} .navbar-brand { padding: 10px 15px; diff --git a/datacenterlight/templates/datacenterlight/includes/_navbar.html b/datacenterlight/templates/datacenterlight/includes/_navbar.html index ee791648..b2ae4cb4 100644 --- a/datacenterlight/templates/datacenterlight/includes/_navbar.html +++ b/datacenterlight/templates/datacenterlight/includes/_navbar.html @@ -34,6 +34,13 @@ Deutsch   {% else %} English   {% endif %} + {% if not request.user.is_authenticated %} +
  • + +
  • + {% endif %} + {% if request.path == '/en-us/datacenterlight/' or request.path == '/de/datacenterlight/' %} + {% endif %} {% comment %} {% if not request.user.is_authenticated %}
  • - +
  • {% endif %} {% if request.path == '/en-us/datacenterlight/' or request.path == '/de/datacenterlight/' %} From db891aaa1ef0b590a08a4ff33658fb0a88bac761 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 7 Sep 2017 21:01:17 +0530 Subject: [PATCH 170/336] hosting navbar changed and consistent with dcl navbar --- .../datacenterlight/includes/_navbar.html | 6 +- dynamicweb/urls.py | 78 +++++++++++-------- hosting/static/hosting/css/commons.css | 2 +- hosting/static/hosting/css/landing-page.css | 8 +- hosting/templates/hosting/base_short.html | 56 +------------ .../hosting/includes/_navbar_user.html | 50 ++++++++++++ hosting/urls.py | 1 + 7 files changed, 108 insertions(+), 93 deletions(-) create mode 100644 hosting/templates/hosting/includes/_navbar_user.html diff --git a/datacenterlight/templates/datacenterlight/includes/_navbar.html b/datacenterlight/templates/datacenterlight/includes/_navbar.html index ee791648..9c17d39e 100644 --- a/datacenterlight/templates/datacenterlight/includes/_navbar.html +++ b/datacenterlight/templates/datacenterlight/includes/_navbar.html @@ -1,10 +1,12 @@ -{% load staticfiles i18n%} {% load custom_tags %} {% get_current_language as LANGUAGE_CODE %} +{% load staticfiles i18n%} +{% load custom_tags %} +{% get_current_language as LANGUAGE_CODE %} + {% include "hosting/includes/_navbar_user.html" %} {% endblock navbar %} diff --git a/hosting/templates/hosting/includes/_navbar_user.html b/hosting/templates/hosting/includes/_navbar_user.html new file mode 100644 index 00000000..cfd313ce --- /dev/null +++ b/hosting/templates/hosting/includes/_navbar_user.html @@ -0,0 +1,50 @@ +{% load staticfiles %} +{% load i18n %} +{% load custom_tags %} + + + + \ No newline at end of file diff --git a/hosting/urls.py b/hosting/urls.py index e6b6fee3..94444107 100644 --- a/hosting/urls.py +++ b/hosting/urls.py @@ -11,6 +11,7 @@ from .views import ( HostingBillDetailView, SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView, SSHKeyChoiceView, DashboardView) + urlpatterns = [ url(r'index/?$', IndexView.as_view(), name='index'), url(r'django/?$', DjangoHostingView.as_view(), name='djangohosting'), From e26b6ac4169bdcea047ddf983b397ea45776e41f Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 7 Sep 2017 22:24:03 +0530 Subject: [PATCH 171/336] default page for hosting changed from /hosting/my-virtual-machines -> /hosting/dashboard --- hosting/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosting/views.py b/hosting/views.py index 08f0862e..d864cc4e 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -190,7 +190,7 @@ class IndexView(View): class LoginView(LoginViewMixin): template_name = "hosting/login.html" form_class = HostingUserLoginForm - success_url = reverse_lazy('hosting:virtual_machines') + success_url = reverse_lazy('hosting:dashboard') class SignupView(CreateView): From ac2791a3f1d0477e68a414277380fc8207f94b49 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 7 Sep 2017 22:44:06 +0530 Subject: [PATCH 172/336] dcl navbar border dadded --- datacenterlight/static/datacenterlight/css/landing-page.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datacenterlight/static/datacenterlight/css/landing-page.css b/datacenterlight/static/datacenterlight/css/landing-page.css index 9025473e..052e55c8 100755 --- a/datacenterlight/static/datacenterlight/css/landing-page.css +++ b/datacenterlight/static/datacenterlight/css/landing-page.css @@ -122,7 +122,7 @@ button, input, optgroup, select, textarea { .navbar-default { background: #fff; - border: none; + /* border: none; */ padding: 5px; } From 73bbe291135c71a897f5a9dd40d4e87572b07372 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 7 Sep 2017 22:47:56 +0530 Subject: [PATCH 173/336] transparent navbar added to signup validate page --- hosting/templates/hosting/signup_validate.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hosting/templates/hosting/signup_validate.html b/hosting/templates/hosting/signup_validate.html index 3ccbe15b..449064dc 100644 --- a/hosting/templates/hosting/signup_validate.html +++ b/hosting/templates/hosting/signup_validate.html @@ -1,6 +1,10 @@ {% extends "hosting/base_short.html" %} {% load staticfiles bootstrap3 i18n %} +{% block navbar %} + {% include 'hosting/includes/_navbar_transparent.html' %} +{% endblock navbar %} + {% block content %}
    From c8b0e2388dcb4fe8c54c759a67621a91fcd20a2f Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 7 Sep 2017 23:10:05 +0530 Subject: [PATCH 174/336] login btn special style reset --- .../datacenterlight/css/landing-page.css | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/datacenterlight/static/datacenterlight/css/landing-page.css b/datacenterlight/static/datacenterlight/css/landing-page.css index 1507de2c..9025473e 100755 --- a/datacenterlight/static/datacenterlight/css/landing-page.css +++ b/datacenterlight/static/datacenterlight/css/landing-page.css @@ -175,31 +175,6 @@ button, input, optgroup, select, textarea { .navbar-default .btn-link { box-shadow: none; } -.navbar-default .navbar-nav>li>.topnav_login { -/* color: #179; */ - font-weight: 400; - background: rgba(0,0,0,0.03); - border-radius: 5px; - padding-top: 10px; - padding-bottom: 10px; - top: 5px; -} -.navbar-default .navbar-nav>li>.topnav_login:hover, -.navbar-default .navbar-nav>li>.topnav_login:focus { - background: rgba(0,0,0,0.02); -} -.navbar-transparent .navbar-nav>li>.topnav_login { - background: rgba(0,0,0,0.2); - border-radius: 5px; - padding-top: 10px; - padding-bottom: 10px; - top: 5px; - color: #fff; -} -.navbar-transparent .navbar-nav>li>.topnav_login:hover, -.navbar-transparent .navbar-nav>li>.topnav_login:focus { - background: rgba(0,0,0,0.1); -} .navbar-brand { padding: 10px 15px; From 223606947ac717ff45f40679b60be26eed5256a1 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Thu, 7 Sep 2017 23:48:53 +0530 Subject: [PATCH 175/336] removed icon --- .../templates/datacenterlight/includes/_navbar.html | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/datacenterlight/templates/datacenterlight/includes/_navbar.html b/datacenterlight/templates/datacenterlight/includes/_navbar.html index ab6a2ffe..b098c916 100644 --- a/datacenterlight/templates/datacenterlight/includes/_navbar.html +++ b/datacenterlight/templates/datacenterlight/includes/_navbar.html @@ -36,7 +36,11 @@ {% if not request.user.is_authenticated %}
  • - + {% trans "Login" %}   +
  • + {% else %} +
  • + {% trans "Dashboard" %}
  • {% endif %} {% if request.path == '/en-us/datacenterlight/' or request.path == '/de/datacenterlight/' %} From b4641e9dfddab42e7de54c7ac20008207c8b751b Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Fri, 8 Sep 2017 00:07:09 +0530 Subject: [PATCH 176/336] font wieght 300 --- hosting/static/hosting/css/landing-page.css | 1 + 1 file changed, 1 insertion(+) diff --git a/hosting/static/hosting/css/landing-page.css b/hosting/static/hosting/css/landing-page.css index 076ec34c..8ae52442 100644 --- a/hosting/static/hosting/css/landing-page.css +++ b/hosting/static/hosting/css/landing-page.css @@ -44,6 +44,7 @@ h6 { .navbar-default .navbar-nav>li>a { padding-top: 20px; padding-bottom: 20px; + font-weight: 300; } .navbar-transparent { From 84d35ea9164256cfb1d919293461a2ce6acfc1c0 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Fri, 8 Sep 2017 00:11:20 +0530 Subject: [PATCH 177/336] padding fixed --- hosting/static/hosting/css/landing-page.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosting/static/hosting/css/landing-page.css b/hosting/static/hosting/css/landing-page.css index 8ae52442..8881f7fd 100644 --- a/hosting/static/hosting/css/landing-page.css +++ b/hosting/static/hosting/css/landing-page.css @@ -35,6 +35,8 @@ h6 { .navbar-default { background: #fff; /* box-shadow: 0 3px 3px -2px hsla(0,0%,78%,.72); */ + padding-left: 5px; + padding-right: 5px; } .navbar-default .navbar-header { From 4937baa2e0e9aaf01bf809923ea4be321f59b66d Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Fri, 8 Sep 2017 02:22:03 +0530 Subject: [PATCH 178/336] dropdown style updated --- .../static/datacenterlight/css/landing-page.css | 2 +- hosting/static/hosting/css/landing-page.css | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/datacenterlight/static/datacenterlight/css/landing-page.css b/datacenterlight/static/datacenterlight/css/landing-page.css index 052e55c8..5eeed036 100755 --- a/datacenterlight/static/datacenterlight/css/landing-page.css +++ b/datacenterlight/static/datacenterlight/css/landing-page.css @@ -924,7 +924,7 @@ tech-sub-sec h2 { border: 1px solid #fff; -webkit-box-shadow: -8px 13px 31px -8px rgba(77, 77, 77, 1); -moz-box-shadow: -8px 13px 31px -8px rgba(77, 77, 77, 1); - box-shadow: -8px 13px 31px -8px rgba(77, 77, 77, 1); + box-shadow: -8px 14px 20px -5px rgba(77, 77, 77, 0.5); display: none; text-align: center; border-radius: 4px !important; diff --git a/hosting/static/hosting/css/landing-page.css b/hosting/static/hosting/css/landing-page.css index 8881f7fd..7522827d 100644 --- a/hosting/static/hosting/css/landing-page.css +++ b/hosting/static/hosting/css/landing-page.css @@ -85,13 +85,17 @@ h6 { left: 0 !important; min-width: 155px; margin-left: 15px; - padding: 5px !important; + padding: 0 5px 8px !important; } @media(min-width: 768px) { .navbar-right .highlights-dropdown .dropdown-menu { - border: 1px solid #fff; + box-shadow: 0 2px 5px 0 rgba(0,0,0,0.02); + border-width: 0 0 1px 0; + border-color: #e7e7e7; + box-shadow: -8px 14px 20px -5px rgba(77, 77, 77, 0.5); + top: 53px; } - .navbar-right .highlights-dropdown .dropdown-menu:before { +/* .navbar-right .highlights-dropdown .dropdown-menu:before { content: ''; display: block; height: 1px; @@ -100,7 +104,7 @@ h6 { top: -1px; left: -1px; right: -1px; - } + } */ } .navbar-right .highlights-dropdown .dropdown-menu > li > a{ font-size: 13px; From 9721784ff20d748cc6e76f7a09fcb8339ec197f3 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Fri, 8 Sep 2017 02:32:46 +0530 Subject: [PATCH 179/336] logo href fixed --- hosting/templates/hosting/base_short.html | 2 +- hosting/templates/hosting/includes/_navbar_transparent.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hosting/templates/hosting/base_short.html b/hosting/templates/hosting/base_short.html index 5030d9ab..4bfe9be0 100644 --- a/hosting/templates/hosting/base_short.html +++ b/hosting/templates/hosting/base_short.html @@ -66,7 +66,7 @@ {% endif %} - +
    {% if request.user.is_authenticated %} diff --git a/hosting/templates/hosting/includes/_navbar_transparent.html b/hosting/templates/hosting/includes/_navbar_transparent.html index 4efd5920..b03b2bd9 100644 --- a/hosting/templates/hosting/includes/_navbar_transparent.html +++ b/hosting/templates/hosting/includes/_navbar_transparent.html @@ -4,7 +4,7 @@
    From 6a56f4c689e26abcf47411e90be25f7ee2c0b7b2 Mon Sep 17 00:00:00 2001 From: Arvind Tiwari Date: Fri, 8 Sep 2017 02:43:11 +0530 Subject: [PATCH 180/336] logo position fix --- hosting/templates/hosting/includes/_navbar_transparent.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosting/templates/hosting/includes/_navbar_transparent.html b/hosting/templates/hosting/includes/_navbar_transparent.html index b03b2bd9..dec9cd49 100644 --- a/hosting/templates/hosting/includes/_navbar_transparent.html +++ b/hosting/templates/hosting/includes/_navbar_transparent.html @@ -1,7 +1,7 @@ {% load static i18n %}