fix customer view and edit

This commit is contained in:
javad committed 2026-09-29 10:30:54 +03:30
1 parent 81335b1439
commit d5c22a39dc
13 files changed
+329 -81

No files matched your search

@@ -0,0 +1,33 @@
# Generated by Django 5.1.1 on 2026-09-29 06:14
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('customers', '0004_contactgroup_unit_customerprofile_groups_and_more'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='ContactEditLog',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('contact_public_id', models.UUIDField(db_index=True)),
('actor_name', models.CharField(max_length=150)),
('changes', models.JSONField()),
('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
('actor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='contact_edits', to=settings.AUTH_USER_MODEL)),
('contact', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='edit_logs', to='customers.customerprofile')),
],
options={
'verbose_name': 'سابقه ویرایش مخاطب',
'verbose_name_plural': 'سوابق ویرایش مخاطبان',
'ordering': ['-created_at', '-pk'],
},
),
]
@@ -0,0 +1,25 @@
from django.db import migrations
def backfill_customer_profiles(apps, schema_editor):
User = apps.get_model("accounts", "User")
CustomerProfile = apps.get_model("customers", "CustomerProfile")
database = schema_editor.connection.alias
missing_users = (
User.objects.using(database)
.filter(account_type="CUSTOMER", customer_profile__isnull=True)
.values("pk", "first_name", "last_name")
)
batch = []
for user in missing_users.iterator(chunk_size=500):
batch.append(CustomerProfile(user_id=user["pk"], first_name=user["first_name"][:100], last_name=user["last_name"][:100]))
if len(batch) == 500:
CustomerProfile.objects.using(database).bulk_create(batch, ignore_conflicts=True, batch_size=500)
batch.clear()
if batch:
CustomerProfile.objects.using(database).bulk_create(batch, ignore_conflicts=True, batch_size=500)
class Migration(migrations.Migration):
dependencies = [("customers", "0005_contacteditlog")]
operations = [migrations.RunPython(backfill_customer_profiles, migrations.RunPython.noop)]