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
					
						
							
								71f3d30549
							
						
					
				
			
			
				commit
				
					
						b443d4d21e
					
				
			
		
					 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…
	
	Add table
		Add a link
		
	
		Reference in a new issue