1
0
Fork 0
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:
Lukas Winkler 2021-08-25 21:49:08 +02:00
parent 154028455c
commit 851f07f9c7
Signed by: lukas
GPG key ID: 54DE4D798D244853
3 changed files with 95 additions and 0 deletions

View file

@ -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)}
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():
print(slug, comp["name"])
print(comp["check_flags"])
license = comp["license"]
if license != "GPL-3.0-or-later":
print(license)
update_setting(comp, {
"check_flags": "php-format,ignore-optional-plural"
})

View 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))

View 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))