Skip to content

Commit 7ce9e44

Browse files
committed
begin separation of Deeds & UX and Legal Code projects in Transifex
1 parent a421d13 commit 7ce9e44

File tree

2 files changed

+61
-21
lines changed

2 files changed

+61
-21
lines changed

cc_legal_tools/settings/base.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -247,10 +247,11 @@
247247
TRANSIFEX = {
248248
"API_TOKEN": os.getenv("TRANSIFEX_API_TOKEN", "[!] MISSING [!]"),
249249
"ORGANIZATION_SLUG": "creativecommons",
250-
"PROJECT_SLUG": "CC",
251-
# We currently only have a single team for all of our projects named
252-
# "Creative Commons team"
253-
"TEAM_ID": 11342,
250+
"DEEDS_UX_TEAM_SLUG": "creative-commons-team",
251+
"DEEDS_UX_PROJECT_SLUG": "CC",
252+
"DEEDS_UX_RESOURCE_SLUG": "deeds_ux",
253+
"LEGAL_CODE_PROJECT_SLUG": "cc-legal-code",
254+
"LEGAL_CODE_TEAM_SLUG": "team-1",
254255
}
255256

256257

i18n/transifex.py

+56-17
Original file line numberDiff line numberDiff line change
@@ -36,32 +36,40 @@ def _empty_branch_object():
3636

3737
class TransifexHelper:
3838
def __init__(self, dryrun: bool = True, logger: logging.Logger = None):
39+
transifex = settings.TRANSIFEX
3940
self.dryrun = dryrun
4041
self.nop = "<NOP> " if dryrun else ""
4142
self.log = logger if logger else logging.getLogger()
4243

43-
self.organization_slug = settings.TRANSIFEX["ORGANIZATION_SLUG"]
44-
self.project_slug = settings.TRANSIFEX["PROJECT_SLUG"]
45-
self.team_id = settings.TRANSIFEX["TEAM_ID"]
46-
self.project_id = f"o:{self.organization_slug}:p:{self.project_slug}"
44+
self.organization_slug = transifex["ORGANIZATION_SLUG"]
45+
46+
self.deeds_ux_project_slug = transifex["DEEDS_UX_PROJECT_SLUG"]
47+
self.deeds_ux_team_slug = transifex["DEEDS_UX_TEAM_SLUG"]
48+
self.deeds_ux_resource_slug = transifex["DEEDS_UX_RESOURCE_SLUG"]
49+
50+
self.legal_code_project_slug = transifex["LEGAL_CODE_PROJECT_SLUG"]
51+
self.legal_code_team_slug = transifex["LEGAL_CODE_TEAM_SLUG"]
4752

4853
self.api = transifex_api
49-
self.api.setup(auth=settings.TRANSIFEX["API_TOKEN"])
54+
self.api.setup(auth=transifex["API_TOKEN"])
5055
self.api_organization = self.api.Organization.get(
5156
slug=self.organization_slug
5257
)
58+
5359
# The Transifex API requires project slugs to be lowercase
5460
# (^[a-z0-9._-]+$'), but the web interfaces does not (did not?). Our
55-
# project slug is uppercase.
61+
# Deeds & UX project slug is uppercase.
5662
# https://transifex.github.io/openapi/#tag/Projects
5763
for project in self.api_organization.fetch(
5864
"projects"
5965
): # pragma: no cover
6066
# TODO: remove coveragepy exclusion after upgrade to Python 3.10
6167
# https://github.com/nedbat/coveragepy/issues/198
62-
if project.attributes["slug"] == self.project_slug:
63-
self.api_project = project
64-
break
68+
if project.attributes["slug"] == self.deeds_ux_project_slug:
69+
self.api_deeds_ux_project = project
70+
elif project.attributes["slug"] == self.legal_code_project_slug:
71+
self.api_legal_code_project = project
72+
6573
for i18n_format in self.api.I18nFormat.filter(
6674
organization=self.api_organization
6775
): # pragma: no cover
@@ -82,16 +90,26 @@ def get_transifex_resource_stats(self):
8290
Uses Transifex API 3.0: Resources
8391
https://transifex.github.io/openapi/#tag/Resources
8492
"""
85-
self.api_project.reload()
93+
self.api_deeds_ux_project.reload()
94+
self.api_legal_code_project.reload()
8695
stats = {}
96+
97+
# Deeds & UX
98+
print(self.deeds_ux_resource_slug)
99+
resource = self.api_deeds_ux_project.fetch("resources").get(
100+
slug=self.deeds_ux_resource_slug
101+
)
102+
stats[self.deeds_ux_resource_slug] = resource.attributes
103+
104+
# Legal Code
87105
resources = sorted(
88-
self.api_project.fetch("resources").all(), key=lambda x: x.id
106+
self.api_legal_code_project.fetch("resources").all(),
107+
key=lambda x: x.id
89108
)
90109
for resource in resources:
91110
resource_slug = resource.attributes["slug"]
92-
if resource_slug in ["cc-search", "deeds-choosers"]:
93-
continue
94111
stats[resource_slug] = resource.attributes
112+
95113
return stats
96114

97115
def get_transifex_translation_stats(self):
@@ -105,22 +123,43 @@ def get_transifex_translation_stats(self):
105123
Uses Transifex API 3.0: Statistics
106124
https://transifex.github.io/openapi/#tag/Statistics
107125
"""
108-
self.api_project.reload()
126+
self.api_deeds_ux_project.reload()
127+
self.api_legal_code_project.reload()
109128
stats = {}
129+
130+
# Deeds & UX
131+
languages_stats = sorted(
132+
self.api.ResourceLanguageStats.filter(
133+
project=self.api_deeds_ux_project,
134+
resource=(
135+
f"o:{self.organization_slug}:"
136+
f"p:{self.deeds_ux_project_slug}:"
137+
f"r:{self.deeds_ux_resource_slug}"
138+
)
139+
).all(),
140+
key=lambda x: x.id,
141+
)
142+
for l_stats in languages_stats:
143+
resource_slug = l_stats.related["resource"].id.split(":")[-1]
144+
transifex_code = l_stats.related["language"].id.split(":")[-1]
145+
if resource_slug not in stats:
146+
stats[resource_slug] = {}
147+
stats[resource_slug][transifex_code] = l_stats.attributes
148+
149+
# Legal Code
110150
languages_stats = sorted(
111151
self.api.ResourceLanguageStats.filter(
112-
project=self.api_project
152+
project=self.api_legal_code_project,
113153
).all(),
114154
key=lambda x: x.id,
115155
)
116156
for l_stats in languages_stats:
117157
resource_slug = l_stats.related["resource"].id.split(":")[-1]
118158
transifex_code = l_stats.related["language"].id.split(":")[-1]
119-
if resource_slug in ["cc-search", "deeds-choosers"]:
120-
continue
121159
if resource_slug not in stats:
122160
stats[resource_slug] = {}
123161
stats[resource_slug][transifex_code] = l_stats.attributes
162+
124163
return stats
125164

126165
@property

0 commit comments

Comments
 (0)