36 lines
1.0 KiB
Python
36 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
PLACEHOLDER_EMAIL_SUFFIX = "@noemail.local"
|
|
|
|
|
|
def normalize_email_identity(value: str | None) -> str | None:
|
|
if value is None:
|
|
return None
|
|
normalized = value.strip().lower()
|
|
return normalized or None
|
|
|
|
|
|
def normalize_mobile_number(value: str | None) -> str | None:
|
|
if value is None:
|
|
return None
|
|
normalized = "".join(ch for ch in value if ch.isdigit())
|
|
return normalized or None
|
|
|
|
|
|
def is_valid_mobile_number(value: str | None) -> bool:
|
|
normalized = normalize_mobile_number(value)
|
|
return bool(normalized and len(normalized) == 11 and normalized.startswith("09"))
|
|
|
|
|
|
def mask_mobile(value: str | None) -> str | None:
|
|
if not value:
|
|
return None
|
|
if len(value) <= 4:
|
|
return value
|
|
return f"{value[:2]}{'*' * max(len(value) - 6, 1)}{value[-4:]}"
|
|
|
|
|
|
def is_placeholder_email(value: str | None) -> bool:
|
|
normalized = normalize_email_identity(value)
|
|
return bool(normalized and normalized.endswith(PLACEHOLDER_EMAIL_SUFFIX))
|