# Generated by Django 5.1.15 on 2026-09-02 00:19 import django.db.models.deletion from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Contact', fields=[ ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), ('name', models.CharField(max_length=150, verbose_name='نام')), ('phone', models.CharField(max_length=20, verbose_name='شماره موبایل')), ('device_contact_id', models.CharField(blank=True, max_length=100, null=True)), ('field_values', models.JSONField(blank=True, default=dict, verbose_name='مقادیر فیلدهای دلخواه')), ('channel_ids', models.JSONField(blank=True, default=dict, verbose_name='شناسه\u200cی کانال\u200cها')), ('updated_at', models.DateTimeField(auto_now=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contacts', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'مخاطب', 'verbose_name_plural': 'مخاطبین', 'ordering': ['name'], }, ), migrations.CreateModel( name='ContactGroup', fields=[ ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), ('name', models.CharField(max_length=150, verbose_name='نام گروه')), ('color', models.BigIntegerField(verbose_name='رنگ (ARGB)')), ('is_general', models.BooleanField(default=False, help_text='گروه پیش\u200cفرض بدون فیلد سفارشی؛ هر کاربر دقیقاً یکی از این\u200cها دارد.', verbose_name='گروه عمومی')), ('member_ids', models.JSONField(blank=True, default=list, verbose_name='اعضا')), ('updated_at', models.DateTimeField(auto_now=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contact_groups', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'گروه', 'verbose_name_plural': 'گروه\u200cها', 'ordering': ['-updated_at'], }, ), migrations.CreateModel( name='ContactField', fields=[ ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), ('label', models.CharField(max_length=100, verbose_name='عنوان فیلد')), ('sort_order', models.PositiveIntegerField(default=0)), ('updated_at', models.DateTimeField(auto_now=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contact_fields', to=settings.AUTH_USER_MODEL)), ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields', to='banker.contactgroup')), ], options={ 'verbose_name': 'فیلد دلخواه مخاطب', 'verbose_name_plural': 'فیلدهای دلخواه مخاطبین', 'ordering': ['group', 'sort_order'], }, ), migrations.CreateModel( name='MessageTemplate', fields=[ ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), ('name', models.CharField(max_length=150, verbose_name='نام قالب')), ('body', models.TextField(verbose_name='متن قالب')), ('mode', models.CharField(choices=[('merge', 'قالب\u200cبندی'), ('quick', 'تمپلیت آماده')], max_length=10)), ('updated_at', models.DateTimeField(auto_now=True)), ('group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='templates', to='banker.contactgroup')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='templates', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'قالب پیام', 'verbose_name_plural': 'قالب\u200cهای پیام', 'ordering': ['-updated_at'], }, ), migrations.CreateModel( name='StructuredTemplate', fields=[ ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), ('name', models.CharField(max_length=150, verbose_name='نام قالب')), ('updated_at', models.DateTimeField(auto_now=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='structured_templates', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'قالب کلید-مقدار', 'verbose_name_plural': 'قالب\u200cهای کلید-مقدار', 'ordering': ['-updated_at'], }, ), migrations.CreateModel( name='StructuredTemplateField', fields=[ ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), ('label', models.CharField(max_length=100, verbose_name='عنوان')), ('sort_order', models.PositiveIntegerField(default=0)), ('template', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields', to='banker.structuredtemplate')), ], options={ 'verbose_name': 'فیلد قالب کلید-مقدار', 'verbose_name_plural': 'فیلدهای قالب کلید-مقدار', 'ordering': ['template', 'sort_order'], }, ), migrations.AddConstraint( model_name='contactgroup', constraint=models.UniqueConstraint(condition=models.Q(('is_general', True)), fields=('user',), name='one_general_group_per_user'), ), ]