From 3cbc807bf7c055ed12c9915ea5d37763572f892a Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 10 Mar 2021 10:23:43 +0000 Subject: [PATCH] finished work on purchase_email endpoint, for now --- products/tests.py | 6 ------ products/views.py | 22 ++++++++++---------- templates/purchase_contact_confirmation.html | 8 +++++-- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/products/tests.py b/products/tests.py index 19d7f2a..e68f9cc 100644 --- a/products/tests.py +++ b/products/tests.py @@ -1233,9 +1233,6 @@ class PurchaseEmailTest(APITestCase): def test_auth_user_can_use(self): company = CompanyFactory() - self.user.role = 'COOP_MANAGER' - self.user.company = company - self.user.save() product = ProductFactory(company=company) data = { @@ -1255,9 +1252,6 @@ class PurchaseEmailTest(APITestCase): def test_anon_user_bad_email(self): company = CompanyFactory() - self.user.role = 'COOP_MANAGER' - self.user.company = company - self.user.save() product = ProductFactory(company=company) data = { diff --git a/products/views.py b/products/views.py index 280f36a..f5b2a1e 100644 --- a/products/views.py +++ b/products/views.py @@ -5,7 +5,7 @@ import json from django.db.models import Q from django.core import serializers -from django.core.validators import EmailValidator, validate_email +from django.core.validators import validate_email from django.contrib.auth import get_user_model from django.template.loader import render_to_string from django.core.mail import EmailMessage @@ -280,32 +280,32 @@ def purchase_email(request): company = Company.objects.filter(id=data['company']).first() if not company: return Response({"error": "Invalid value for company"}, status=status.HTTP_406_NOT_ACCEPTABLE) - # get company manager - manager = User.objects.filter(company=company).first() - if not manager or manager.role != 'COOP_MANAGER': - return Response({"error": "Company has no managing user"}, status=status.HTTP_406_NOT_ACCEPTABLE) # get product product = Product.objects.filter(id=data['product'], company=company).first() if not product: return Response({"error": "Invalid value for product"}, status=status.HTTP_406_NOT_ACCEPTABLE) + # check company.email + if company.email is None: + return Response({"error": "Related compay has no contact email address"}, status=status.HTTP_406_NOT_ACCEPTABLE) - # send email to company manager - manager_message = render_to_string('purchase_notification.html', { + # send email to company + company_message = render_to_string('purchase_notification.html', { 'company': company, 'user': request.user, 'product': product, 'telephone': data['telephone'], }) - subject = "Contacto de usuario sobre venta" - email = EmailMessage(subject, manager_message, to=[manager.email]) + subject = "[latienda.coop] Solicitud de compra" + email = EmailMessage(subject, company_message, to=[company.email]) email.send() - logging.info(f"Email sent to {manager.email} as manager of {company}") + logging.info(f"Email sent to {company}") # send confirmation email to user user_message = render_to_string('purchase_contact_confirmation.html', { 'company': company, 'product': product, + 'company_message': company_message, }) - subject = 'Confirmación de contacto con vendedor' + subject = 'Confirmación de petición de compra' email = EmailMessage(subject, user_message, to=[email]) email.send() logging.info(f"Purchase Contact confirmation email sent to {email}") diff --git a/templates/purchase_contact_confirmation.html b/templates/purchase_contact_confirmation.html index eef225c..7d5deb6 100644 --- a/templates/purchase_contact_confirmation.html +++ b/templates/purchase_contact_confirmation.html @@ -1,6 +1,10 @@ Hola usuario. -Hemos envíado correctamente el email al usuario que gestiona {{company}} sobre el producto {{product}}. -Deberías revibir una respuesta directa en los próximos días. +Hemos envíado correctamente el siguiente email a la empresa {{company}} sobre el producto {{product}}: + +{{company_message}} + + +Deberías recibir una respuesta directa en los próximos días. LaTiendaCOOP