Files
we_pro_dock/BACKEND/TEAMS.md
2024-05-14 11:39:33 +03:00

73 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Кортежи статуса задачи
GENDER_CHOICES = (
('n', 'Не указано'),
('m', 'Мужчина'),
('f', 'Женщина'),
)
## Модель команда
1. **first_name** (CharField): Имя пользователя (до 60 символов).
2. **last_name** (CharField): Фамилия пользователя (до 60 символов).
3. **middle_name** (CharField): Фамилия пользователя (до 60 символов).
4. **position** (CharField): Должность участника команды
5. **work_start_time** (DateField): Дата начала работы участника
6. **work_end_time** (DateField): Дата окончания работы участника
7. **mobile** (CharField): Мобильный номер участника.
8. **work_phone** (CharField): Рабочий телефон участника.
9. **internal_number** (CharField): Внутренний номер участника.
10. **email** (EmailField): Адрес электронной почты пользователя (уникальный).
11. **personal_email** (EmailField): Персональный e-mail участника.
12. **birth_date** (DateField): Дата рождения участника.
13. website (URLField): Сайт участника.
## Модель зона ответственности
1. **object_related** (ForeignKey): Связь с объектом.
2. **team_related** (ManyToManyField): Связь с участниками команды.
## Сериализатор
1. **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)`: Метод для обновления существующей команды.
2. **WorkTeamZoneSerializer**:
- `object_related`: Связь с объектом через его идентификатор.
- `team_related`: Связь с командами через их идентификаторы (множественное).
- `author`: Ссылка на `AuthorSerializer` для получения информации об авторе зоны ответственности команды.
- `createdAt`, `updatedAt`: Дата создания и последнего обновления зоны ответственности команды.
- `create(self, validated_data)`: Метод для создания новой зоны ответственности команды.
- `update(self, instance, validated_data)`: Метод для обновления существующей зоны ответственности команды.
## Маршрутизатор
1. `router.register('teams', TeamViewSet, basename='teams')`: Регистрация представления `TeamViewSet` в маршрутизаторе под именем `'teams'`, с указанием базового имени `'teams'`. Это создаст URL-адреса для операций CRUD (создание, чтение, обновление, удаление) команд.
2. `router.register('work-team-zones', WorkTeamZoneViewSet, basename='work-team-zones')`: Регистрация представления `WorkTeamZoneViewSet` в маршрутизаторе под именем `'work-team-zones'`, с указанием базового имени `'work-team-zones'`. Это создаст URL-адреса для операций CRUD (создание, чтение, обновление, удаление) зон ответственности команд.
## Контроллер
### Views и API
1. Определение представления `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-методы для данного представления.
2. Определение методов для обработки различных HTTP-запросов:
- `get_permissions`: Переопределение метода для применения разных разрешений в зависимости от типа действия.
- `list`: Метод для получения списка всех команд.
- `create`: Метод для создания новой команды.
- `retrieve`: Метод для получения информации о конкретной команде.
- `update`: Метод для обновления информации о команде.
- `destroy`: Метод для удаления команды.
3. Аналогично определено представление `WorkTeamZoneViewSet` для модели `WorkTeamZone`.
- `queryset = WorkTeamZone.objects.all()`: Получение всех объектов модели `WorkTeamZone` из базы данных.
- `serializer_class = WorkTeamZoneSerializer`: Использование сериализатора `WorkTeamZoneSerializer`.
- `permission_classes = [IsAuthenticated]`: Определение разрешений доступа, требующих аутентификации для всех действий.
- Определены методы для обработки различных HTTP-запросов (список, создание, получение, обновление, удаление) с соответствующей логикой обработки данных и проверкой прав доступа.