Coverage for apps/kwai-api/src/kwai_api/v1/trainings/teams/presenters.py: 100%
17 statements
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
1"""Module for presenters of the /api/v1/trainings endpoint."""
3from typing import Self
5from kwai_bc_training.teams.team import TeamEntity
6from kwai_bc_training.trainings.training import TrainingEntity
7from kwai_core.domain.presenter import Presenter
8from kwai_core.json_api import JsonApiPresenter, Meta
10from kwai_api.v1.trainings.teams.schemas import (
11 TeamAttributes,
12 TeamDocument,
13 TeamResource,
14 TeamsDocument,
15)
18class JsonApiTrainingTeamPresenter(
19 JsonApiPresenter[TeamDocument], Presenter[TeamEntity]
20):
21 """A presenter that transforms a team from a training into a JSON:API document."""
23 def present(self, team: TeamEntity) -> Self:
24 self._document = TeamDocument(
25 data=TeamResource(
26 id=str(team.id), attributes=TeamAttributes(name=team.name)
27 )
28 )
29 return self
32class JsonApiTrainingTeamsPresenter(
33 JsonApiPresenter[TeamsDocument], Presenter[TrainingEntity]
34):
35 """A presenter that transforms the teams of a training into a JSON:API document."""
37 def present(self, training: TrainingEntity) -> Self:
38 self._document = TeamsDocument(meta=Meta(count=len(training.teams)))
40 for team in training.teams:
41 team_document = JsonApiTrainingTeamPresenter().present(team).get_document()
42 self._document.data.append(team_document.data)
44 return self