7.7 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(CharField): Фамилия команды.teamFirstName(CharField): Имя команды.teamMiddleName(CharField): Отчество команды.teamBirthDate(DateField): Дата рождения команды.teamPosition(CharField): Должность в команде.teamWorkStartTime(TimeField): Время начала работы команды.teamWorkEndTime(TimeField): Время окончания работы команды.teamMobile(CharField): Мобильный телефон команды.teamWorkPhone(CharField): Рабочий телефон команды.teamInternalNumber(CharField): Внутренний номер команды.teamEmail(EmailField): Электронная почта команды.teamPersonalEmail(EmailField): Личная электронная почта команды.teamWebsite(URLField): Веб-сайт команды.author(AuthorSerializer): Сериализатор для автора команды.createdAt(DateTimeField): Дата создания команды.updatedAt(DateTimeField): Дата последнего обновления команды.create(self, validated_data): Метод для создания новой команды.update(self, instance, validated_data): Метод для обновления существующей команды.
-
WorkTeamZoneSerializer:
object_related(PrimaryKeyRelatedField): Связь с объектом через его идентификатор.team_related(PrimaryKeyRelatedField, many=True): Связь с командами через их идентификаторы (множественное).author(AuthorSerializer): Сериализатор для автора зоны ответственности команды.createdAt(DateTimeField): Дата создания зоны ответственности команды.updatedAt(DateTimeField): Дата последнего обновления зоны ответственности команды.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-запросов (список, создание, получение, обновление, удаление) с соответствующей логикой обработки данных и проверкой прав доступа.