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):
 | 
				
			||||||
| 
						 | 
					@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue