Created BaseEmail class , Now we are sending email to info@ungleich.com after an user book a VM, Fixed pricing issue, Now Admin can changed data about a booked VM
This commit is contained in:
parent
83a5a27791
commit
02e716106e
8 changed files with 70 additions and 4 deletions
|
@ -132,6 +132,7 @@ TEMPLATES = [
|
||||||
'DIRS': [os.path.join(PROJECT_DIR, 'cms_templates/'),
|
'DIRS': [os.path.join(PROJECT_DIR, 'cms_templates/'),
|
||||||
os.path.join(PROJECT_DIR, 'cms_templates/djangocms_blog/'),
|
os.path.join(PROJECT_DIR, 'cms_templates/djangocms_blog/'),
|
||||||
os.path.join(PROJECT_DIR, 'membership'),
|
os.path.join(PROJECT_DIR, 'membership'),
|
||||||
|
os.path.join(PROJECT_DIR, 'hosting/templates/'),
|
||||||
os.path.join(PROJECT_DIR, 'ungleich/templates/djangocms_blog/'),
|
os.path.join(PROJECT_DIR, 'ungleich/templates/djangocms_blog/'),
|
||||||
os.path.join(PROJECT_DIR, 'ungleich/templates/cms/ungleichch'),
|
os.path.join(PROJECT_DIR, 'ungleich/templates/cms/ungleichch'),
|
||||||
os.path.join(PROJECT_DIR, 'ungleich/templates/ungleich')
|
os.path.join(PROJECT_DIR, 'ungleich/templates/ungleich')
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from .models import VirtualMachineType
|
from .models import VirtualMachineType, VirtualMachinePlan
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(VirtualMachineType)
|
admin.site.register(VirtualMachineType)
|
||||||
|
admin.site.register(VirtualMachinePlan)
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 376 B After Width: | Height: | Size: 741 B |
12
hosting/templates/emails/new_booked_vm.html
Normal file
12
hosting/templates/emails/new_booked_vm.html
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
|
||||||
|
<<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
NEW VM BOOKED
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
12
hosting/templates/emails/new_booked_vm.txt
Normal file
12
hosting/templates/emails/new_booked_vm.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
|
||||||
|
<<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
NEW VM BOOKED
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -29,7 +29,7 @@
|
||||||
<ul class="pricing {% cycle 'p-red' 'p-black' 'p-red' 'p-yel' %}">
|
<ul class="pricing {% cycle 'p-red' 'p-black' 'p-red' 'p-yel' %}">
|
||||||
<li class="type">
|
<li class="type">
|
||||||
<!-- <img src="http://bread.pp.ua/n/settings_g.svg" alt=""> -->
|
<!-- <img src="http://bread.pp.ua/n/settings_g.svg" alt=""> -->
|
||||||
<h3 >{{vm.hosting_company_name}}</h3>
|
<h3 >{{vm.location_code}}</h3>
|
||||||
<br/>
|
<br/>
|
||||||
<img class="img-responsive" src="{{ STATIC_URL }}hosting/img/{{vm.location_code}}_flag.png" alt="">
|
<img class="img-responsive" src="{{ STATIC_URL }}hosting/img/{{vm.location_code}}_flag.png" alt="">
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ from django.contrib import messages
|
||||||
from membership.models import CustomUser, StripeCustomer
|
from membership.models import CustomUser, StripeCustomer
|
||||||
from utils.stripe_utils import StripeUtils
|
from utils.stripe_utils import StripeUtils
|
||||||
from utils.forms import BillingAddressForm
|
from utils.forms import BillingAddressForm
|
||||||
from utils.models import BillingAddress
|
from utils.mailer import BaseEmail
|
||||||
from .models import VirtualMachineType, VirtualMachinePlan, HostingOrder
|
from .models import VirtualMachineType, VirtualMachinePlan, HostingOrder
|
||||||
from .forms import HostingUserSignupForm, HostingUserLoginForm
|
from .forms import HostingUserSignupForm, HostingUserLoginForm
|
||||||
from .mixins import ProcessVMSelectionMixin
|
from .mixins import ProcessVMSelectionMixin
|
||||||
|
@ -174,6 +174,7 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
||||||
context.update({
|
context.update({
|
||||||
'stripe_key': settings.STRIPE_API_PUBLIC_KEY
|
'stripe_key': settings.STRIPE_API_PUBLIC_KEY
|
||||||
})
|
})
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def post(self, request, *args, **kwargs):
|
def post(self, request, *args, **kwargs):
|
||||||
|
@ -199,7 +200,7 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
||||||
customer = StripeCustomer.get_or_create(email=self.request.user.email,
|
customer = StripeCustomer.get_or_create(email=self.request.user.email,
|
||||||
token=token)
|
token=token)
|
||||||
if not customer:
|
if not customer:
|
||||||
form.add_error("__all__","Invalid credit card")
|
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 Virtual Machine Plan
|
# Create Virtual Machine Plan
|
||||||
|
@ -233,6 +234,18 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
||||||
|
|
||||||
# If the Stripe payment was successed, set order status approved
|
# If the Stripe payment was successed, set order status approved
|
||||||
order.set_approved()
|
order.set_approved()
|
||||||
|
|
||||||
|
# Send notification to ungleich as soon as VM has been booked
|
||||||
|
# TODO send email using celery
|
||||||
|
email_data = {
|
||||||
|
'subject': 'New VM request',
|
||||||
|
'to': 'info@ungleich.ch',
|
||||||
|
'template_name': 'new_booked_vm',
|
||||||
|
'template_path': 'emails/'
|
||||||
|
}
|
||||||
|
email = BaseEmail(**email_data)
|
||||||
|
email.send()
|
||||||
|
|
||||||
request.session.update({
|
request.session.update({
|
||||||
'charge': charge,
|
'charge': charge,
|
||||||
'order': order.id,
|
'order': order.id,
|
||||||
|
|
|
@ -1,9 +1,35 @@
|
||||||
import six
|
import six
|
||||||
from django.core.mail import send_mail
|
from django.core.mail import send_mail
|
||||||
|
from django.core.mail import EmailMultiAlternatives
|
||||||
|
from django.template.loader import render_to_string
|
||||||
|
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
|
|
||||||
|
class BaseEmail(object):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.to = kwargs.get('to')
|
||||||
|
self.template_name = kwargs.get('template_name')
|
||||||
|
self.template_path = kwargs.get('template_path')
|
||||||
|
self.subject = kwargs.get('subject')
|
||||||
|
self.context = kwargs.get('context', {})
|
||||||
|
self.template_full_path = '%s%s' % (self.template_path, self.template_name)
|
||||||
|
|
||||||
|
text_content = render_to_string('%s.txt' % self.template_full_path,
|
||||||
|
{'data': self.context})
|
||||||
|
html_content = render_to_string('%s.html' % self.template_full_path,
|
||||||
|
{'data': self.context})
|
||||||
|
|
||||||
|
self.email = EmailMultiAlternatives(self.subject, text_content)
|
||||||
|
self.email.attach_alternative(html_content, "text/html")
|
||||||
|
self.email.to = ['info@digitalglarus.ch']
|
||||||
|
|
||||||
|
def send(self):
|
||||||
|
self.email.send()
|
||||||
|
|
||||||
|
|
||||||
class BaseMailer(object):
|
class BaseMailer(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._slug = None
|
self._slug = None
|
||||||
|
@ -50,3 +76,4 @@ class DigitalGlarusRegistrationMailer(BaseMailer):
|
||||||
self.registration = self.message
|
self.registration = self.message
|
||||||
self._message = self._message.format(slug=self._slug)
|
self._message = self._message.format(slug=self._slug)
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue