Unification polish: LinkedIn in the grid inline contact editor (v0.1.0:54)
The fundraising grid's per-contact editor now has a LinkedIn URL field next to name, email, title, and location. It threads through the grid contact object and sanitize (which preserves contact-object fields), and _upsert_contact_from_fundraising now reads and persists linkedin_url on both the update and insert paths — so a LinkedIn entered in the grid lands on the linked contact record. Test: test_grid_contact_link.py extended to assert LinkedIn entered in the grid persists to the contact (idempotent). Frontend html.parser clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -44,7 +44,8 @@ def main():
|
||||
],
|
||||
"rows": [
|
||||
{"id": "row-test-1", "investor_name": "Testco Capital",
|
||||
"contacts": [{"name": "Jane Doe", "email": "jane@testco.com", "title": "Partner"}]},
|
||||
"contacts": [{"name": "Jane Doe", "email": "jane@testco.com", "title": "Partner",
|
||||
"linkedin_url": "https://linkedin.com/in/janedoe"}]},
|
||||
],
|
||||
}
|
||||
server.sync_fundraising_relational(conn, server.sanitize_fundraising_grid(grid), [])
|
||||
@@ -54,9 +55,11 @@ def main():
|
||||
check(bool(fc and fc["contact_id"]), f"grid contact_id populated by sync (got {dict(fc) if fc else None})")
|
||||
|
||||
if fc and fc["contact_id"]:
|
||||
ct = conn.execute("SELECT id, email FROM contacts WHERE id=?", (fc["contact_id"],)).fetchone()
|
||||
ct = conn.execute("SELECT id, email, linkedin_url FROM contacts WHERE id=?", (fc["contact_id"],)).fetchone()
|
||||
check(bool(ct and ct["email"] == "jane@testco.com"),
|
||||
f"link points to the correct contacts row (got {dict(ct) if ct else None})")
|
||||
check(bool(ct and ct["linkedin_url"] == "https://linkedin.com/in/janedoe"),
|
||||
f"LinkedIn entered in the grid persists to the contact (got {ct['linkedin_url'] if ct else None})")
|
||||
|
||||
# Re-sync is idempotent: still exactly one linked contact for Jane.
|
||||
server.sync_fundraising_relational(conn, server.sanitize_fundraising_grid(grid), [])
|
||||
|
||||
Reference in New Issue
Block a user