feat(connector): [31188f42] Finalize production optimizations, filtering, and dashboard enhancements
This commit is contained in:
66
connector-superoffice/tools/final_vertical_discovery.py
Normal file
66
connector-superoffice/tools/final_vertical_discovery.py
Normal file
@@ -0,0 +1,66 @@
|
||||
import sys
|
||||
import os
|
||||
import json
|
||||
|
||||
# Absolute path to the connector-superoffice directory
|
||||
current_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
connector_dir = os.path.abspath(os.path.join(current_dir, '..'))
|
||||
|
||||
# CRITICAL: Insert at 0 to shadow /app/config.py
|
||||
sys.path.insert(0, connector_dir)
|
||||
|
||||
from superoffice_client import SuperOfficeClient
|
||||
|
||||
def discover_verticals():
|
||||
print("🔎 Starting Final Vertical Discovery (Production)...")
|
||||
client = SuperOfficeClient()
|
||||
if not client.access_token:
|
||||
print("❌ Auth failed.")
|
||||
return
|
||||
|
||||
# 1. Fetch Contact UDF Layout to find the List ID behind SuperOffice:83
|
||||
print("📡 Fetching Contact UDF Layout (Metadata)...")
|
||||
layout = client._get("Contact/UdefLayout/Published")
|
||||
|
||||
list_id = None
|
||||
if layout and 'Fields' in layout:
|
||||
for field in layout['Fields']:
|
||||
if field.get('ProgId') == 'SuperOffice:83':
|
||||
print(f"✅ Found SuperOffice:83: {field.get('Label')}")
|
||||
list_id = field.get('ListId')
|
||||
print(f"✅ List ID: {list_id}")
|
||||
break
|
||||
|
||||
if not list_id:
|
||||
print("❌ Could not find Metadata for SuperOffice:83.")
|
||||
return
|
||||
|
||||
# 2. Fetch the List Items for this List
|
||||
print(f"📡 Fetching List Items for List ID {list_id}...")
|
||||
# List endpoint is typically List/ListId/Items
|
||||
# Let's try to get all rows for this list
|
||||
items = client._get(f"List/{list_id}/Items")
|
||||
|
||||
if items:
|
||||
print(f"✅ SUCCESS! Found {len(items)} items in the Vertical list.")
|
||||
mapping = {}
|
||||
for item in items:
|
||||
name = item.get('Value') or item.get('Name')
|
||||
item_id = item.get('Id')
|
||||
mapping[name] = item_id
|
||||
print(f" - {name}: {item_id}")
|
||||
|
||||
print("\n🚀 FINAL MAPPING JSON (Copy to .env VERTICAL_MAP_JSON):")
|
||||
print(json.dumps(mapping))
|
||||
else:
|
||||
print(f"❌ Could not fetch items for List {list_id}. Trying MDO List...")
|
||||
# Fallback to MDO List
|
||||
mdo_items = client._get(f"MDOList/udlist{list_id}")
|
||||
if mdo_items:
|
||||
print("✅ Success via MDO List.")
|
||||
# ... process mdo items if needed ...
|
||||
else:
|
||||
print("❌ MDO List fallback failed too.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
discover_verticals()
|
||||
Reference in New Issue
Block a user