- Lead model in admin_api with status/priority/source/assigned_to fields - Admin API: metrics, list, detail, update views at /api/v1/leads/ - Consumer API: public ScheduleCallView at /api/leads/schedule-call/ - RBAC: 'leads' module registered in ALL_MODULES and StaffProfile scopes - Migration 0003_lead with indexes on status, priority, created_at, email Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
54 lines
2.6 KiB
Python
54 lines
2.6 KiB
Python
# Generated by Django 4.2.21 on 2026-04-07
|
|
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
import django.db.models.deletion
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
('admin_api', '0002_rbac_models'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='Lead',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('name', models.CharField(max_length=200)),
|
|
('email', models.EmailField(max_length=254)),
|
|
('phone', models.CharField(max_length=20)),
|
|
('event_type', models.CharField(choices=[('private', 'Private Event'), ('ticketed', 'Ticketed Event'), ('corporate', 'Corporate Event'), ('wedding', 'Wedding'), ('other', 'Other')], default='private', max_length=20)),
|
|
('message', models.TextField(blank=True, default='')),
|
|
('status', models.CharField(choices=[('new', 'New'), ('contacted', 'Contacted'), ('qualified', 'Qualified'), ('converted', 'Converted'), ('closed', 'Closed')], default='new', max_length=20)),
|
|
('source', models.CharField(choices=[('schedule_call', 'Schedule a Call'), ('website', 'Website'), ('manual', 'Manual')], default='schedule_call', max_length=20)),
|
|
('priority', models.CharField(choices=[('low', 'Low'), ('medium', 'Medium'), ('high', 'High')], default='medium', max_length=10)),
|
|
('assigned_to', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='assigned_leads', to=settings.AUTH_USER_MODEL)),
|
|
('notes', models.TextField(blank=True, default='')),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
],
|
|
options={
|
|
'ordering': ['-created_at'],
|
|
},
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='lead',
|
|
index=models.Index(fields=['status'], name='admin_api_lead_status_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='lead',
|
|
index=models.Index(fields=['priority'], name='admin_api_lead_priority_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='lead',
|
|
index=models.Index(fields=['created_at'], name='admin_api_lead_created_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='lead',
|
|
index=models.Index(fields=['email'], name='admin_api_lead_email_idx'),
|
|
),
|
|
]
|