feat(leads): link consumer account to lead on submission
- user_account FK on Lead model (SET_NULL, related_name='submitted_leads')
- Migration 0004_lead_user_account
- ScheduleCallView auto-matches consumer account by email on create
- _serialize_lead now returns userAccount: {id, name, email, phone, eventifyId, profilePicture}
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2357,6 +2357,25 @@ def _serialize_lead(lead):
|
||||
if lead.assigned_to:
|
||||
assigned_name = lead.assigned_to.get_full_name() or lead.assigned_to.username
|
||||
assigned_id = lead.assigned_to.pk
|
||||
|
||||
user_account = None
|
||||
if lead.user_account:
|
||||
u = lead.user_account
|
||||
profile_pic = None
|
||||
try:
|
||||
if u.profile_picture:
|
||||
profile_pic = u.profile_picture.url
|
||||
except Exception:
|
||||
pass
|
||||
user_account = {
|
||||
'id': u.pk,
|
||||
'name': u.get_full_name() or u.username,
|
||||
'email': u.email,
|
||||
'phone': getattr(u, 'phone_number', None) or '',
|
||||
'eventifyId': getattr(u, 'eventify_id', None),
|
||||
'profilePicture': profile_pic,
|
||||
}
|
||||
|
||||
return {
|
||||
'id': lead.pk,
|
||||
'name': lead.name,
|
||||
@@ -2372,6 +2391,7 @@ def _serialize_lead(lead):
|
||||
'notes': lead.notes,
|
||||
'createdAt': lead.created_at.isoformat(),
|
||||
'updatedAt': lead.updated_at.isoformat(),
|
||||
'userAccount': user_account,
|
||||
}
|
||||
|
||||
|
||||
@@ -2399,7 +2419,7 @@ class LeadListView(APIView):
|
||||
def get(self, request):
|
||||
from admin_api.models import Lead
|
||||
from django.db.models import Q
|
||||
qs = Lead.objects.select_related('assigned_to').order_by('-created_at')
|
||||
qs = Lead.objects.select_related('assigned_to', 'user_account').order_by('-created_at')
|
||||
|
||||
# Filters
|
||||
status_f = request.query_params.get('status', '').strip()
|
||||
@@ -2448,7 +2468,7 @@ class LeadDetailView(APIView):
|
||||
def get(self, request, pk):
|
||||
from admin_api.models import Lead
|
||||
from django.shortcuts import get_object_or_404
|
||||
lead = get_object_or_404(Lead.objects.select_related('assigned_to'), pk=pk)
|
||||
lead = get_object_or_404(Lead.objects.select_related('assigned_to', 'user_account'), pk=pk)
|
||||
return Response(_serialize_lead(lead))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user