Send email to admin on VAT number update
This commit is contained in:
		
					parent
					
						
							
								d4bfcbef47
							
						
					
				
			
			
				commit
				
					
						efaf75615b
					
				
			
		
					 2 changed files with 45 additions and 0 deletions
				
			
		|  | @ -40,6 +40,7 @@ from datacenterlight.models import VMTemplate, VMPricing | ||||||
| from datacenterlight.utils import ( | from datacenterlight.utils import ( | ||||||
|     create_vm, get_cms_integration, check_otp, validate_vat_number |     create_vm, get_cms_integration, check_otp, validate_vat_number | ||||||
| ) | ) | ||||||
|  | from dynamicweb.settings.base import DCL_ERROR_EMAILS_TO_LIST | ||||||
| from hosting.models import UserCardDetail | from hosting.models import UserCardDetail | ||||||
| from membership.models import CustomUser, StripeCustomer | from membership.models import CustomUser, StripeCustomer | ||||||
| from opennebula_api.models import OpenNebulaManager | from opennebula_api.models import OpenNebulaManager | ||||||
|  | @ -663,9 +664,29 @@ class SettingsView(LoginRequiredMixin, FormView): | ||||||
|                         ) |                         ) | ||||||
|                         billing_address = current_billing_address |                         billing_address = current_billing_address | ||||||
|                         billing_address.save() |                         billing_address.save() | ||||||
|  |                         email_data = { | ||||||
|  |                             'subject': "%s updated VAT number to %s but failed" % | ||||||
|  |                                        (request.user.email, vat_number), | ||||||
|  |                             'from_email': settings.DCL_SUPPORT_FROM_ADDRESS, | ||||||
|  |                             'to': settings.DCL_ERROR_EMAILS_TO_LIST, | ||||||
|  |                             'body': "\n".join( | ||||||
|  |                                 ["%s=%s" % (k, v) for (k, v) in | ||||||
|  |                                  validate_result.items()]), | ||||||
|  |                         } | ||||||
|                     else: |                     else: | ||||||
|  |                         email_data = { | ||||||
|  |                             'subject': "%s updated VAT number to %s" % ( | ||||||
|  |                                 request.user.email, vat_number | ||||||
|  |                             ), | ||||||
|  |                             'from_email': settings.DCL_SUPPORT_FROM_ADDRESS, | ||||||
|  |                             'to': settings.DCL_ERROR_EMAILS_TO_LIST, | ||||||
|  |                             'body': "\n".join( | ||||||
|  |                                 ["%s=%s" % (k, v) for (k, v) in | ||||||
|  |                                  validate_result.items()]), | ||||||
|  |                         } | ||||||
|                         msg = _("Billing address updated successfully") |                         msg = _("Billing address updated successfully") | ||||||
|                         messages.add_message(request, messages.SUCCESS, msg) |                         messages.add_message(request, messages.SUCCESS, msg) | ||||||
|  |                     send_plain_email_task.delay(email_data) | ||||||
|                 else: |                 else: | ||||||
|                     msg = _("Billing address updated successfully") |                     msg = _("Billing address updated successfully") | ||||||
|                     messages.add_message(request, messages.SUCCESS, msg) |                     messages.add_message(request, messages.SUCCESS, msg) | ||||||
|  |  | ||||||
|  | @ -8,6 +8,8 @@ from django.http import HttpResponse | ||||||
| from django.views.decorators.csrf import csrf_exempt | from django.views.decorators.csrf import csrf_exempt | ||||||
| from django.views.decorators.http import require_POST | from django.views.decorators.http import require_POST | ||||||
| 
 | 
 | ||||||
|  | from membership.models import StripeCustomer | ||||||
|  | 
 | ||||||
| from utils.models import BillingAddress, UserBillingAddress | from utils.models import BillingAddress, UserBillingAddress | ||||||
| from utils.tasks import send_plain_email_task | from utils.tasks import send_plain_email_task | ||||||
| 
 | 
 | ||||||
|  | @ -70,6 +72,12 @@ def handle_webhook(request): | ||||||
|         tax_id_obj = event.data.object |         tax_id_obj = event.data.object | ||||||
|         logger.debug("Tax_id %s is %s" % (tax_id_obj.id, |         logger.debug("Tax_id %s is %s" % (tax_id_obj.id, | ||||||
|                      tax_id_obj.verification.status)) |                      tax_id_obj.verification.status)) | ||||||
|  |         stripe_customer = None | ||||||
|  |         try: | ||||||
|  |             stripe_customer = StripeCustomer.objects.get(tax_id_obj.customer) | ||||||
|  |         except StripeCustomer.DoesNotExist as dne: | ||||||
|  |             logger.debug( | ||||||
|  |                 "StripeCustomer %s does not exist" % tax_id_obj.customer) | ||||||
|         if tax_id_obj.verification.status == "verified": |         if tax_id_obj.verification.status == "verified": | ||||||
|             b_addresses = BillingAddress.objects.filter(stripe_tax_id=tax_id_obj.id) |             b_addresses = BillingAddress.objects.filter(stripe_tax_id=tax_id_obj.id) | ||||||
|             for b_address in b_addresses: |             for b_address in b_addresses: | ||||||
|  | @ -82,9 +90,25 @@ def handle_webhook(request): | ||||||
|                 ub_address.vat_validation_status = tax_id_obj.verification.status |                 ub_address.vat_validation_status = tax_id_obj.verification.status | ||||||
|                 ub_address.vat_number_validated_on = datetime.datetime.now() |                 ub_address.vat_number_validated_on = datetime.datetime.now() | ||||||
|                 ub_address.save() |                 ub_address.save() | ||||||
|  |             email_data = { | ||||||
|  |                 'subject': "The VAT %s associated with %s was verified" % | ||||||
|  |                            (tax_id_obj.value,  stripe_customer.user.email if stripe_customer else "unknown"), | ||||||
|  |                 'from_email': settings.DCL_SUPPORT_FROM_ADDRESS, | ||||||
|  |                 'to': settings.DCL_ERROR_EMAILS_TO_LIST, | ||||||
|  |                 'body': "The following objects were modified:\n".join(b_addresses).join(ub_addresses), | ||||||
|  |             } | ||||||
|         else: |         else: | ||||||
|             logger.debug("Tax_id %s is %s" % (tax_id_obj.id, |             logger.debug("Tax_id %s is %s" % (tax_id_obj.id, | ||||||
|                          tax_id_obj.verification.status)) |                          tax_id_obj.verification.status)) | ||||||
|  |             email_data = { | ||||||
|  |                 'subject': "The VAT %s associated with %s was %s" % | ||||||
|  |                            (tax_id_obj.value,  stripe_customer.user.email if stripe_customer else "unknown", tax_id_obj.verification.status), | ||||||
|  |                 'from_email': settings.DCL_SUPPORT_FROM_ADDRESS, | ||||||
|  |                 'to': settings.DCL_ERROR_EMAILS_TO_LIST, | ||||||
|  |                 'body': "Response = %s" % str(tax_id_obj), | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |         send_plain_email_task.delay(email_data) | ||||||
|     else: |     else: | ||||||
|         logger.error("Unhandled event : " + event.type) |         logger.error("Unhandled event : " + event.type) | ||||||
|     return HttpResponse(status=200) |     return HttpResponse(status=200) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue