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/'), | ||||
|                  os.path.join(PROJECT_DIR, 'cms_templates/djangocms_blog/'), | ||||
|                  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/cms/ungleichch'), | ||||
|                  os.path.join(PROJECT_DIR, 'ungleich/templates/ungleich') | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| from django.contrib import admin | ||||
| from .models import VirtualMachineType | ||||
| from .models import VirtualMachineType, VirtualMachinePlan | ||||
| 
 | ||||
| 
 | ||||
| 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' %}"> | ||||
|                   <li class="type"> | ||||
|                     <!-- <img src="http://bread.pp.ua/n/settings_g.svg" alt=""> --> | ||||
|                     <h3 >{{vm.hosting_company_name}}</h3> | ||||
|                     <h3 >{{vm.location_code}}</h3> | ||||
|                     <br/> | ||||
|                     <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 utils.stripe_utils import StripeUtils | ||||
| from utils.forms import BillingAddressForm | ||||
| from utils.models import BillingAddress | ||||
| from utils.mailer import BaseEmail | ||||
| from .models import VirtualMachineType, VirtualMachinePlan, HostingOrder | ||||
| from .forms import HostingUserSignupForm, HostingUserLoginForm | ||||
| from .mixins import ProcessVMSelectionMixin | ||||
|  | @ -174,6 +174,7 @@ class PaymentVMView(LoginRequiredMixin, FormView): | |||
|         context.update({ | ||||
|             'stripe_key': settings.STRIPE_API_PUBLIC_KEY | ||||
|         }) | ||||
| 
 | ||||
|         return context | ||||
| 
 | ||||
|     def post(self, request, *args, **kwargs): | ||||
|  | @ -199,7 +200,7 @@ class PaymentVMView(LoginRequiredMixin, FormView): | |||
|             customer = StripeCustomer.get_or_create(email=self.request.user.email, | ||||
|                                                     token=token) | ||||
|             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)) | ||||
| 
 | ||||
|             # Create Virtual Machine Plan | ||||
|  | @ -233,6 +234,18 @@ class PaymentVMView(LoginRequiredMixin, FormView): | |||
| 
 | ||||
|             # If the Stripe payment was successed, set order status 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({ | ||||
|                 'charge': charge, | ||||
|                 'order': order.id, | ||||
|  |  | |||
|  | @ -1,9 +1,35 @@ | |||
| import six | ||||
| 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 | ||||
| 
 | ||||
| 
 | ||||
| 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): | ||||
|     def __init__(self): | ||||
|         self._slug = None | ||||
|  | @ -50,3 +76,4 @@ class DigitalGlarusRegistrationMailer(BaseMailer): | |||
|         self.registration = self.message | ||||
|         self._message = self._message.format(slug=self._slug) | ||||
|         super().__init__() | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue