diff --git a/src/customer/emails.py b/src/customer/emails.py index b4659a3..d3e0a7f 100644 --- a/src/customer/emails.py +++ b/src/customer/emails.py @@ -20,3 +20,20 @@ def send_offer_buy_licence_for_get_bonus(user_email, url): email_body = render_to_string(template_name, dict_context) email = EmailMessage(subject=subject, to=(user_email,), body=email_body) return email.send() + + +@task +def send_license_successful_purchased(user_email, order_number, lic_term, activate_date): + template_name = 'emails/license_successful_purchased.txt' + subject = 'Документор: Успешная оплата лицензии' + dict_context = {'user_email': user_email, + 'support_email': settings.SUPPORT_EMAIL, + 'url': 'my/orders/', + 'site_url': get_site_url(), + 'order_number': order_number, + 'lic_term': lic_term, + 'activate_date': activate_date + } + email_body = render_to_string(template_name, dict_context) + email = EmailMessage(subject=subject, to=(user_email,), body=email_body) + return email.send() diff --git a/src/customer/models.py b/src/customer/models.py index 7558a69..f4af9b0 100644 --- a/src/customer/models.py +++ b/src/customer/models.py @@ -22,6 +22,8 @@ from myauth.models import DokUser from commons.utils import only_numerics from robokassa.signals import result_received, success_page_visited +from . import emails + log = logging.getLogger(__name__) # куда сохранять загруженные изображения @@ -755,8 +757,7 @@ class Payment(models.Model): return f'{self.user}-{self.order_number}-{self.get_status_display()}' -@receiver(result_received) -def order_completed(sender, **kwargs): +def confirmed_purchase(**kwargs): try: payment = Payment.objects.get( pk=kwargs['InvId'], @@ -770,29 +771,25 @@ def order_completed(sender, **kwargs): lic.paid_date = datetime.now().date() lic.save() + emails.send_license_successful_purchased.delay( + payment.user.email, + lic.pk, + lic.get_term(), + lic.date_from + ) + except Payment.DoesNotExist: log.info(f"payment with id={kwargs['InvId']} not found") except License.DoesNotExist: log.info(f"payment with id={kwargs['InvId']} not found") +@receiver(result_received) +def order_completed(sender, **kwargs): + confirmed_purchase(**kwargs) + + @receiver(success_page_visited) def success_page_visited_completed(sender, **kwargs): if settings.DEBUG: - try: - payment = Payment.objects.get( - pk=kwargs['InvId'], - order_amount=kwargs['OutSum'] - ) - payment.status = Payment.SUCCESS - payment.save() - - lic = License.objects.get(pk=payment.order_number) - lic.status = consts.STATUS_PAID - lic.paid_date = datetime.now().date() - lic.save() - - except Payment.DoesNotExist: - log.info(f"payment with id={kwargs['InvId']} not found") - except License.DoesNotExist: - log.info(f"payment with id={kwargs['InvId']} not found") + confirmed_purchase(**kwargs) diff --git a/src/customer/tasks.py b/src/customer/tasks.py index e39069c..a56e6e0 100644 --- a/src/customer/tasks.py +++ b/src/customer/tasks.py @@ -23,14 +23,6 @@ def check_license(): profiles = UserProfile.objects.all() now = datetime.today() - # TODO: not needed - # licenses = License.objects.filter( - # order_date__lte=now - timedelta(10), - # status=0, - # deleted=False - # ) - # licenses.update(status=4) - for profile in profiles: try: check_one_profile(profile, now)