Spaces:
Sleeping
Sleeping
| 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}" | |