From e90c5fece035227b2202cb1585a0415e126029a0 Mon Sep 17 00:00:00 2001
From: Levi <levinoelvm@gmail.com>
Date: Thu, 30 Jun 2016 01:23:14 -0500
Subject: [PATCH] Created generic view for vm pricing widget, Added VM
 configuration info on VM detail view, Fixed template bugs. Fixed Blog urls
 bugs

---
 dynamicweb/urls.py                            |  8 ++--
 hosting/mixins.py                             |  7 ++-
 .../templates/hosting/hosting_pricing.html    | 44 +++++++++++++++++++
 .../templates/hosting/includes/_pricing.html  | 26 +++++++----
 .../hosting/virtual_machine_detail.html       |  5 +++
 hosting/urls.py                               |  3 +-
 hosting/views.py                              | 20 +++++++++
 7 files changed, 99 insertions(+), 14 deletions(-)
 create mode 100644 hosting/templates/hosting/hosting_pricing.html

diff --git a/dynamicweb/urls.py b/dynamicweb/urls.py
index a732934e..f0fc25bb 100644
--- a/dynamicweb/urls.py
+++ b/dynamicweb/urls.py
@@ -7,9 +7,10 @@ from django.conf.urls.static import static
 from django.conf import settings
 from hosting.views import RailsHostingView, DjangoHostingView, NodeJSHostingView
 from membership import urls as membership_urls
+from ungleich_page.views import LandingView
 import debug_toolbar
 
