Skip to content

Commit 695b211

Browse files
authored
feat(api): Add Pre-Translate Accuracy Report (#187)
1 parent 16d3be7 commit 695b211

File tree

3 files changed

+187
-0
lines changed

3 files changed

+187
-0
lines changed

crowdin_api/api_resources/reports/enums.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class ScopeType(Enum):
1414

1515

1616
class ReportName(Enum):
17+
PRE_TRANSLATE_ACCURACY = "pre-translate-accuracy"
1718
COSTS_ESTIMATION = "costs-estimation"
1819
TRANSLATION_COSTS = "translation-costs"
1920
TOP_MEMBERS = "top-members"

crowdin_api/api_resources/reports/resource.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,76 @@ def generate_contribution_raw_data_report(
160160
},
161161
)
162162

163+
def generate_pre_translate_accuracy_general_report(
164+
self,
165+
projectId: Optional[int] = None,
166+
unit: Optional[Unit] = None,
167+
format: Optional[Format] = None,
168+
postEditingCategories: Optional[Iterable[str]] = None,
169+
languageId: Optional[str] = None,
170+
dateFrom: Optional[datetime] = None,
171+
dateTo: Optional[datetime] = None,
172+
):
173+
"""
174+
Generate Report.
175+
176+
Link to documentation:
177+
https://developer.crowdin.com/api/v2/#operation/api.projects.reports.post
178+
179+
Link to documentation for enterprise:
180+
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.reports.post
181+
"""
182+
183+
projectId = projectId or self.get_project_id()
184+
185+
return self.generate_report(
186+
projectId=projectId,
187+
request_data={
188+
"name": "pre-translate-accuracy",
189+
"schema": {
190+
"unit": unit,
191+
"format": format,
192+
"postEditingCategories": postEditingCategories,
193+
"languageId": languageId,
194+
"dateFrom": dateFrom,
195+
"dateTo": dateTo,
196+
},
197+
},
198+
)
199+
200+
def generate_pre_translate_accuracy_by_task_report(
201+
self,
202+
projectId: Optional[int] = None,
203+
unit: Optional[Unit] = None,
204+
format: Optional[Format] = None,
205+
postEditingCategories: Optional[Iterable[str]] = None,
206+
taskId: Optional[int] = None,
207+
):
208+
"""
209+
Generate Report.
210+
211+
Link to documentation:
212+
https://developer.crowdin.com/api/v2/#operation/api.projects.reports.post
213+
214+
Link to documentation for enterprise:
215+
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.reports.post
216+
"""
217+
218+
projectId = projectId or self.get_project_id()
219+
220+
return self.generate_report(
221+
projectId=projectId,
222+
request_data={
223+
"name": "pre-translate-accuracy",
224+
"schema": {
225+
"unit": unit,
226+
"format": format,
227+
"postEditingCategories": postEditingCategories,
228+
"taskId": taskId,
229+
},
230+
},
231+
)
232+
163233
def generate_costs_estimation_post_editing_general_report(
164234
self,
165235
base_rates: BaseRates,

crowdin_api/api_resources/reports/tests/test_reports_resources.py

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,122 @@ def test_generate_contribution_raw_data_report(
633633
request_data={"name": "contribution-raw-data", "schema": schema},
634634
)
635635

636+
@pytest.mark.parametrize(
637+
"in_params, schema",
638+
[
639+
(
640+
{
641+
"unit": Unit.WORDS,
642+
"format": Format.XLSX,
643+
"postEditingCategories": ["0-20", "20-50"],
644+
"languageId": "uk",
645+
"dateFrom": datetime(year=1988, month=1, day=4),
646+
"dateTo": datetime(year=2015, month=10, day=13),
647+
},
648+
{
649+
"unit": Unit.WORDS,
650+
"format": Format.XLSX,
651+
"postEditingCategories": ["0-20", "20-50"],
652+
"languageId": "uk",
653+
"dateFrom": datetime(year=1988, month=1, day=4),
654+
"dateTo": datetime(year=2015, month=10, day=13),
655+
},
656+
),
657+
(
658+
{
659+
"unit": Unit.WORDS,
660+
"format": Format.XLSX,
661+
"languageId": "uk",
662+
"dateFrom": datetime(year=1988, month=1, day=4),
663+
"dateTo": datetime(year=2015, month=10, day=13),
664+
},
665+
{
666+
"unit": Unit.WORDS,
667+
"format": Format.XLSX,
668+
"postEditingCategories": None,
669+
"languageId": "uk",
670+
"dateFrom": datetime(year=1988, month=1, day=4),
671+
"dateTo": datetime(year=2015, month=10, day=13),
672+
},
673+
)
674+
],
675+
)
676+
@mock.patch("crowdin_api.api_resources.reports.resource.ReportsResource.generate_report")
677+
def test_generate_pre_translate_accuracy_general_report(
678+
self, m_generate_report, in_params, schema, base_absolut_url
679+
):
680+
m_generate_report.return_value = "response"
681+
682+
resource = self.get_resource(base_absolut_url)
683+
assert (
684+
resource.generate_pre_translate_accuracy_general_report(
685+
projectId=1,
686+
**in_params
687+
) == "response"
688+
)
689+
m_generate_report.assert_called_once_with(
690+
projectId=1,
691+
request_data={
692+
"name": "pre-translate-accuracy",
693+
"schema": schema
694+
}
695+
)
696+
697+
@pytest.mark.parametrize(
698+
"in_params, schema",
699+
[
700+
(
701+
{
702+
"unit": Unit.WORDS,
703+
"format": Format.XLSX,
704+
"postEditingCategories": ["0-20", "20-50"],
705+
"taskId": 1
706+
},
707+
{
708+
"unit": Unit.WORDS,
709+
"format": Format.XLSX,
710+
"postEditingCategories": ["0-20", "20-50"],
711+
"taskId": 1
712+
}
713+
),
714+
(
715+
{
716+
"unit": Unit.WORDS,
717+
"format": Format.XLSX,
718+
"taskId": 1
719+
},
720+
{
721+
"unit": Unit.WORDS,
722+
"format": Format.XLSX,
723+
"postEditingCategories": None,
724+
"taskId": 1
725+
}
726+
)
727+
]
728+
)
729+
@mock.patch(
730+
"crowdin_api.api_resources.reports.resource.ReportsResource.generate_report"
731+
)
732+
def test_generate_pre_translate_accuracy_by_task_report(
733+
self, m_generate_report, in_params, schema, base_absolut_url
734+
):
735+
m_generate_report.return_value = "response"
736+
737+
resource = self.get_resource(base_absolut_url)
738+
assert (
739+
resource.generate_pre_translate_accuracy_by_task_report(
740+
projectId=1,
741+
**in_params
742+
) == "response"
743+
)
744+
m_generate_report.assert_called_once_with(
745+
projectId=1,
746+
request_data={
747+
"name": "pre-translate-accuracy",
748+
"schema": schema
749+
}
750+
)
751+
636752
@pytest.mark.parametrize(
637753
"in_params, schema",
638754
[

0 commit comments

Comments
 (0)