MCPcopy
hub / github.com/django/django / list_resources_with_updates

Function list_resources_with_updates

scripts/manage_translations.py:82–142  ·  view source on GitHub ↗
(
    date_since, resources=None, languages=None, verbosity=0
)

Source from the content-addressed store, hash-verified

80
81
82def list_resources_with_updates(
83 date_since, resources=None, languages=None, verbosity=0
84):
85 api_token = get_api_token()
86 project = "o:django:p:django"
87 date_since_iso = date_since.isoformat().strip("Z") + "Z"
88 if verbosity:
89 print(f"\n== Starting list_resources_with_updates at {date_since_iso=}")
90
91 if not languages:
92 languages = [ # List languages using Transifex projects API.
93 d["attributes"]["code"]
94 for d in get_api_response(
95 f"projects/{project}/languages", api_token, verbosity=verbosity
96 )
97 ]
98 if verbosity > 1:
99 print(f"\n=== Languages to process: {languages=}")
100
101 if not resources:
102 resources = [ # List resources using Transifex resources API.
103 d["attributes"]["slug"]
104 for d in get_api_response(
105 "resources",
106 api_token,
107 params={"filter[project]": project},
108 verbosity=verbosity,
109 )
110 ]
111 else:
112 resources = [_tx_resource_slug_for_name(r) for r in resources]
113 if verbosity > 1:
114 print(f"\n=== Resources to process: {resources=}")
115
116 resource_lang_changed = defaultdict(list)
117 for lang, resource in product(languages, resources):
118 if verbosity:
119 print(f"\n=== Getting data for: {lang=} {resource=} {date_since_iso=}")
120 data = get_api_response(
121 "resource_translations",
122 api_token,
123 params={
124 "filter[resource]": f"{project}:r:{resource}",
125 "filter[language]": f"l:{lang}",
126 "filter[date_translated][gt]": date_since_iso,
127 },
128 verbosity=verbosity,
129 )
130 local_resource = resource.replace("contrib-", "", 1)
131 local_lang = lang # XXX: LANG_OVERRIDES.get(lang, lang)
132 if data:
133 resource_lang_changed[local_resource].append(local_lang)
134 if verbosity > 2:
135 fname = f"{local_resource}-{local_lang}.json"
136 with open(fname, "w") as f:
137 f.write(json.dumps(data, sort_keys=True, indent=2))
138 print(f"==== Stored full data JSON in: {fname}")
139 if verbosity > 1:

Callers 1

fetchFunction · 0.85

Calls 6

get_api_tokenFunction · 0.85
get_api_responseFunction · 0.85
appendMethod · 0.45
writeMethod · 0.45
dumpsMethod · 0.45

Tested by

no test coverage detected