mirror of
https://github.com/Findus23/matomo-utils.git
synced 2024-09-19 15:13:44 +02:00
add script for generating transifex attribution
This commit is contained in:
parent
154028455c
commit
851f07f9c7
3 changed files with 95 additions and 0 deletions
|
@ -47,9 +47,15 @@ community_components = {slug: comp for slug, comp in components.items() if "Comm
|
||||||
|
|
||||||
official_components = {slug: components[slug] for slug in set(phpcomponents) - set(community_components)}
|
official_components = {slug: components[slug] for slug in set(phpcomponents) - set(community_components)}
|
||||||
|
|
||||||
|
core_repo_components = {slug: comp for slug, comp in components.items() if
|
||||||
|
"https://github.com/matomo-org/matomo/" == comp["repo"]}
|
||||||
|
|
||||||
for slug, comp in phpcomponents.items():
|
for slug, comp in phpcomponents.items():
|
||||||
print(slug, comp["name"])
|
print(slug, comp["name"])
|
||||||
print(comp["check_flags"])
|
print(comp["check_flags"])
|
||||||
|
license = comp["license"]
|
||||||
|
if license != "GPL-3.0-or-later":
|
||||||
|
print(license)
|
||||||
update_setting(comp, {
|
update_setting(comp, {
|
||||||
"check_flags": "php-format,ignore-optional-plural"
|
"check_flags": "php-format,ignore-optional-plural"
|
||||||
})
|
})
|
31
localisation/transifex-api.py
Normal file
31
localisation/transifex-api.py
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
import json
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from config import transifex_token
|
||||||
|
|
||||||
|
s = requests.Session()
|
||||||
|
s.headers.update({"Authorization": "Bearer " + transifex_token})
|
||||||
|
|
||||||
|
r = s.get("https://rest.api.transifex.com/teams", params={"filter[organization]": "o:matomo"})
|
||||||
|
print(r.status_code)
|
||||||
|
print(json.dumps(r.json(), indent=2))
|
||||||
|
|
||||||
|
relationships = []
|
||||||
|
|
||||||
|
r = s.get("https://rest.api.transifex.com/team_memberships", params={
|
||||||
|
"filter[organization]": "o:matomo",
|
||||||
|
"filter[team]": "o:matomo:t:matomo-team"
|
||||||
|
})
|
||||||
|
|
||||||
|
print(r.status_code)
|
||||||
|
data = r.json()
|
||||||
|
relationships.extend(data["data"])
|
||||||
|
|
||||||
|
while data["links"]["next"]:
|
||||||
|
print("fetching next page")
|
||||||
|
r = s.get(data["links"]["next"])
|
||||||
|
data = r.json()
|
||||||
|
relationships.extend(data["data"])
|
||||||
|
|
||||||
|
print(json.dumps(relationships, indent=2))
|
58
localisation/transifex-attribution.py
Normal file
58
localisation/transifex-attribution.py
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import Dict
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class User:
|
||||||
|
username: str
|
||||||
|
num_contributions: int
|
||||||
|
|
||||||
|
@property
|
||||||
|
def deleted(self):
|
||||||
|
return len(self.username) in [32, 40]
|
||||||
|
|
||||||
|
|
||||||
|
language_codes = set()
|
||||||
|
language_names = {}
|
||||||
|
|
||||||
|
data: Dict[str, list[User]] = {}
|
||||||
|
|
||||||
|
with open("matomo_multiple-teams_20100901_20210824_by-language.csv") as f:
|
||||||
|
next(f)
|
||||||
|
for line in f:
|
||||||
|
columns = line.split(",")
|
||||||
|
username = columns[0]
|
||||||
|
language = columns[1]
|
||||||
|
print(language)
|
||||||
|
splits = language.split(" ")
|
||||||
|
|
||||||
|
lang_name = " ".join(splits[:-1]).strip()
|
||||||
|
lang_code = splits[-1][1:-1].strip()
|
||||||
|
if username == "sgiehl" and lang_code != "de":
|
||||||
|
continue
|
||||||
|
language_codes.add(lang_code)
|
||||||
|
language_names[lang_code] = lang_name
|
||||||
|
num_new = int(columns[12])
|
||||||
|
num_edit = int(columns[13])
|
||||||
|
num_review = int(columns[14])
|
||||||
|
num_contributions = num_new + num_edit + num_review
|
||||||
|
user = User(username=username, num_contributions=num_contributions)
|
||||||
|
if lang_code in data:
|
||||||
|
data[lang_code].append(user)
|
||||||
|
else:
|
||||||
|
data[lang_code] = [user]
|
||||||
|
|
||||||
|
language_codes = sorted(list(language_codes))
|
||||||
|
for lang_code in language_codes:
|
||||||
|
users = data[lang_code]
|
||||||
|
lang_name = language_names[lang_code]
|
||||||
|
users.sort(key=lambda u: -u.num_contributions)
|
||||||
|
usernames = [user.username + str(user.num_contributions) for user in users if not user.deleted]
|
||||||
|
deleted_users = [u for u in users if u.deleted]
|
||||||
|
if len(deleted_users) > 1:
|
||||||
|
usernames.append(f"{len(deleted_users)} deleted users")
|
||||||
|
elif len(deleted_users) == 1:
|
||||||
|
usernames.append(f"{len(deleted_users)} deleted user")
|
||||||
|
|
||||||
|
print(f"{lang_name} ({lang_code})")
|
||||||
|
print(", ".join(usernames))
|
Loading…
Reference in a new issue