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

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