From 6d029fdeb53ebcf05649c16cb177a0b5fbf4af05 Mon Sep 17 00:00:00 2001 From: Levi 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 @@
My Account
- View Invoice + View Invoice 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 @@ Your virtual machine {{vm.name}} subscription has been charged,
- 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.
You can view your invoice clicking on the button below. @@ -114,7 +114,7 @@
My Account
- View Invoice + View Invoice 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 @@
My Account
- View Invoice + View Invoice 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 @@
My Account
- View Invoice + View Invoice 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 @@
My Account
- VM Dashboard + VM Dashboard 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 @@
My Account
- VM Dashboard + VM Dashboard 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 %} 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 a41b75935c0c9374379f422b5d89efef23ba68a7 Mon Sep 17 00:00:00 2001 From: Levi 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