-urlpatterns = [
+urlpatterns = [   url(r'^index.html$', LandingView.as_view()),
                   url(r'^hosting/', include('hosting.urls', namespace="hosting")),
                   url(r'^railshosting/', RailsHostingView.as_view(), name="rails.hosting"),
                   url(r'^nodehosting/', NodeJSHostingView.as_view(), name="node.hosting"),
@@ -21,12 +22,13 @@ urlpatterns = [
 
 # note the django CMS URLs included via i18n_patterns
 urlpatterns += i18n_patterns('',
+                             url(r'^/?$', LandingView.as_view()),
                              url(r'^admin/', include(admin.site.urls)),
                              url(r'^digitalglarus/login/', include(membership_urls)),
                              url(r'^digitalglarus/', include('digitalglarus.urls',
                                                              namespace="digitalglarus")),
-                             # url(r'^blog/', include('ungleich.urls', namespace='ungleich')),
-                             url(r'^ungleich_page/',
+                             #url(r'^blog/', include('ungleich.urls', namespace='ungleich')),
+                             url(r'^',
                                  include('ungleich_page.urls', namespace='ungleich_page'),
                                  name='ungleich_page'),
                              url(r'^blog/', include('ungleich.urls', namespace='ungleich')),
diff --git a/hosting/mixins.py b/hosting/mixins.py
index e8a2b7b4..2f8de3a5 100644
--- a/hosting/mixins.py
+++ b/hosting/mixins.py
@@ -1,18 +1,21 @@
 from django.shortcuts import redirect
 from django.core.urlresolvers import reverse
+from .models import VirtualMachinePlan
 
 
 class ProcessVMSelectionMixin(object):
 
     def post(self, request, *args, **kwargs):
+        hosting = request.POST.get('configuration')
+        configuration_detail = dict(VirtualMachinePlan.VM_CONFIGURATION).get(hosting)
         vm_specs = {
             'cores': request.POST.get('cores'),
             'memory': request.POST.get('memory'),
             'disk_size': request.POST.get('disk_space'),
             'hosting_company': request.POST.get('hosting_company'),
             'location_code': request.POST.get('location_code'),
-            'configuration': request.POST.get('configuration'),
-            'configuration_detail': request.POST.get('configuration_detail'),
+            'configuration': hosting,
+            'configuration_detail': configuration_detail,
             'final_price': request.POST.get('final_price')
         }
         request.session['vm_specs'] = vm_specs
diff --git a/hosting/templates/hosting/hosting_pricing.html b/hosting/templates/hosting/hosting_pricing.html
new file mode 100644
index 00000000..c6ae33d0
--- /dev/null
+++ b/hosting/templates/hosting/hosting_pricing.html
@@ -0,0 +1,44 @@
+{% load staticfiles %}
+<!DOCTYPE html>
+<html>
+<head>
+	<link href="{% static 'hosting/css/pricing.css' %}" rel="stylesheet" />
+	<title>Hosting</title>
+    <!-- Bootstrap Core CSS -->
+    <link href="{% static 'hosting/css/bootstrap.min.css' %}" rel="stylesheet">
+
+    <link href="{% static 'hosting/css/pricing.css' %}" rel="stylesheet">
+
+
+    <!-- Custom CSS -->
+    <link href="{% static 'hosting/css/landing-page.css' %}" rel="stylesheet">
+
+    <!-- Custom Fonts -->
+    <link href='//fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
+    <link href="{% static 'hosting/font-awesome/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css">
+    <link href="//fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
+    <link rel="shortcut icon" href="{% static 'hosting/img/favicon.ico' %}" type="image/x-icon" />
+
+</head>
+<body>
+
+	{% include "hosting/includes/_pricing.html" with select_configuration=True%}
+
+
+    <!-- Pricing data -->
+    {% if vm_types %}
+    <script type="text/javascript"> 
+         (function () {window.VMTypesData = "{{vm_types|safe}}";})();
+    </script>
+    {%endif%}
+
+    <!-- Lodash -->
+    <script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/4.11.1/lodash.min.js"></script>
+
+    <!-- jQuery -->
+    <script src="{% static 'hosting/js/jquery.js' %}"></script>
+
+    <!-- Pricing -->
+    <script src="{% static 'hosting/js/pricing.js' %}"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/hosting/templates/hosting/includes/_pricing.html b/hosting/templates/hosting/includes/_pricing.html
index 3a9138b4..92033be8 100644
--- a/hosting/templates/hosting/includes/_pricing.html
+++ b/hosting/templates/hosting/includes/_pricing.html
@@ -24,8 +24,7 @@
                 {% csrf_token %}
                 <input type="hidden" name="hosting_company" value="{{vm.hosting_company}}">
                 <input type="hidden" name="location_code" value="{{vm.location_code}}">
-                <input type="hidden" name="configuration_detail" value="{{configuration_detail}}">
-                <input type="hidden" name="configuration" value="{{hosting}}">
+               
                 
                 
                 <ul class="pricing {% cycle 'p-red' 'p-black' 'p-red' 'p-yel' %}">
@@ -46,13 +45,24 @@
                     </div>
                   </li>
                   <li>
-                    <!-- Single button -->
-                    <div class="btn-group">
-                      <div class="form-group">
-                        <label for="cores">Configuration: </label>
-                        {{configuration_detail}}
+                  <label for="configuration">Configuration: </label>
+                    {% if select_configuration %}
+                        <select class="form-control" name="configuration" id="{{vm.hosting_company}}-configuration" data-vm-type="{{vm.hosting_company}}">
+                        {% for key,value in configuration_options.items   %}
+                            <option  value="{{key}}">{{ value }}</option>
+                        {% endfor %}
+                        </select>
+                    {% else %}
+                      <input type="hidden" name="configuration_detail" value="{{configuration_detail}}">
+                      <input type="hidden" name="configuration" value="{{hosting}}">
+                      <!-- Single button -->
+                      <div class="btn-group">
+                        <div class="form-group">
+                          <label>Configuration: </label>
+                          {{configuration_detail}}
+                        </div>
                       </div>
-                    </div>
+                    {% endif %}
                   </li>
                   <li>
                     <!-- Single button -->
diff --git a/hosting/templates/hosting/virtual_machine_detail.html b/hosting/templates/hosting/virtual_machine_detail.html
index 24ee5d6c..b06bba86 100644
--- a/hosting/templates/hosting/virtual_machine_detail.html
+++ b/hosting/templates/hosting/virtual_machine_detail.html
@@ -89,6 +89,11 @@
 								    </div><!--/row-->    
 								  </div><!--/col-12-->
 								</div><!--/row-->
+								<div class="row">
+									<div class="col-md-12">
+										Configuration: {{virtual_machine.get_configuration_display}}
+									</div>
+								</div>
 
 
 				            </div>
diff --git a/hosting/urls.py b/hosting/urls.py
index 225dd19e..5ceeba97 100644
--- a/hosting/urls.py
+++ b/hosting/urls.py
@@ -4,13 +4,14 @@ from .views import DjangoHostingView, RailsHostingView, PaymentVMView,\
     NodeJSHostingView, LoginView, SignupView, IndexView, \
     OrdersHostingListView, OrdersHostingDetailView, VirtualMachinesPlanListView,\
     VirtualMachineView, GenerateVMSSHKeysView, OrdersHostingDeleteView, NotificationsView, \
-    MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView
+    MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, HostingPricingView
 
 urlpatterns = [
     url(r'index/?$', IndexView.as_view(), name='index'),
     url(r'django/?$', DjangoHostingView.as_view(), name='djangohosting'),
     url(r'nodejs/?$', NodeJSHostingView.as_view(), name='nodejshosting'),
     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'orders/?$', OrdersHostingListView.as_view(), name='orders'),
     url(r'orders/(?P<pk>\d+)/?$', OrdersHostingDetailView.as_view(), name='orders'),
diff --git a/hosting/views.py b/hosting/views.py
index 09f94ac9..c66068d1 100644
--- a/hosting/views.py
+++ b/hosting/views.py
@@ -99,6 +99,26 @@ class NodeJSHostingView(ProcessVMSelectionMixin, View):
         return render(request, self.template_name, context)
 
 
+class HostingPricingView(ProcessVMSelectionMixin, View):
+    template_name = "hosting/hosting_pricing.html"
+
+    def get_context_data(self, **kwargs):
+        configuration_options = dict(VirtualMachinePlan.VM_CONFIGURATION)
+        context = {
+            'configuration_options': configuration_options,
+            'email': "info@django-hosting.ch",
+            'vm_types': VirtualMachineType.get_serialized_vm_types(),
+        }
+
+        return context
+
+    def get(self, request, *args, **kwargs):
+        request.session['hosting_url'] = reverse('hosting:djangohosting')
+        context = self.get_context_data()
+
+        return render(request, self.template_name, context)
+
+
 class IndexView(View):
     template_name = "hosting/index.html"