Accept contact.phone in the fundraising contact upsert (server half of card phone)
_upsert_contact_from_fundraising now reads contact.phone and writes contacts.phone on both the insert and update paths, so a phone captured from a business card persists on the canonical contact record. Phone stays contact-level (not a grid pill field), matching how the team edits it. Validated by test_grid_add_investor.py. This is the SERVER half of business-card phone capture, staged for the next s9pk (version bump + build + install). The bot's phone extraction/card/payload lands in the same deploy, so phone never shows on a card before the box can store it. NOT yet built or installed to the box.
This commit is contained in:
+7
-4
@@ -825,6 +825,7 @@ def _upsert_contact_from_fundraising(conn, investor_name, contact, actor_user_id
|
||||
country = str(contact.get('country') or '').strip()
|
||||
location_query = str(contact.get('location_query') or '').strip()
|
||||
linkedin_url = str(contact.get('linkedin_url') or '').strip()
|
||||
phone = str(contact.get('phone') or '').strip()
|
||||
if not full_name and not email:
|
||||
return None
|
||||
first_name, last_name = _split_full_name(full_name)
|
||||
@@ -869,20 +870,21 @@ def _upsert_contact_from_fundraising(conn, investor_name, contact, actor_user_id
|
||||
next_country = country or str(existing['country'] or '')
|
||||
next_location_query = location_query or str(existing['location_query'] or '')
|
||||
next_linkedin = linkedin_url or str(existing['linkedin_url'] or '')
|
||||
next_phone = phone or str(existing['phone'] or '')
|
||||
next_org = org_id or existing['organization_id']
|
||||
conn.execute("""
|
||||
UPDATE contacts
|
||||
SET first_name = ?, last_name = ?, email = ?, title = ?,
|
||||
organization_id = ?, source = ?, contact_type = 'investor', city = ?, state = ?, country = ?, location_query = ?, linkedin_url = ?, updated_at = ?
|
||||
organization_id = ?, source = ?, contact_type = 'investor', city = ?, state = ?, country = ?, location_query = ?, linkedin_url = ?, phone = ?, updated_at = ?
|
||||
WHERE id = ?
|
||||
""", (next_first, next_last, next_email, next_title, next_org, next_source, next_city, next_state, next_country, next_location_query, next_linkedin, now(), existing['id']))
|
||||
""", (next_first, next_last, next_email, next_title, next_org, next_source, next_city, next_state, next_country, next_location_query, next_linkedin, next_phone, now(), existing['id']))
|
||||
return existing['id']
|
||||
|
||||
contact_id = generate_id()
|
||||
conn.execute("""
|
||||
INSERT INTO contacts (
|
||||
id, first_name, last_name, email, title, organization_id, source, contact_type, status, city, state, country, location_query, linkedin_url, created_by, updated_at
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, 'investor', 'active', ?, ?, ?, ?, ?, ?, ?)
|
||||
id, first_name, last_name, email, title, organization_id, source, contact_type, status, city, state, country, location_query, linkedin_url, phone, created_by, updated_at
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, 'investor', 'active', ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
""", (
|
||||
contact_id,
|
||||
first_name or 'Unknown',
|
||||
@@ -896,6 +898,7 @@ def _upsert_contact_from_fundraising(conn, investor_name, contact, actor_user_id
|
||||
country,
|
||||
location_query,
|
||||
linkedin_url,
|
||||
phone,
|
||||
actor_user_id,
|
||||
now()
|
||||
))
|
||||
|
||||
Reference in New Issue
Block a user