2023-01-21 14:15:36 -07:00

56 lines
1.8 KiB
Python

from allauth.account.models import EmailAddress
from .models import Address, User
from .tasks import send_account_created_email
def get_or_create_customer(request, shipping_address):
address, a_created = Address.objects.get_or_create(
first_name=shipping_address['first_name'],
last_name=shipping_address['last_name'],
street_address_1=shipping_address['street_address_1'],
street_address_2=shipping_address['street_address_2'],
city=shipping_address['city'],
state=shipping_address['state'],
postal_code=shipping_address['postal_code']
)
if request.user.is_authenticated:
user = request.user
user.addresses.add(address)
if not user.default_shipping_address:
user.default_shipping_address = address
user.save()
else:
user, u_created = User.objects.get_or_create(
email=shipping_address['email'].lower(),
defaults={
'username': shipping_address['email'].lower(),
'is_staff': False,
'is_active': True,
'is_superuser': False,
'first_name': address.first_name,
'last_name': address.last_name,
'default_shipping_address': address,
}
)
if u_created:
password = User.objects.make_random_password()
user.set_password(password)
user.addresses.add(address)
user.save()
EmailAddress.objects.create(
user=user, email=user.email, primary=True, verified=False
)
u = {
'full_name': user.get_full_name(),
'email': user.email,
'password': password
}
send_account_created_email.delay(u)
return user, address