File size: 818 Bytes
471367a
e9edbe4
471367a
 
e9edbe4
 
471367a
 
e9edbe4
 
 
471367a
 
6b2320f
 
 
 
4fc33aa
3c35ae2
 
4fc33aa
 
3c35ae2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def flatten_update_data(data: dict, parent_key="") -> dict:
    """Convert nested dict to MongoDB dot notation, skipping None values."""
    items = {}
    for k, v in data.items():
        if v is None:
            continue
        new_key = f"{parent_key}.{k}" if parent_key else k
        if isinstance(v, dict):
            nested = flatten_update_data(v, new_key)
            if nested:  # only add if nested dict had non-None values
                items.update(nested)
        else:
            items[new_key] = v
    return items


def generate_default_password() -> str:
    """
    Generate a 6-digit numeric PIN for new employees/merchants.
    Numeric-only so it works with Fast2SMS OTP route (variables_values).
    """
    import secrets
    return ''.join([str(secrets.randbelow(10)) for _ in range(6)])