From 9f2c78db33ce34ed3916b834343b1fba72a194ee Mon Sep 17 00:00:00 2001
From: Levi <levinoelvm@gmail.com>
Date: Thu, 16 Jun 2016 01:04:48 -0500
Subject: [PATCH 1/2] Added cron to send email and fixing settings error

---
 dynamicweb/settings/base.py                   |  1 +
 dynamicweb/settings/prod.py                   |  2 ++
 dynamicweb/urls.py                            |  2 +-
 email_cron                                    |  3 +++
 hosting/admin.py                              |  8 +++---
 hosting/templates/emails/new_booked_vm.html   |  2 +-
 hosting/templates/emails/new_booked_vm.txt    |  4 +--
 hosting/templates/emails/vm_charged.html      |  2 +-
 hosting/templates/emails/vm_charged.txt       |  2 +-
 .../templates/emails/vm_status_changed.html   |  2 +-
 .../templates/emails/vm_status_changed.txt    |  2 +-
 hosting/test_views.py                         |  8 +++---
 hosting/views.py                              | 25 +++++++++++++------
 .../cms/ungleichch/base_ungleich.html         |  2 +-
 utils/mailer.py                               |  2 +-
 15 files changed, 42 insertions(+), 25 deletions(-)
 create mode 100644 email_cron

