Move address to the User, Order, and Subscription models respectively

This commit is contained in:
Nathan Chapman 2023-07-14 21:04:20 -06:00
parent c09184078a
commit de329a5340
7 changed files with 202 additions and 1 deletions

View File

@ -0,0 +1,38 @@
# Generated by Django 4.1.6 on 2023-07-15 02:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('accounts', '0002_address_accounts_address_all_key'),
]
operations = [
migrations.AddField(
model_name='user',
name='shipping_city',
field=models.CharField(blank=True, max_length=256),
),
migrations.AddField(
model_name='user',
name='shipping_postal_code',
field=models.CharField(blank=True, max_length=20),
),
migrations.AddField(
model_name='user',
name='shipping_state',
field=models.CharField(blank=True, choices=[('AL', 'Alabama'), ('AK', 'Alaska'), ('AS', 'American Samoa'), ('AZ', 'Arizona'), ('AR', 'Arkansas'), ('AA', 'Armed Forces Americas'), ('AE', 'Armed Forces Europe'), ('AP', 'Armed Forces Pacific'), ('CA', 'California'), ('CO', 'Colorado'), ('CT', 'Connecticut'), ('DE', 'Delaware'), ('DC', 'District of Columbia'), ('FM', 'Federated States of Micronesia'), ('FL', 'Florida'), ('GA', 'Georgia'), ('GU', 'Guam'), ('HI', 'Hawaii'), ('ID', 'Idaho'), ('IL', 'Illinois'), ('IN', 'Indiana'), ('IA', 'Iowa'), ('KS', 'Kansas'), ('KY', 'Kentucky'), ('LA', 'Louisiana'), ('ME', 'Maine'), ('MH', 'Marshall Islands'), ('MD', 'Maryland'), ('MA', 'Massachusetts'), ('MI', 'Michigan'), ('MN', 'Minnesota'), ('MS', 'Mississippi'), ('MO', 'Missouri'), ('MT', 'Montana'), ('NE', 'Nebraska'), ('NV', 'Nevada'), ('NH', 'New Hampshire'), ('NJ', 'New Jersey'), ('NM', 'New Mexico'), ('NY', 'New York'), ('NC', 'North Carolina'), ('ND', 'North Dakota'), ('MP', 'Northern Mariana Islands'), ('OH', 'Ohio'), ('OK', 'Oklahoma'), ('OR', 'Oregon'), ('PW', 'Palau'), ('PA', 'Pennsylvania'), ('PR', 'Puerto Rico'), ('RI', 'Rhode Island'), ('SC', 'South Carolina'), ('SD', 'South Dakota'), ('TN', 'Tennessee'), ('TX', 'Texas'), ('UT', 'Utah'), ('VT', 'Vermont'), ('VI', 'Virgin Islands'), ('VA', 'Virginia'), ('WA', 'Washington'), ('WV', 'West Virginia'), ('WI', 'Wisconsin'), ('WY', 'Wyoming')], max_length=2),
),
migrations.AddField(
model_name='user',
name='shipping_street_address_1',
field=models.CharField(blank=True, max_length=256),
),
migrations.AddField(
model_name='user',
name='shipping_street_address_2',
field=models.CharField(blank=True, max_length=256),
),
]

View File

@ -0,0 +1,27 @@
# Generated by Django 4.1.6 on 2023-07-15 02:56
from django.db import migrations
def copy_default_address_to_user(apps, schema_editor):
User = apps.get_model("accounts", "User")
for user in User.objects.all():
if user.default_shipping_address:
user.shipping_street_address_1 = user.default_shipping_address.street_address_1
user.shipping_street_address_2 = user.default_shipping_address.street_address_2
user.shipping_city = user.default_shipping_address.city
user.shipping_state = user.default_shipping_address.state
user.shipping_postal_code = user.default_shipping_address.postal_code
user.save()
class Migration(migrations.Migration):
dependencies = [
('accounts', '0003_user_shipping_city_user_shipping_postal_code_and_more'),
]
operations = [
migrations.RunPython(copy_default_address_to_user)
]

View File

