diff --git a/apps/employees/management/commands/import_employees_json.py b/apps/employees/management/commands/import_employees_json.py index 3d6f45e..2a5e4fa 100644 --- a/apps/employees/management/commands/import_employees_json.py +++ b/apps/employees/management/commands/import_employees_json.py @@ -58,7 +58,9 @@ DEPT_73_NAME_TO_CODE = { def transliterate_username(last_name, first_name, taken): from pytils.translit import slugify - base = slugify(f'{last_name}.{first_name}') or 'user' + # Формат: <первая буква имени>.<фамилия> (Иван Иванов -> i.ivanov). + ln, fn = slugify(last_name), slugify(first_name) + base = f'{fn[:1]}.{ln}'.strip('.') or 'user' username = base counter = 1 while username in taken or Employee.objects.filter(username=username).exists(): diff --git a/apps/hiring/services.py b/apps/hiring/services.py index 57469c9..82451a0 100644 --- a/apps/hiring/services.py +++ b/apps/hiring/services.py @@ -11,8 +11,17 @@ from apps.employees.models.base import Employee from apps.hiring.models import HiringRequest, InternAccount +def _username_base(last_name, first_name): + """Формат логина: <первая буква имени>.<фамилия>, транслит, нижний регистр. + Иван Иванов -> i.ivanov.""" + ln = slugify(last_name) + fn = slugify(first_name) + initial = fn[:1] + return f'{initial}.{ln}'.strip('.') or 'user' + + def _generate_username(last_name, first_name): - base = slugify(f'{last_name}.{first_name}') or 'user' + base = _username_base(last_name, first_name) username = base counter = 1 while Employee.objects.filter(username=username).exists():