Files
we_pro_dock/BACKEND/TEAMS.md
2024-05-14 16:58:27 +03:00

85 lines
7.7 KiB
Markdown
Raw Permalink 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` (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)`: Метод для обновления существующей команды.
2. **WorkTeamZoneSerializer**:
- `object_related` (PrimaryKeyRelatedField): Связь с объектом через его идентификатор.
- `team_related` (PrimaryKeyRelatedField, many=True): Связь с командами через их идентификаторы (множественное).
- `author` (AuthorSerializer): Сериализатор для автора зоны ответственности команды.
- `createdAt` (DateTimeField): Дата создания зоны ответственности команды.
- `updatedAt` (DateTimeField): Дата последнего обновления зоны ответственности команды.
- `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-запросов (список, создание, получение, обновление, удаление) с соответствующей логикой обработки данных и проверкой прав доступа.