@ -76,6 +76,17 @@ class User(AbstractUser):
) )
stripe_id = models.CharField(max_length=255, blank=True) stripe_id = models.CharField(max_length=255, blank=True)
# Shipping address
shipping_street_address_1 = models.CharField(max_length=256, blank=True)
shipping_street_address_2 = models.CharField(max_length=256, blank=True)
shipping_city = models.CharField(max_length=256, blank=True)
shipping_state = models.CharField(
max_length=2,
choices=USPS_CHOICES,
blank=True
)
shipping_postal_code = models.CharField(max_length=20, blank=True)
def get_or_create_stripe_id(self): def get_or_create_stripe_id(self):
if not self.stripe_id: if not self.stripe_id:
response = stripe.Customer.create( response = stripe.Customer.create(

View File

@ -0,0 +1,63 @@
# Generated by Django 4.1.6 on 2023-07-15 02:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0003_rename_max_order_per_customer_productvariant_order_limit'),
]
operations = [
migrations.AddField(
model_name='order',
name='shipping_city',
field=models.CharField(blank=True, max_length=256),
),
migrations.AddField(
model_name='order',
name='shipping_postal_code',
field=models.CharField(blank=True, max_length=20),
),
migrations.AddField(
model_name='order',
name='shipping_state',
field=models.CharField(blank=True, choices=[('AL', 'Alabama'), ('AK', 'Alaska'), ('AS', 'American Samoa'), ('AZ', 'Arizona'), ('AR', 'Arkansas'), ('AA', 'Armed Forces Americas'), ('AE', 'Armed Forces Europe'), ('AP', 'Armed Forces Pacific'), ('CA', 'California'), ('CO', 'Colorado'), ('CT', 'Connecticut'), ('DE', 'Delaware'), ('DC', 'District of Columbia'), ('FM', 'Federated States of Micronesia'), ('FL', 'Florida'), ('GA', 'Georgia'), ('GU', 'Guam'), ('HI', 'Hawaii'), ('ID', 'Idaho'), ('IL', 'Illinois'), ('IN', 'Indiana'), ('IA', 'Iowa'), ('KS', 'Kansas'), ('KY', 'Kentucky'), ('LA', 'Louisiana'), ('ME', 'Maine'), ('MH', 'Marshall Islands'), ('MD', 'Maryland'), ('MA', 'Massachusetts'), ('MI', 'Michigan'), ('MN', 'Minnesota'), ('MS', 'Mississippi'), ('MO', 'Missouri'), ('MT', 'Montana'), ('NE', 'Nebraska'), ('NV', 'Nevada'), ('NH', 'New Hampshire'), ('NJ', 'New Jersey'), ('NM', 'New Mexico'), ('NY', 'New York'), ('NC', 'North Carolina'), ('ND', 'North Dakota'), ('MP', 'Northern Mariana Islands'), ('OH', 'Ohio'), ('OK', 'Oklahoma'), ('OR', 'Oregon'), ('PW', 'Palau'), ('PA', 'Pennsylvania'), ('PR', 'Puerto Rico'), ('RI', 'Rhode Island'), ('SC', 'South Carolina'), ('SD', 'South Dakota'), ('TN', 'Tennessee'), ('TX', 'Texas'), ('UT', 'Utah'), ('VT', 'Vermont'), ('VI', 'Virgin Islands'), ('VA', 'Virginia'), ('WA', 'Washington'), ('WV', 'West Virginia'), ('WI', 'Wisconsin'), ('WY', 'Wyoming')], max_length=2),
),
migrations.AddField(
model_name='order',
name='shipping_street_address_1',
field=models.CharField(blank=True, max_length=256),
),
migrations.AddField(
model_name='order',
name='shipping_street_address_2',
field=models.CharField(blank=True, max_length=256),
),
migrations.AddField(
model_name='subscription',
name='shipping_city',
field=models.CharField(blank=True, max_length=256),
),
migrations.AddField(
model_name='subscription',
name='shipping_postal_code',
field=models.CharField(blank=True, max_length=20),
),
migrations.AddField(
model_name='subscription',
name='shipping_state',
field=models.CharField(blank=True, choices=[('AL', 'Alabama'), ('AK', 'Alaska'), ('AS', 'American Samoa'), ('AZ', 'Arizona'), ('AR', 'Arkansas'), ('AA', 'Armed Forces Americas'), ('AE', 'Armed Forces Europe'), ('AP', 'Armed Forces Pacific'), ('CA', 'California'), ('CO', 'Colorado'), ('CT', 'Connecticut'), ('DE', 'Delaware'), ('DC', 'District of Columbia'), ('FM', 'Federated States of Micronesia'), ('FL', 'Florida'), ('GA', 'Georgia'), ('GU', 'Guam'), ('HI', 'Hawaii'), ('ID', 'Idaho'), ('IL', 'Illinois'), ('IN', 'Indiana'), ('IA', 'Iowa'), ('KS', 'Kansas'), ('KY', 'Kentucky'), ('LA', 'Louisiana'), ('ME', 'Maine'), ('MH', 'Marshall Islands'), ('MD', 'Maryland'), ('MA', 'Massachusetts'), ('MI', 'Michigan'), ('MN', 'Minnesota'), ('MS', 'Mississippi'), ('MO', 'Missouri'), ('MT', 'Montana'), ('NE', 'Nebraska'), ('NV', 'Nevada'), ('NH', 'New Hampshire'), ('NJ', 'New Jersey'), ('NM', 'New Mexico'), ('NY', 'New York'), ('NC', 'North Carolina'), ('ND', 'North Dakota'), ('MP', 'Northern Mariana Islands'), ('OH', 'Ohio'), ('OK', 'Oklahoma'), ('OR', 'Oregon'), ('PW', 'Palau'), ('PA', 'Pennsylvania'), ('PR', 'Puerto Rico'), ('RI', 'Rhode Island'), ('SC', 'South Carolina'), ('SD', 'South Dakota'), ('TN', 'Tennessee'), ('TX', 'Texas'), ('UT', 'Utah'), ('VT', 'Vermont'), ('VI', 'Virgin Islands'), ('VA', 'Virginia'), ('WA', 'Washington'), ('WV', 'West Virginia'), ('WI', 'Wisconsin'), ('WY', 'Wyoming')], max_length=2),
),
migrations.AddField(
model_name='subscription',
name='shipping_street_address_1',
field=models.CharField(blank=True, max_length=256),
),
migrations.AddField(
model_name='subscription',
name='shipping_street_address_2',
field=models.CharField(blank=True, max_length=256),
),
]

View File

@ -0,0 +1,41 @@
# Generated by Django 4.1.6 on 2023-07-15 02:59
from django.db import migrations
def copy_address_to_order(apps, schema_editor):
Order = apps.get_model("core", "Order")
for order in Order.objects.all():
if order.shipping_address:
order.shipping_street_address_1 = order.shipping_address.street_address_1
order.shipping_street_address_2 = order.shipping_address.street_address_2
order.shipping_city = order.shipping_address.city
order.shipping_state = order.shipping_address.state
order.shipping_postal_code = order.shipping_address.postal_code
order.save()
def copy_address_to_subscription(apps, schema_editor):
Subscription = apps.get_model("core", "Subscription")
for subscription in Subscription.objects.all():
if subscription.shipping_address:
subscription.shipping_street_address_1 = subscription.shipping_address.street_address_1
subscription.shipping_street_address_2 = subscription.shipping_address.street_address_2
subscription.shipping_city = subscription.shipping_address.city
subscription.shipping_state = subscription.shipping_address.state
subscription.shipping_postal_code = subscription.shipping_address.postal_code
subscription.save()
class Migration(migrations.Migration):
dependencies = [
('core', '0004_order_shipping_city_order_shipping_postal_code_and_more'),
]
operations = [
migrations.RunPython(copy_address_to_order),
migrations.RunPython(copy_address_to_subscription)
]

View File

@ -16,6 +16,7 @@ from django.contrib.postgres.fields import ArrayField, HStoreField
from django.forms.models import model_to_dict from django.forms.models import model_to_dict
from django_measurement.models import MeasurementField from django_measurement.models import MeasurementField
from localflavor.us.us_states import USPS_CHOICES
from accounts.models import User, Address from accounts.models import User, Address
@ -344,6 +345,16 @@ class Order(models.Model):
null=True, null=True,
on_delete=models.SET_NULL on_delete=models.SET_NULL
) )
# Shipping address
shipping_street_address_1 = models.CharField(max_length=256, blank=True)
shipping_street_address_2 = models.CharField(max_length=256, blank=True)
shipping_city = models.CharField(max_length=256, blank=True)
shipping_state = models.CharField(
max_length=2,
choices=USPS_CHOICES,
blank=True
)
shipping_postal_code = models.CharField(max_length=20, blank=True)
shipping_address = models.ForeignKey( shipping_address = models.ForeignKey(
Address, Address,
related_name="+", related_name="+",
@ -544,6 +555,16 @@ class Subscription(models.Model):
on_delete=models.SET_NULL, on_delete=models.SET_NULL,
null=True null=True
) )
# Shipping address
shipping_street_address_1 = models.CharField(max_length=256, blank=True)
shipping_street_address_2 = models.CharField(max_length=256, blank=True)
shipping_city = models.CharField(max_length=256, blank=True)
shipping_state = models.CharField(
max_length=2,
choices=USPS_CHOICES,
blank=True
)
shipping_postal_code = models.CharField(max_length=20, blank=True)
shipping_address = models.ForeignKey( shipping_address = models.ForeignKey(
Address, Address,
related_name='+', related_name='+',

View File

@ -25,7 +25,7 @@ services:
- redis - redis
web: web:
build: . build: .
command: sh -c "python manage.py migrate && python manage.py collectstatic --no-input && gunicorn --bind :8000 --reload ptcoffee.wsgi:application" command: gunicorn --bind :8000 --reload ptcoffee.wsgi:application
volumes: volumes:
- .:/app - .:/app
- ./static/:/var/www/static - ./static/:/var/www/static