Files
ACORE/apps/employees/serializers.py
T
lokses 6ff01c4119 Доменные модули: сотрудники, локации, найм, счётчики, посещения
- employees: last_seen, internal_number, default_page_size; управление-команды
- locations: категория/куратор/ответственный аптеки, seed должностей;
  Location.__str__ показывает номер аптеки (не только адрес)
- hiring: HiringRequest (заявки на найм) + тесты (7)
- utilities: UtilityReading (показания счётчиков по аптекам)
- visit_manager: правки

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 17:33:16 +03:00

32 lines
1.3 KiB
Python

from rest_framework import serializers
from apps.employees.models import Employee
class EmployeeSerializer(serializers.ModelSerializer):
"""Базовый сериализатор — только публичные поля."""
groups = serializers.SlugRelatedField(many=True, read_only=True, slug_field='name')
class Meta:
model = Employee
fields = [
'id', 'username', 'first_name', 'last_name', 'middle_name',
'email', 'groups', 'photo', 'post', 'department',
'user_location_type', 'user_organization', 'user_pharmacy',
'is_active', 'date_joined',
]
read_only_fields = ['id', 'date_joined']
class EmployeeDetailSerializer(EmployeeSerializer):
"""Детальный сериализатор с PII — только для HR/администраторов."""
class Meta(EmployeeSerializer.Meta):
fields = EmployeeSerializer.Meta.fields + [
'phone', 'internal_number', 'personal_phone', 'personal_email',
'birth_date', 'inn_code',
'emergency_contact_name', 'emergency_contact_phone', 'emergency_contact_relation',
'mattermost_username', 'mattermost_sync_enabled',
'ad_sync_enabled', 'hire_date', 'termination_date',
'is_staff',
]