auth-service / app /utils /merchant_utils.py
Prabha-AIMLOPS's picture
Upload 24 files
2cd3d4e verified
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}"