Skip to content

Commit 96536e1

Browse files
authored
feat(reports): add support for new schemas (#215)
1 parent 22a943e commit 96536e1

File tree

2 files changed

+671
-0
lines changed

2 files changed

+671
-0
lines changed

crowdin_api/api_resources/reports/resource.py

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

163+
def generate_source_content_updates_report(
164+
self,
165+
project_id: Optional[int] = None,
166+
unit: Optional[Unit] = None,
167+
format: Optional[Format] = Format.XLSX,
168+
date_from: Optional[datetime] = None,
169+
date_to: Optional[datetime] = None,
170+
):
171+
"""
172+
Generate Report(Contribution Raw Data).
173+
174+
Link to documentation:
175+
https://developer.crowdin.com/api/v2/#operation/api.projects.reports.post
176+
177+
Link to documentation for enterprise:
178+
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.reports.post
179+
"""
180+
181+
project_id = project_id or self.get_project_id()
182+
183+
return self.generate_report(
184+
projectId=project_id,
185+
request_data={
186+
"name": "source-content-updates",
187+
"schema": {
188+
"unit": unit,
189+
"format": format,
190+
"dateFrom": date_from,
191+
"dateTo": date_to,
192+
},
193+
},
194+
)
195+
196+
def generate_project_members_report(
197+
self,
198+
project_id: Optional[int] = None,
199+
format: Optional[Format] = Format.XLSX,
200+
date_from: Optional[datetime] = None,
201+
date_to: Optional[datetime] = None,
202+
):
203+
"""
204+
Generate Report(Project Members).
205+
206+
Link to documentation:
207+
https://developer.crowdin.com/api/v2/#operation/api.projects.reports.post
208+
209+
Link to documentation for enterprise:
210+
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.reports.post
211+
"""
212+
213+
project_id = project_id or self.get_project_id()
214+
215+
return self.generate_report(
216+
projectId=project_id,
217+
request_data={
218+
"name": "project-members",
219+
"schema": {
220+
"format": format,
221+
"dateFrom": date_from,
222+
"dateTo": date_to,
223+
},
224+
},
225+
)
226+
227+
def generate_editor_issues_report(
228+
self,
229+
project_id: Optional[int] = None,
230+
date_from: Optional[datetime] = None,
231+
date_to: Optional[datetime] = None,
232+
format: Optional[Format] = Format.XLSX,
233+
issue_type: Optional[str] = None,
234+
):
235+
"""
236+
Generate Report(Editor Issues).
237+
238+
Link to documentation:
239+
https://developer.crowdin.com/api/v2/#operation/api.projects.reports.post
240+
241+
Link to documentation for enterprise:
242+
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.reports.post
243+
"""
244+
245+
project_id = project_id or self.get_project_id()
246+
247+
return self.generate_report(
248+
projectId=project_id,
249+
request_data={
250+
"name": "editor-issues",
251+
"schema": {
252+
"dateFrom": date_from,
253+
"dateTo": date_to,
254+
"format": format,
255+
"issueType": issue_type
256+
},
257+
},
258+
)
259+
260+
def generate_qa_check_issues_report(
261+
self,
262+
project_id: Optional[int] = None,
263+
format: Optional[Format] = Format.XLSX,
264+
date_from: Optional[datetime] = None,
265+
date_to: Optional[datetime] = None,
266+
):
267+
"""
268+
Generate Report(Qa Check Issues).
269+
270+
Link to documentation:
271+
https://developer.crowdin.com/api/v2/#operation/api.projects.reports.post
272+
273+
Link to documentation for enterprise:
274+
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.reports.post
275+
"""
276+
277+
project_id = project_id or self.get_project_id()
278+
279+
return self.generate_report(
280+
projectId=project_id,
281+
request_data={
282+
"name": "qa-check-issues",
283+
"schema": {
284+
"format": format,
285+
"dateFrom": date_from,
286+
"dateTo": date_to,
287+
},
288+
},
289+
)
290+
291+
def generate_saving_activity_report(
292+
self,
293+
project_id: Optional[int] = None,
294+
unit: Optional[Unit] = None,
295+
language_id: Optional[str] = None,
296+
format: Optional[Format] = Format.XLSX,
297+
date_from: Optional[datetime] = None,
298+
date_to: Optional[datetime] = None,
299+
):
300+
"""
301+
Generate Report(Saving Activity).
302+
303+
Link to documentation:
304+
https://developer.crowdin.com/api/v2/#operation/api.projects.reports.post
305+
306+
Link to documentation for enterprise:
307+
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.reports.post
308+
"""
309+
310+
project_id = project_id or self.get_project_id()
311+
312+
return self.generate_report(
313+
projectId=project_id,
314+
request_data={
315+
"name": "saving-activity",
316+
"schema": {
317+
"unit": unit,
318+
"languageId": language_id,
319+
"format": format,
320+
"dateFrom": date_from,
321+
"dateTo": date_to,
322+
},
323+
},
324+
)
325+
326+
def generate_translation_activity_report(
327+
self,
328+
project_id: Optional[int] = None,
329+
unit: Optional[Unit] = None,
330+
language_id: Optional[str] = None,
331+
format: Optional[Format] = Format.XLSX,
332+
date_from: Optional[datetime] = None,
333+
date_to: Optional[datetime] = None,
334+
):
335+
"""
336+
Generate Report(Translation Activity).
337+
338+
Link to documentation:
339+
https://developer.crowdin.com/api/v2/#operation/api.projects.reports.post
340+
341+
Link to documentation for enterprise:
342+
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.reports.post
343+
"""
344+
345+
project_id = project_id or self.get_project_id()
346+
347+
return self.generate_report(
348+
projectId=project_id,
349+
request_data={
350+
"name": "translation-activity",
351+
"schema": {
352+
"unit": unit,
353+
"languageId": language_id,
354+
"format": format,
355+
"dateFrom": date_from,
356+
"dateTo": date_to,
357+
},
358+
},
359+
)
360+
163361
def generate_pre_translate_accuracy_general_report(
164362
self,
165363
projectId: Optional[int] = None,
@@ -1276,6 +1474,104 @@ def generate_group_translation_costs_post_editing_general_report(
12761474
},
12771475
)
12781476

1477+
def generate_group_task_usage_report(
1478+
self,
1479+
group_id: int,
1480+
format: Optional[Format] = None,
1481+
type: Optional[str] = None,
1482+
project_ids: Optional[Iterable[int]] = None,
1483+
date_from: Optional[datetime] = None,
1484+
date_to: Optional[datetime] = None,
1485+
group_by: Optional[GroupBy] = None,
1486+
type_task: Optional[int] = None,
1487+
language_id: Optional[str] = None,
1488+
creator_id: Optional[int] = None,
1489+
assignee_id: Optional[int] = None,
1490+
):
1491+
"""
1492+
Generate Group Report (Task Usage Report).
1493+
1494+
Link to documentation:
1495+
https://developer.crowdin.com/enterprise/api/v2/#operation/api.groups.reports.post
1496+
"""
1497+
1498+
return self.generate_group_report(
1499+
group_id=group_id,
1500+
request_data={
1501+
"name": "group-task-usage",
1502+
"schema": {
1503+
"projectIds": project_ids,
1504+
"format": format,
1505+
"type": type,
1506+
"dateFrom": date_from,
1507+
"dateTo": date_to,
1508+
"groupBy": group_by,
1509+
"typeTask": type_task,
1510+
"languageId": language_id,
1511+
"creatorId": creator_id,
1512+
"assigneeId": assignee_id,
1513+
},
1514+
},
1515+
)
1516+
1517+
def generate_group_qa_check_issues_report(
1518+
self,
1519+
group_id: int,
1520+
project_ids: Optional[Iterable[int]] = None,
1521+
format: Optional[Format] = None,
1522+
date_from: Optional[datetime] = None,
1523+
date_to: Optional[datetime] = None,
1524+
):
1525+
"""
1526+
Generate Group Report (Group Qa Check Issues Report).
1527+
1528+
Link to documentation:
1529+
https://developer.crowdin.com/enterprise/api/v2/#operation/api.groups.reports.post
1530+
"""
1531+
1532+
return self.generate_group_report(
1533+
group_id=group_id,
1534+
request_data={
1535+
"name": "group-qa-check-issues",
1536+
"schema": {
1537+
"projectIds": project_ids,
1538+
"format": format,
1539+
"dateFrom": date_from,
1540+
"dateTo": date_to,
1541+
},
1542+
},
1543+
)
1544+
1545+
def generate_group_translation_activity_report(
1546+
self,
1547+
group_id: int,
1548+
unit: Optional[Unit] = None,
1549+
project_ids: Optional[Iterable[int]] = None,
1550+
format: Optional[Format] = None,
1551+
date_from: Optional[datetime] = None,
1552+
date_to: Optional[datetime] = None,
1553+
):
1554+
"""
1555+
Generate Group Report (Group translation consumption).
1556+
1557+
Link to documentation:
1558+
https://developer.crowdin.com/enterprise/api/v2/#operation/api.groups.reports.post
1559+
"""
1560+
1561+
return self.generate_group_report(
1562+
group_id=group_id,
1563+
request_data={
1564+
"name": "group-translation-activity",
1565+
"schema": {
1566+
"unit": unit,
1567+
"projectIds": project_ids,
1568+
"format": format,
1569+
"dateFrom": date_from,
1570+
"dateTo": date_to,
1571+
},
1572+
},
1573+
)
1574+
12791575
@staticmethod
12801576
def get_organization_reports_path(report_id: Optional[str] = None):
12811577
if report_id is not None:

0 commit comments

Comments
 (0)