From 2b3bbdf3a52ba6773fedc200c2f6f6c387ff806e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=9D=D0=B0=D0=B4=D0=B5?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Thu, 18 Dec 2025 15:36:50 +0300 Subject: [PATCH] fix(api): convert PhoneNumber to string in Excel export MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Проблема: ValueError при экспорте - PhoneNumber объект нельзя напрямую записать в Excel ячейку. Ошибка: Cannot convert PhoneNumber(country_code=7, national_number=...) to Excel Решение: - Добавлено форматирование PhoneNumber в международный формат (+7 928 826-66-50) - Использован phonenumbers.format_number() с INTERNATIONAL форматом - Добавлен fallback на str() в случае ошибки форматирования Теперь телефоны корректно экспортируются в читаемом виде. --- backend/api/v1/employees/views.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/backend/api/v1/employees/views.py b/backend/api/v1/employees/views.py index c7af51c4..7484bf72 100644 --- a/backend/api/v1/employees/views.py +++ b/backend/api/v1/employees/views.py @@ -2073,6 +2073,15 @@ class EmployeeViewSet(viewsets.ModelViewSet): # Получаем навыки skills = ", ".join([s.name for s in emp.skills.all()]) + # Форматируем телефон (PhoneNumber -> строка) + phone_str = '' + if emp.phone_number: + try: + from phonenumbers import format_number, PhoneNumberFormat + phone_str = format_number(emp.phone_number, PhoneNumberFormat.INTERNATIONAL) + except: + phone_str = str(emp.phone_number) + # Данные строки row_data = [ emp.id, @@ -2080,7 +2089,7 @@ class EmployeeViewSet(viewsets.ModelViewSet): emp.first_name or '', emp.patronymic or '', emp.email or '', - str(emp.phone_number) if emp.phone_number else '', + phone_str, emp.position.name if emp.position else '', dept_names, emp.birth_date.strftime('%d.%m.%Y') if emp.birth_date else '',