User Management
User Management

User Management

Create, update, and manage DealCloud user accounts.

create_user()

Create a new user account:

from dealcloud_sdk import DealCloud, DealCloudConfig
 
config = DealCloudConfig(
    siteUrl="yoursite.dealcloud.com",
    clientId=12345,
    clientSecret="your-secret",
)
dc = DealCloud.from_config_object(config)
 
new_user = dc.create_user(
    email="john.smith@company.com",
    first_name="John",
    last_name="Smith",
    is_active=True
)
 
print(f"Created user: {new_user.get('id')}")

Parameters

ParameterTypeRequiredDescription
emailstrYesEmail address
first_namestrYesFirst name
last_namestrYesLast name
is_activeboolNoAccount active (default: True)
⚠️

Email must be unique. Creating a user with an existing email will fail.

get_user()

Get details for a specific user:

user = dc.get_user(12345)
 
print(user.get("firstName"), user.get("lastName"))
print(user.get("email"))
print(user.get("isActive"))

update_user()

Update user details:

dc.update_user(
    user_id=12345,
    first_name="Jonathan",
    last_name="Smith-Jones"
)

Parameters

ParameterTypeDescription
user_idintUser ID (required)
emailstrNew email
first_namestrNew first name
last_namestrNew last name
is_activeboolActive status
đź’ˇ

Only include parameters you want to change. Others remain unchanged.

deactivate_user()

Deactivate a user account:

dc.deactivate_user(12345)

Deactivated users:

  • Cannot log in
  • Are excluded from user fields (depending on configuration)
  • Data owned by them remains intact

activate_user()

Reactivate a previously deactivated user:

dc.activate_user(12345)

Bulk Operations

Create Multiple Users

def bulk_create_users(dc, users_data: list):
    """Create multiple users from a list."""
    results = []
    
    for user_data in users_data:
        try:
            new_user = dc.create_user(
                email=user_data["email"],
                first_name=user_data["first_name"],
                last_name=user_data["last_name"]
            )
            results.append({"email": user_data["email"], "id": new_user.get("id"), "status": "created"})
        except Exception as e:
            results.append({"email": user_data["email"], "status": "error", "error": str(e)})
    
    return results
 
# From CSV
import pandas as pd
 
df = pd.read_csv("new_users.csv")
users = df.to_dict("records")
results = bulk_create_users(dc, users)

Bulk Deactivate

def deactivate_by_domain(dc, domain: str):
    """Deactivate all users from a specific domain."""
    users = dc.get_all_users()
    
    to_deactivate = [u for u in users if str(u.get("email", "")).endswith(f"@{domain}")]
    
    for user in to_deactivate:
        uid = user.get("id")
        if uid is not None:
            dc.deactivate_user(uid)
            print(f"Deactivated: {user.get('email')}")
    
    return len(to_deactivate)
 
count = deactivate_by_domain(dc, "old-domain.com")
print(f"Deactivated {count} users")

User Validation

def validate_user_data(dc, email: str, first_name: str, last_name: str) -> list:
    """Validate user data before creating."""
    errors = []
    
    # Validate email format
    if "@" not in email:
        errors.append("Invalid email format")
    
    existing = dc.get_all_users()
    if any(str(u.get("email", "")).lower() == email.lower() for u in existing):
        errors.append("Email already exists")
    
    # Validate names
    if not first_name or len(first_name) < 1:
        errors.append("First name required")
    if not last_name or len(last_name) < 1:
        errors.append("Last name required")
    
    return errors
 
# Usage
errors = validate_user_data(dc, "john@company.com", "John", "Smith")
if errors:
    print("Validation errors:", errors)
else:
    dc.create_user(email="john@company.com", first_name="John", last_name="Smith")

Import Users from CSV

import pandas as pd
 
def import_users_from_csv(dc, csv_path: str):
    """
    Import users from CSV file.
    Expected columns: email, first_name, last_name
    """
    df = pd.read_csv(csv_path)
    
    results = {
        "created": [],
        "skipped": [],
        "errors": []
    }
    
    existing_emails = {str(u.get("email", "")).lower() for u in dc.get_all_users()}
    
    for _, row in df.iterrows():
        email = row["email"].lower()
        
        if email in existing_emails:
            results["skipped"].append(email)
            continue
        
        try:
            user = dc.create_user(
                email=email,
                first_name=row["first_name"],
                last_name=row["last_name"]
            )
            results["created"].append(email)
        except Exception as e:
            results["errors"].append({"email": email, "error": str(e)})
    
    return results
 
results = import_users_from_csv(dc, "users_to_import.csv")
print(f"Created: {len(results['created'])}")
print(f"Skipped: {len(results['skipped'])}")
print(f"Errors: {len(results['errors'])}")

Related