7.2 KiB
7.2 KiB
Кортежи статуса задачи
GENDER_CHOICES = (
('n', 'Не указано'),
('m', 'Мужчина'),
('f', 'Женщина'),
)
Модель команда
- first_name (CharField): Имя пользователя (до 60 символов).
- last_name (CharField): Фамилия пользователя (до 60 символов).
- middle_name (CharField): Фамилия пользователя (до 60 символов).
- position (CharField): Должность участника команды
- work_start_time (DateField): Дата начала работы участника
- work_end_time (DateField): Дата окончания работы участника
- mobile (CharField): Мобильный номер участника.
- work_phone (CharField): Рабочий телефон участника.
- internal_number (CharField): Внутренний номер участника.
- email (EmailField): Адрес электронной почты пользователя (уникальный).
- personal_email (EmailField): Персональный e-mail участника.
- birth_date (DateField): Дата рождения участника.
- website (URLField): Сайт участника.
Модель зона ответственности
- object_related (ForeignKey): Связь с объектом.
- team_related (ManyToManyField): Связь с участниками команды.
Сериализатор
- TeamSerializer:
teamLastName,teamFirstName,teamMiddleName: Поля для фамилии, имени и отчества команды.teamBirthDate: Поле для даты рождения команды.teamPosition: Поле для должности в команде.teamWorkStartTime,teamWorkEndTime: Поля для времени начала и окончания работы команды.teamMobile,teamWorkPhone,teamInternalNumber,teamEmail,teamPersonalEmail,teamWebsite: Поля для контактной информации команды.author: Ссылка наAuthorSerializerдля получения информации об авторе команды.createdAt,updatedAt: Дата создания и последнего обновления команды.create(self, validated_data): Метод для создания новой команды.update(self, instance, validated_data): Метод для обновления существующей команды.
- WorkTeamZoneSerializer:
object_related: Связь с объектом через его идентификатор.team_related: Связь с командами через их идентификаторы (множественное).author: Ссылка наAuthorSerializerдля получения информации об авторе зоны ответственности команды.createdAt,updatedAt: Дата создания и последнего обновления зоны ответственности команды.create(self, validated_data): Метод для создания новой зоны ответственности команды.update(self, instance, validated_data): Метод для обновления существующей зоны ответственности команды.
Маршрутизатор
-
router.register('teams', TeamViewSet, basename='teams'): Регистрация представленияTeamViewSetв маршрутизаторе под именем'teams', с указанием базового имени'teams'. Это создаст URL-адреса для операций CRUD (создание, чтение, обновление, удаление) команд. -
router.register('work-team-zones', WorkTeamZoneViewSet, basename='work-team-zones'): Регистрация представленияWorkTeamZoneViewSetв маршрутизаторе под именем'work-team-zones', с указанием базового имени'work-team-zones'. Это создаст URL-адреса для операций CRUD (создание, чтение, обновление, удаление) зон ответственности команд.
Контроллер
Views и API
- Определение представления
TeamViewSetкак подклассаviewsets.ModelViewSet, который предоставляет стандартный набор операций CRUD для моделиTeam.queryset = Team.objects.all(): Получение всех объектов моделиTeamиз базы данных.serializer_class = TeamSerializer: Использование сериализатораTeamSerializerдля сериализации данных.permission_classes = [IsAuthenticatedOrReadOnly]: Определение разрешений доступа, требующих аутентификации для изменения данных и только чтения без аутентификации.lookup_field = 'id': Использование поля 'id' для поиска объектов.http_method_names = ['get', 'post', 'put', 'patch', 'delete']: Разрешенные HTTP-методы для данного представления.
- Определение методов для обработки различных HTTP-запросов:
get_permissions: Переопределение метода для применения разных разрешений в зависимости от типа действия.list: Метод для получения списка всех команд.create: Метод для создания новой команды.retrieve: Метод для получения информации о конкретной команде.update: Метод для обновления информации о команде.destroy: Метод для удаления команды.
- Аналогично определено представление
WorkTeamZoneViewSetдля моделиWorkTeamZone.queryset = WorkTeamZone.objects.all(): Получение всех объектов моделиWorkTeamZoneиз базы данных.serializer_class = WorkTeamZoneSerializer: Использование сериализатораWorkTeamZoneSerializer.permission_classes = [IsAuthenticated]: Определение разрешений доступа, требующих аутентификации для всех действий.- Определены методы для обработки различных HTTP-запросов (список, создание, получение, обновление, удаление) с соответствующей логикой обработки данных и проверкой прав доступа.