hiring: логин в формате <буква имени>.<фамилия>
Иван Иванов -> i.ivanov (транслит pytils, нижний регистр, коллизия +счётчик).
Раньше slugify('Фамилия.Имя') терял точку и давал ivanovivan. Единый формат
в найме (_generate_username) и в импорте (transliterate_username).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -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():
|
||||
|
||||
+10
-1
@@ -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():
|
||||
|
||||
Reference in New Issue
Block a user