File size: 1,114 Bytes
2cd3d4e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import hashlib
from nanoid import generate
import re
 
def slugify_company_name(name, max_length=6):
    slug = re.sub(r'[^A-Z0-9]', '', name.upper())
    return slug[:max_length]
 
def short_hash(text, length=4):
    return hashlib.sha1(text.encode()).hexdigest().upper()[:length]
 
def alphanumeric_to_digits(text):
    result = ''
    for c in text.upper():
        if c.isdigit():
            result += c
        elif c.isalpha():
            result += str(ord(c) - 55)  # A=10, B=11, ..., Z=35
    return result
 
def compute_check_digit(base_id):
    numeric_string = alphanumeric_to_digits(base_id)
    total = sum(int(digit) for digit in numeric_string)
    return str(total % 10)
 
def generate_tenant_id(company_name,country, city, area):
    short_name = country + "-" + slugify_company_name(company_name, 5) + "-" + slugify_company_name(city,3) +  slugify_company_name(area,3)
    hash_part = short_hash(short_name)
    nanoid_part = generate('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', 5)
    base_id = f"{short_name}-{hash_part}-{nanoid_part}"
    return f"{base_id}"