Features: 1) Add address_line field to Address model for enhanced customer address representation; 2) Extend serializers with address_line_1 and address_line_2 fields; 3) Update address parsing logic to include house number in street and support address_line storage;
Fixes: None; Extra: Refactor address manager to construct `address_line` from parsed data;
This commit is contained in:
parent
09213dd616
commit
79c97b7e5a
4 changed files with 36 additions and 1 deletions
|
|
@ -31,7 +31,7 @@ class AddressManager(models.Manager):
|
||||||
|
|
||||||
# Parse address components
|
# Parse address components
|
||||||
addr = data.get("address", {})
|
addr = data.get("address", {})
|
||||||
street = addr.get("road") or addr.get("pedestrian") or ""
|
street = f"{addr.get('road', '') or addr.get('pedestrian', '')}, {addr.get('house_number', '')}"
|
||||||
district = addr.get("city_district") or addr.get("suburb") or ""
|
district = addr.get("city_district") or addr.get("suburb") or ""
|
||||||
city = addr.get("city") or addr.get("town") or addr.get("village") or ""
|
city = addr.get("city") or addr.get("town") or addr.get("village") or ""
|
||||||
region = addr.get("state") or addr.get("region") or ""
|
region = addr.get("state") or addr.get("region") or ""
|
||||||
|
|
@ -49,6 +49,7 @@ class AddressManager(models.Manager):
|
||||||
# Create the model instance, storing both the input string and full API response
|
# Create the model instance, storing both the input string and full API response
|
||||||
return super().create(
|
return super().create(
|
||||||
raw_data=raw_data,
|
raw_data=raw_data,
|
||||||
|
address_line=f"{kwargs.get('address_line_1')}, {kwargs.get('address_line_2')}",
|
||||||
street=street,
|
street=street,
|
||||||
district=district,
|
district=district,
|
||||||
city=city,
|
city=city,
|
||||||
|
|
|
||||||
18
core/migrations/0023_address_address_line.py
Normal file
18
core/migrations/0023_address_address_line.py
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 5.2 on 2025-05-28 19:06
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
('core', '0022_category_slug'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='address',
|
||||||
|
name='address_line',
|
||||||
|
field=models.TextField(blank=True, help_text='address line for the customer', null=True,
|
||||||
|
verbose_name='address line'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -1259,6 +1259,12 @@ class Documentary(NiceModel):
|
||||||
class Address(NiceModel):
|
class Address(NiceModel):
|
||||||
is_publicly_visible = False
|
is_publicly_visible = False
|
||||||
|
|
||||||
|
address_line = TextField( # noqa: DJ001
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
help_text=_("address line for the customer"),
|
||||||
|
verbose_name=_("address line"),
|
||||||
|
)
|
||||||
street = CharField(_("street"), max_length=255, null=True) # noqa: DJ001
|
street = CharField(_("street"), max_length=255, null=True) # noqa: DJ001
|
||||||
district = CharField(_("district"), max_length=255, null=True) # noqa: DJ001
|
district = CharField(_("district"), max_length=255, null=True) # noqa: DJ001
|
||||||
city = CharField(_("city"), max_length=100, null=True) # noqa: DJ001
|
city = CharField(_("city"), max_length=100, null=True) # noqa: DJ001
|
||||||
|
|
|
||||||
|
|
@ -158,6 +158,16 @@ class AddressCreateSerializer(ModelSerializer): # noqa: F405
|
||||||
write_only=True,
|
write_only=True,
|
||||||
max_length=512,
|
max_length=512,
|
||||||
)
|
)
|
||||||
|
address_line_1 = CharField(
|
||||||
|
write_only=True,
|
||||||
|
max_length=128,
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
address_line_2 = CharField(
|
||||||
|
write_only=True,
|
||||||
|
max_length=128,
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Address
|
model = Address
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue