diff --git a/accounts/migrations/0003_user_shipping_city_user_shipping_postal_code_and_more.py b/accounts/migrations/0003_user_shipping_city_user_shipping_postal_code_and_more.py new file mode 100644 index 0000000..19f2c8f --- /dev/null +++ b/accounts/migrations/0003_user_shipping_city_user_shipping_postal_code_and_more.py @@ -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), + ), + ] diff --git a/accounts/migrations/0004_transfer_address_data_to_user_model.py b/accounts/migrations/0004_transfer_address_data_to_user_model.py new file mode 100644 index 0000000..3200916 --- /dev/null +++ b/accounts/migrations/0004_transfer_address_data_to_user_model.py @@ -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) + ] diff --git a/accounts/models.py b/accounts/models.py index 63ef944..0911905 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -76,6 +76,17 @@ class User(AbstractUser): ) 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): if not self.stripe_id: response = stripe.Customer.create( diff --git a/core/migrations/0004_order_shipping_city_order_shipping_postal_code_and_more.py b/core/migrations/0004_order_shipping_city_order_shipping_postal_code_and_more.py new file mode 100644 index 0000000..0dd0860 --- /dev/null +++ b/core/migrations/0004_order_shipping_city_order_shipping_postal_code_and_more.py @@ -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), + ), + ] diff --git a/core/migrations/0005_transfer_address_data_to_order_and_subscription_models.py b/core/migrations/0005_transfer_address_data_to_order_and_subscription_models.py new file mode 100644 index 0000000..939b3dd --- /dev/null +++ b/core/migrations/0005_transfer_address_data_to_order_and_subscription_models.py @@ -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) + ] diff --git a/core/models.py b/core/models.py index 7116ea8..ad5c5ae 100644 --- a/core/models.py +++ b/core/models.py @@ -16,6 +16,7 @@ from django.contrib.postgres.fields import ArrayField, HStoreField from django.forms.models import model_to_dict from django_measurement.models import MeasurementField +from localflavor.us.us_states import USPS_CHOICES from accounts.models import User, Address @@ -344,6 +345,16 @@ class Order(models.Model): null=True, 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( Address, related_name="+", @@ -544,6 +555,16 @@ class Subscription(models.Model): on_delete=models.SET_NULL, 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( Address, related_name='+', diff --git a/docker-compose.yml b/docker-compose.yml index d87d188..9544583 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,7 +25,7 @@ services: - redis web: 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: - .:/app - ./static/:/var/www/static