Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updating weblate scripts #21

Open
wants to merge 34 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
94c70c7
Adding Weblate scripts
Jul 19, 2022
edb353b
added Focalboard and Playbooks
Jul 21, 2022
5720c40
better error-catching and locking WIP instead of deleting translations
Jul 25, 2022
d9fb362
fixing lock on Weblate (wrong url)
Jul 28, 2022
4b8cc8a
Merge branch 'master' into weblate_scripts
ctlaltdieliet Jul 28, 2022
903df54
Adding PR review owners to notifications sent to the Mattermost i18n-…
Aug 16, 2022
11be357
Merge branch 'weblate_scripts' of github.com:ctlaltdieliet/i18n-wip i…
Aug 16, 2022
473a2ed
undo changes to double_languages.py
Aug 16, 2022
15a8558
Merge branch 'master' into weblate_scripts
ctlaltdieliet Aug 16, 2022
9df1bda
undo
Aug 16, 2022
6b9b106
Merge branch 'weblate_scripts' of github.com:ctlaltdieliet/i18n-wip i…
Aug 16, 2022
bb7a7cc
undo
Aug 16, 2022
30124ee
fixing things
Aug 16, 2022
9d900b9
working too late
Aug 16, 2022
9373195
adding devin.binnie
Aug 17, 2022
1b6ec13
markdown adjustment
Sep 2, 2022
4cfb6d1
replacing zef.hemel by pantelis.vratsalis
Oct 18, 2022
17eab84
replacing zef.hemel by pantelis.vratsalis
Oct 18, 2022
1863fab
Merge branch 'master' into weblate_scripts
ctlaltdieliet Oct 18, 2022
b548d1a
changing notification and adding notification state for double languages
Oct 19, 2022
8d693b1
Merge branch 'weblate_scripts' of github.com:ctlaltdieliet/i18n-wip i…
Oct 19, 2022
3622d88
Merge branch 'mattermost:master' into weblate_scripts
ctlaltdieliet Oct 19, 2022
e3093bb
adding reminder function of component remains locked for longer thn o…
Dec 25, 2022
e005570
Merge branch 'master' into weblate_scripts
ctlaltdieliet Dec 25, 2022
8f4e63b
Fix writing the locks everytime
ctlaltdieliet Dec 26, 2022
084ab02
Update weblate_locks_notify_community.py
ctlaltdieliet Dec 28, 2022
92d7b5c
fixing not reading all shipped languages if more than 20
Feb 14, 2023
62c15fc
fixing not reading all shipped languages if more than 20
Feb 14, 2023
1beb4b2
removing debugging output
Feb 15, 2023
a901cb7
removing debugging output
Feb 15, 2023
c294dee
Merge branch 'master' into weblate_scripts
ctlaltdieliet Feb 15, 2023
b47dc21
better way of traversing the languages
Feb 16, 2023
5648a31
changing to monorepo
Mar 27, 2023
73197b4
Merge branch 'mattermost:master' into weblate_scripts
ctlaltdieliet Mar 27, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 23 additions & 26 deletions scripts/weblate/double_languages.py
Original file line number Diff line number Diff line change
@@ -1,72 +1,69 @@


import wlc
import apikey
import requests
import math
import json
from requests.exceptions import HTTPError
import json


w=wlc.Weblate(apikey.myAPIKey)
projects={'mobile':{},'server':{},'webapp':{},'glossary':{}}
projects['mobile']['shipped']='mattermost-mobile_master'
projects['mobile']['shipped']='mattermost-mobile-v2'
projects['mobile']['wip']='mattermost-mobile-wip'
projects['server']['shipped']='mattermost-server_master'
projects['server']['wip']='mattermost-server-wip'
projects['webapp']['shipped']='mattermost-webapp_master'
projects['webapp']['wip']='mattermost-webapp-wip'
projects['glossary']['shipped']='glossary'
projects['glossary']['wip']='glossary'

