Users & Currencies
Methods for querying user and currency data from your DealCloud site.
get_users()
Returns all users in the site:
from dealcloud_sdk import DealCloud, DealCloudConfig
config = DealCloudConfig(
siteUrl="yoursite.dealcloud.com",
clientId=12345,
clientSecret="your-secret",
)
dc = DealCloud.from_config_object(config)
users = dc.get_users()
for user in users:
print(f"{user.name} ({user.email})")Active Users Only
# Only active users
active_users = dc.get_users(active_only=True)
print(f"Active users: {len(active_users)}")User Properties
| Property | Type | Description |
|---|---|---|
id | int | Unique user ID |
name | str | Display name |
email | str | Email address |
isActive | bool | Is user active |
firstName | str | First name |
lastName | str | Last name |
User Lookup Helpers
By Email
def get_user_by_email(dc, email: str):
"""Find user by email address."""
users = dc.get_users()
return next((u for u in users if u.email.lower() == email.lower()), None)
user = get_user_by_email(dc, "john.smith@company.com")
if user:
print(f"Found: {user.name} (ID: {user.id})")User map (email → ID)
The SDK exposes get_user_map(active_only=False), which returns dict[str, int] (email → user id). Prefer it over reimplementing:
user_map = dc.get_user_map(active_only=True)
user_id = user_map.get("john.smith@company.com")
if user_id:
dc.insert_data("Deal", [{"DealName": "New Deal", "AssignedTo": user_id}])For resolving a single user by email with the User Management API (different response shape), see User Management and get_user_by_email.
User ID → Name Map
def get_user_name_map(dc):
"""Build user ID → name mapping."""
users = dc.get_users()
return {u.id: u.name for u in users}
name_map = get_user_name_map(dc)
# Resolve user names in data
deals = dc.read_data("Deal", output="list", reference_format=ReferenceFormat.ID)
for deal in deals:
user_id = deal.get("AssignedTo")
if user_id:
print(f"Deal assigned to: {name_map.get(user_id, 'Unknown')}")get_currencies()
Returns currency codes enabled in the site:
currencies = dc.get_currencies()
print("Enabled currencies:")
for currency in currencies:
print(f" {currency}")Output
Enabled currencies:
USD
EUR
GBP
JPY
...Check Currency Support
currencies = dc.get_currencies()
def validate_currency(code: str) -> bool:
return code.upper() in currencies
if validate_currency("USD"):
print("USD is supported")Common Patterns
User Search
def search_users(dc, query: str):
"""Search users by name or email."""
users = dc.get_users(active_only=True)
query = query.lower()
return [
u for u in users
if query in u.name.lower() or query in u.email.lower()
]
results = search_users(dc, "smith")
for user in results:
print(f"{user.name}: {user.email}")Export User List
import pandas as pd
def export_users(dc, filepath: str):
"""Export user list to Excel."""
users = dc.get_users()
df = pd.DataFrame([
{
"ID": u.id,
"Name": u.name,
"Email": u.email,
"Active": u.isActive,
"First Name": u.firstName,
"Last Name": u.lastName
}
for u in users
])
df.to_excel(filepath, index=False)
export_users(dc, "dealcloud_users.xlsx")User Statistics
def user_stats(dc):
"""Get user statistics."""
users = dc.get_users()
total = len(users)
active = sum(1 for u in users if u.isActive)
inactive = total - active
# Domain breakdown
domains = {}
for u in users:
domain = u.email.split("@")[-1].lower()
domains[domain] = domains.get(domain, 0) + 1
print(f"Total users: {total}")
print(f"Active: {active}, Inactive: {inactive}")
print("\nBy domain:")
for domain, count in sorted(domains.items(), key=lambda x: -x[1])[:10]:
print(f" {domain}: {count}")
user_stats(dc)Working with User Fields
Writing User References
# Get user ID
users = dc.get_users()
john = next(u for u in users if "john" in u.name.lower())
# Use in insert/update
dc.insert_data("Deal", [
{
"DealName": "New Deal",
"AssignedTo": john.id,
"Team": [john.id, 5678, 9012] # Multi-select user field
}
])Using Lookup Values
# Use email instead of ID
dc.insert_data(
"Deal",
[{"DealName": "New Deal", "AssignedTo": "john@company.com"}],
use_dealcloud_ids=False
)Caching Users
For frequent user lookups, cache the data:
class UserCache:
def __init__(self, dc):
self._users = None
self._dc = dc
@property
def users(self):
if self._users is None:
self._users = self._dc.get_users()
return self._users
def get_by_email(self, email):
return next((u for u in self.users if u.email.lower() == email.lower()), None)
def get_by_id(self, user_id):
return next((u for u in self.users if u.id == user_id), None)
def refresh(self):
self._users = None
# Usage
cache = UserCache(dc)
user = cache.get_by_email("john@company.com")Related
- User Management - Full user CRUD operations
- Data Write - Using user IDs in data
- Reference Fields - Resolving user references