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

7.2 KiB
Raw Blame History

Кортежи статуса задачи

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-запросов (список, создание, получение, обновление, удаление) с соответствующей логикой обработки данных и проверкой прав доступа.