current_notification_state={"state":"false"}
previous_notification_state= json.load(open("./notification_state.txt"))

for project in projects:
shippedLanguages={}
WIPLanguages={}
### GETTING THE SHIPPED LANGUAGES ###
#print('GETTING SHIPPED LANGUAGES FOR '+project)
shippedProjects=w.get('https://translate.mattermost.com/api/components/mattermost/'+projects[project]['shipped']+'/translations/')
for shippedLanguage in shippedProjects['results']:
if shippedLanguage['language']['code']=='en':
continue
shippedLanguageCode=shippedLanguage['language']['code']
shippedLanguageName=shippedLanguage['language']['name']
shippedLanguages[shippedLanguageCode]=shippedLanguageName
page='https://translate.mattermost.com/api/components/mattermost/'+projects[project]['shipped']+'/translations/'
while page :
shippedProjects=w.get(page)
page=shippedProjects['next']
for shippedLanguage in shippedProjects['results']:
if shippedLanguage['language']['code']=='en':
continue
shippedLanguageCode=shippedLanguage['language']['code']
shippedLanguageName=shippedLanguage['language']['name']
shippedLanguages[shippedLanguageCode]=shippedLanguageName

#print('GETTING WIP LANGUAGES FOR '+project)
page=1
next='https://translate.mattermost.com/api/components/i18n-wip/'+projects[project]['wip']+'/translations/'
WIPProjects=w.get(next)
lastpage=math.ceil(WIPProjects['count']/20)
while page<=lastpage:
next='https://translate.mattermost.com/api/components/i18n-wip/'+projects[project]['wip']+'/translations/?page='+str(page)
WIPProjects=w.get(next)
page=page+1

page='https://translate.mattermost.com/api/components/i18n-wip/'+projects[project]['wip']+'/translations/'
while page :
WIPProjects=w.get(page)
page=WIPProjects['next']
for WIPLanguage in WIPProjects['results']:
if WIPLanguage['language']['code']=='en':
continue
WIPLanguageCode=WIPLanguage['language']['code']
WIPLanguageName=WIPLanguage['language']['name']
WIPLanguages[WIPLanguageCode]=WIPLanguageName

### GETTING REMOVING THE WIP LANGUAGES THAT ARE ALREADY IN SHIPPED ###
for languageToRemove in shippedLanguages.keys() & WIPLanguages.keys():
current_notification_state['state']="true"