diff --git a/dynamicweb/settings/base.py b/dynamicweb/settings/base.py
index ab2d6763..e31cbef3 100644
--- a/dynamicweb/settings/base.py
+++ b/dynamicweb/settings/base.py
@@ -55,6 +55,7 @@ INSTALLED_APPS = (
     'easy_thumbnails',
     'utils',
     'stored_messages',
+    'mailer',
     'mptt',
     'parler',
     'taggit',
diff --git a/dynamicweb/settings/prod.py b/dynamicweb/settings/prod.py
index 1588b5c3..36d625c6 100644
--- a/dynamicweb/settings/prod.py
+++ b/dynamicweb/settings/prod.py
@@ -8,6 +8,8 @@ ADMINS = (
 )
 #    ('Sanghee Kim', 'sanghee.kim@ungleich.ch'),
 
+EMAIL_BACKEND = "mailer.backend.DbBackend"
+
 #MANAGERS = ADMINS
 
 REGISTRATION_MESSAGE['message'] = REGISTRATION_MESSAGE['message'].format(host='digitalglarus.ungleich.ch',slug='{slug}')
diff --git a/dynamicweb/urls.py b/dynamicweb/urls.py
index 0e2e2196..a732934e 100644
--- a/dynamicweb/urls.py
+++ b/dynamicweb/urls.py
@@ -25,7 +25,7 @@ urlpatterns += i18n_patterns('',
                              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'^blog/', include('ungleich.urls', namespace='ungleich')),
                              url(r'^ungleich_page/',
                                  include('ungleich_page.urls', namespace='ungleich_page'),
                                  name='ungleich_page'),
diff --git a/email_cron b/email_cron
new file mode 100644
index 00000000..559fd565
--- /dev/null
+++ b/email_cron
@@ -0,0 +1,3 @@
+* * * * * (cd /home/app/app/; /usr/bin/python3 manage.py send_mail)
+0,20,40 * * * * (cd /home/app/app/; /usr/bin/python3 manage.py retry_deferred)
+0 0 * * * (cd /home/app/app/; /usr/bin/python3 manage.py purge_mail_log 7)
\ No newline at end of file
diff --git a/hosting/admin.py b/hosting/admin.py
index 8c9d59da..640878f5 100644
--- a/hosting/admin.py
+++ b/hosting/admin.py
@@ -32,10 +32,11 @@ class HostingOrderAdmin(admin.ModelAdmin):
 
             context = {
                 'order': obj,
-                'vm': obj.vm_plan
+                'vm': obj.vm_plan,
+                'base_url': "{0}://{1}".format(request.scheme, request.get_host())
             }
             email_data = {
-                'subject': 'New VM request',
+                'subject': 'Your VM plan has been charged',
                 'to': obj.customer.user.email,
                 'context': context,
                 'template_name': 'vm_charged',
@@ -75,7 +76,8 @@ class VirtualMachinePlanAdmin(admin.ModelAdmin):
         email = self.email(obj)
         if 'status' in form.changed_data:
             context = {
-                'vm': obj
+                'vm': obj,
+                'base_url': "{0}://{1}".format(request.scheme, request.get_host())
             }
             email_data = {
                 'subject': 'Your VM has been activated',
diff --git a/hosting/templates/emails/new_booked_vm.html b/hosting/templates/emails/new_booked_vm.html
index a36f12a8..651e1c54 100644
--- a/hosting/templates/emails/new_booked_vm.html
+++ b/hosting/templates/emails/new_booked_vm.html
@@ -114,7 +114,7 @@
                   <w:anchorlock/>
                   <center style="color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;">My Account</center>
                 </v:roundrect>
-              <![endif]--><a href="{% url 'hosting:orders' order.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">View Invoice</a>
+              <![endif]--><a href="{{ base_url }}{% url 'hosting:orders' order.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">View Invoice</a>
 </div>
             </td>
           </tr>
diff --git a/hosting/templates/emails/new_booked_vm.txt b/hosting/templates/emails/new_booked_vm.txt
index 3f32d12a..651e1c54 100644
--- a/hosting/templates/emails/new_booked_vm.txt
+++ b/hosting/templates/emails/new_booked_vm.txt
@@ -101,7 +101,7 @@
 <td class="free-text" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; width: 100% !important; padding: 10px 60px 0px;" align="center">
              Your virtual machine {{vm.name}} subscription has been charged, 
              <br/>
-             We are going to contact you as soon your virtual machine has been activated.
+             we are going to contact you as soon your virtual machine has been activated.
              <br/> 
              You can view your invoice clicking on the button below. 
             </td>
@@ -114,7 +114,7 @@
                   <w:anchorlock/>
                   <center style="color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;">My Account</center>
                 </v:roundrect>
-              <![endif]--><a href="{% url 'hosting:orders' order.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">View Invoice</a>
+              <![endif]--><a href="{{ base_url }}{% url 'hosting:orders' order.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">View Invoice</a>
 </div>
             </td>
           </tr>
diff --git a/hosting/templates/emails/vm_charged.html b/hosting/templates/emails/vm_charged.html
index 3f0f5f8f..ff3508d9 100644
--- a/hosting/templates/emails/vm_charged.html
+++ b/hosting/templates/emails/vm_charged.html
@@ -110,7 +110,7 @@
                   <w:anchorlock/>
                   <center style="color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;">My Account</center>
                 </v:roundrect>
-              <![endif]--><a href="{% url 'hosting:orders' order.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">View Invoice</a>
+              <![endif]--><a href="{{ base_url }}{% url 'hosting:orders' order.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">View Invoice</a>
 </div>
             </td>
           </tr>
diff --git a/hosting/templates/emails/vm_charged.txt b/hosting/templates/emails/vm_charged.txt
index 3f0f5f8f..ff3508d9 100644
--- a/hosting/templates/emails/vm_charged.txt
+++ b/hosting/templates/emails/vm_charged.txt
@@ -110,7 +110,7 @@
                   <w:anchorlock/>
                   <center style="color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;">My Account</center>
                 </v:roundrect>
-              <![endif]--><a href="{% url 'hosting:orders' order.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">View Invoice</a>
+              <![endif]--><a href="{{ base_url }}{% url 'hosting:orders' order.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">View Invoice</a>
 </div>
             </td>
           </tr>
diff --git a/hosting/templates/emails/vm_status_changed.html b/hosting/templates/emails/vm_status_changed.html
index 96261f44..fd10182a 100644
--- a/hosting/templates/emails/vm_status_changed.html
+++ b/hosting/templates/emails/vm_status_changed.html
@@ -111,7 +111,7 @@
                   <w:anchorlock/>
                   <center style="color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;">My Account</center>
                 </v:roundrect>
-              <![endif]--><a href="{{request.HOS}}{% url 'hosting:virtual_machines' vm.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">VM Dashboard</a>
+              <![endif]--><a href="{{base_url}}{% url 'hosting:virtual_machines' vm.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">VM Dashboard</a>
 </div>
             </td>
           </tr>
diff --git a/hosting/templates/emails/vm_status_changed.txt b/hosting/templates/emails/vm_status_changed.txt
index 96261f44..fd10182a 100644
--- a/hosting/templates/emails/vm_status_changed.txt
+++ b/hosting/templates/emails/vm_status_changed.txt
@@ -111,7 +111,7 @@
                   <w:anchorlock/>
                   <center style="color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;">My Account</center>
                 </v:roundrect>
-              <![endif]--><a href="{{request.HOS}}{% url 'hosting:virtual_machines' vm.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">VM Dashboard</a>
+              <![endif]--><a href="{{base_url}}{% url 'hosting:virtual_machines' vm.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">VM Dashboard</a>
 </div>
             </td>
           </tr>
diff --git a/hosting/test_views.py b/hosting/test_views.py
index 0e9c7626..b2deb6d7 100644
--- a/hosting/test_views.py
+++ b/hosting/test_views.py
@@ -10,7 +10,7 @@ from model_mommy import mommy
 from membership.models import CustomUser, StripeCustomer
 from .models import VirtualMachineType, HostingOrder, VirtualMachinePlan
 from .views import DjangoHostingView, RailsHostingView, NodeJSHostingView, LoginView, SignupView, \
-    PaymentVMView, OrdersHostingDetailView, OrdersHostingListView, VirtualMachineDetailView, \
+    PaymentVMView, OrdersHostingDetailView, OrdersHostingListView, VirtualMachineView, \
     VirtualMachinesPlanListView
 from utils.tests import BaseTestCase
 
@@ -172,16 +172,16 @@ class PaymentVMViewTest(BaseTestCase):
                          settings.STRIPE_API_PUBLIC_KEY)
 
 
-class VirtualMachineDetailViewTest(BaseTestCase):
+class VirtualMachineViewTest(BaseTestCase):
 
     def setUp(self):
-        super(VirtualMachineDetailViewTest, self).setUp()
+        super(VirtualMachineViewTest, self).setUp()
 
         self.stripe_customer = mommy.make(StripeCustomer, user=self.customer)
         self.vm = mommy.make(VirtualMachinePlan)
         self.order = mommy.make(HostingOrder, customer=self.stripe_customer, vm_plan=self.vm)
         self.url = reverse('hosting:virtual_machines', kwargs={'pk': self.vm.id})
-        self.view = VirtualMachineDetailView()
+        self.view = VirtualMachineView()
         self.expected_template = 'hosting/virtual_machine_detail.html'
 
     def url_resolve_to_view_correctly(self):
diff --git a/hosting/views.py b/hosting/views.py
index eca04023..ca591c45 100644
--- a/hosting/views.py
+++ b/hosting/views.py
@@ -285,13 +285,26 @@ class PaymentVMView(LoginRequiredMixin, FormView):
 
             # Send notification to ungleich as soon as VM has been booked
             # TODO send email using celery
+
+            from django.core.mail import send_mail
+
+            send_mail(
+                'Subject here',
+                'Here is the message.',
+                'levinoelvm@gmail.com',
+                ['levinoelvm@gmail.com'],
+                fail_silently=False,
+            )
+
             context = {
                 'vm': plan,
-                'order': order
+                'order': order,
+                'base_url': "{0}://{1}".format(request.scheme, request.get_host())
+
             }
             email_data = {
                 'subject': 'New VM request',
-                'to': 'info@ungleich.ch',
+                'to': request.user.email,
                 'context': context,
                 'template_name': 'new_booked_vm',
                 'template_path': 'emails/'
@@ -299,11 +312,6 @@ class PaymentVMView(LoginRequiredMixin, FormView):
             email = BaseEmail(**email_data)
             email.send()
 
-            # request.session.update({
-            #     'charge': charge,
-            #     'order': order.id,
-            #     'billing_address': billing_address.id
-            # })
             return HttpResponseRedirect(reverse('hosting:orders', kwargs={'pk': order.id}))
         else:
             return self.form_invalid(form)
@@ -368,7 +376,8 @@ class VirtualMachineView(LoginRequiredMixin, UpdateView):
         vm.cancel_plan()
 
         context = {
-            'vm': vm
+            'vm': vm,
+            'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host())
         }
         email_data = {
             'subject': 'Virtual machine plan canceled',
diff --git a/ungleich/templates/cms/ungleichch/base_ungleich.html b/ungleich/templates/cms/ungleichch/base_ungleich.html
index 833b2111..6f70a4a8 100644
--- a/ungleich/templates/cms/ungleichch/base_ungleich.html
+++ b/ungleich/templates/cms/ungleichch/base_ungleich.html
@@ -1,4 +1,4 @@
-{% load cms_tags menu_tags sekizai_tags staticfiles bootstrap3 %}
+{% load  i18n cms_tags menu_tags sekizai_tags staticfiles bootstrap3 %}
 <!doctype html>
 <html>
   <head>
diff --git a/utils/mailer.py b/utils/mailer.py
index 130b74ee..0afa60b7 100644
--- a/utils/mailer.py
+++ b/utils/mailer.py
@@ -21,7 +21,7 @@ class BaseEmail(object):
 
         self.email = EmailMultiAlternatives(self.subject, text_content)
         self.email.attach_alternative(html_content, "text/html")
-        self.email.to = ['info@digitalglarus.ch']
+        self.email.to = ['levinoelvm@gmail.com']
 
     def send(self):
         self.email.send()

From e0a27ba6024b7639e4128d704f9737c7690567d9 Mon Sep 17 00:00:00 2001
From: Levi <levinoelvm@gmail.com>
Date: Thu, 16 Jun 2016 01:19:40 -0500
Subject: [PATCH 2/2] revert django-mailer  configuration

---
 dynamicweb/settings/base.py | 1 -
 dynamicweb/settings/prod.py | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/dynamicweb/settings/base.py b/dynamicweb/settings/base.py
index e31cbef3..ab2d6763 100644
--- a/dynamicweb/settings/base.py
+++ b/dynamicweb/settings/base.py
@@ -55,7 +55,6 @@ INSTALLED_APPS = (
     'easy_thumbnails',
     'utils',
     'stored_messages',
-    'mailer',
     'mptt',
     'parler',
     'taggit',
diff --git a/dynamicweb/settings/prod.py b/dynamicweb/settings/prod.py
index 36d625c6..0d77d1ab 100644
--- a/dynamicweb/settings/prod.py
+++ b/dynamicweb/settings/prod.py
@@ -8,7 +8,7 @@ ADMINS = (
 )
 #    ('Sanghee Kim', 'sanghee.kim@ungleich.ch'),
 
-EMAIL_BACKEND = "mailer.backend.DbBackend"
+EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
 
 #MANAGERS = ADMINS