if (previous_notification_state['state']=="false"):
try:
headers = {'Content-Type': 'application/json',}
values = '{ "text": "Hi @ctlaltdieliet and @carrie.warner: a shipped language is detected in WIP ('+languageToRemove+') in this '+project+' This project is locked now"}'
values = '{ "text": "Hi @ctlaltdieliet and @carrie.warner: a shipped language is detected in WIP ('+languageToRemove+') in this '+project+' This project is locked now!"}'
responseMattermost = requests.post(apikey.i18nWebhook,headers=headers,data=values)
responseMattermost.raise_for_status()
current_notification_state['state']="true"
except HTTPError as http_err:
print('HTTP error occurred while notifying Mattermost channel: '+http_err)
print('HTTP error occurred while notifying Mattermost channel: '+http_err)
except Exception as err:
print('Other error occurred while notifying Mattermost channel: '+err.message+' '+err.args)
try:
responseWeblate=w.request('post','https://translate.mattermost.com/api/components/i18n-wip/'+projects[project]['wip']+'/lock/',{'lock':True})
except HTTPError as http_err:
print('HTTP error occurred while locking '+projects[project]['wip']+': '+http_err)
print('HTTP error occurred while locking '+projects[project]['wip']+': '+http_err)
except Exception as err:
print('Other error occurred while locking : '+ projects[project]['wip']+' '+err.message+' '+err.args)
json.dump(current_notification_state,open("./notification_state.txt",'w'))
2 changes: 1 addition & 1 deletion scripts/weblate/locks.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"mattermost/mattermost-mobile-v2-channel_notified": "2022-12-25, 10:35:32", "mattermost/mattermost-server_master-channel_notified": "2022-12-25, 10:35:33", "mattermost/mattermost-webapp_master-channel_notified": "2022-12-25, 10:35:33", "mattermost/mattermost-desktop-channel_notified": "2022-12-25, 10:35:33", "mattermost/glossary-channel_notified": "2022-12-25, 10:35:33", "focalboard/webapp-channel_notified": "2022-12-25, 10:35:33", "playbooks/webapp-channel_notified": "2022-12-25, 10:35:33"}
{"mattermost/mattermost-mobile-v2": {"locked": false}, "mattermost/mattermost-mobile-v2-channel_notified": "2023-02-21, 09:48:01", "mattermost/mattermost-server-monorepo": {"locked": false}, "mattermost/mattermost-server-monorepo-channel_notified": "2023-03-27, 12:51:54", "mattermost/webapp-monorepo": {"locked": false}, "mattermost/webapp-monorepo-channel_notified": "2023-03-27, 12:51:55", "mattermost/mattermost-desktop": {"locked": false}, "mattermost/mattermost-desktop-channel_notified": "2023-03-06, 15:34:02", "mattermost/glossary": {"locked": false}, "mattermost/glossary-channel_notified": "2023-02-16, 07:14:02", "focalboard/webapp": {"locked": false}, "focalboard/webapp-channel_notified": "2023-01-20, 00:38:02", "playbooks/webapp": {"locked": false}, "playbooks/webapp-channel_notified": "2023-02-15, 14:12:02"}
12 changes: 3 additions & 9 deletions scripts/weblate/weblate_locks_notify_community.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
import datetime as DT

projects={'mobile':{},'server':{},'webapp':{},'desktop':{},'glossary':{}}
projects['mobile']='mattermost/mattermost-mobile-v2'
projects['server']='mattermost/mattermost-server_master'
projects['webapp']='mattermost/mattermost-webapp_master'
projects['mobile']='mattermost/mattermost-mobile_master'
projects['server']='mattermost/mattermost-server-monorepo'
projects['webapp']='mattermost/webapp_monorepo'
projects['desktop']='mattermost/mattermost-desktop'
projects['focalboard']='focalboard/webapp'
projects['playbooks']='playbooks/webapp'
Expand All @@ -39,30 +39,24 @@ def notificateChannel(project,current_lock):
headers = {'Content-Type': 'application/json',}
current_locks[projects[project]]=current_lock
current_locks[projects[project]+"-channel_notified"]=now
print("locked sent")
response = requests.post(apikey.communityWebhook,headers=headers,data=values)
response.raise_for_status()
except HTTPError as http_err:
print(f'HTTP error occurred while notifying Mattermost-channel: {http_err}')
except Exception as err:
print(f'Other error occurred while notifying Mattermost-channel: {err.message} {err.args}')
else:
print('Success!')

for project in projects:
now=datetime.now().strftime("%Y-%m-%d, %H:%M:%S")
print(now)
current_lock=w.get('https://translate.mattermost.com/api/components/'+projects[project]+'/lock/')
current_locks[projects[project]]=current_lock
if (previous_locks[projects[project]]!=current_lock):
print("SENT NOTIFICICATION CAUSE LOCK HAS CHANGED")
notificateChannel(project,current_lock)
current_locks[projects[project]+"-channel_notified"]=now
else:
previous_notification = datetime.strptime(previous_locks[projects[project]+"-channel_notified"], '%Y-%m-%d, %H:%M:%S')
current_locks[projects[project]+"-channel_notified"]=previous_locks[projects[project]+"-channel_notified"]
if (datetime.now()-DT.timedelta(days=7))>previous_notification and current_lock['locked']:
print("reminder for "+str(projects[project]))
notificateChannel(project,current_lock)
current_locks[projects[project]+"-channel_notified"]=now
json.dump(current_locks,open("locks.txt",'w'))