Fix zanata_users.py to support Zanata 3.9.6

HTML of individual language page was changed in Zanata 3.9.6.
This commit catches up with the change.

Closes-Bug: #1670725
Change-Id: I77df5c1f4b716b395f0f686b6a9e2e48649bedcf
This commit is contained in:
Akihiro Motoki 2017-03-07 16:03:37 +00:00
parent 8a5bbaee0e
commit 99b4f6e2ae
1 changed files with 9 additions and 12 deletions

View File

@ -48,17 +48,13 @@ class ZanataUtility(object):
.findAll('li', {'class': 'l--pad-all-quarter'}) .findAll('li', {'class': 'l--pad-all-quarter'})
for user in users: for user in users:
span_txt = user.find('span', {'class': 'list__item__meta'}).text user_id = user.find('a').text.strip()
user_id = span_txt.lstrip().rstrip()
roles = user.find('ul', {'class': 'list--horizontal'}) \ roles_tag = user.find('ul', {'class': 'list--horizontal'}) \
.findAll('li') .find('li')
roles = roles_tag.text.strip().split(', ')
for role in roles: for role_name in roles:
role_name = role.text.lstrip().rstrip()
role_status = role.find('i')['class'][1]
if role_status != 'i--checkmark':
continue
yield role_name, user_id yield role_name, user_id
def get_languages(self): def get_languages(self):
@ -104,7 +100,7 @@ def convert_role_name(role):
'Reviewer': 'reviewers', 'Reviewer': 'reviewers',
'Coordinator': 'coordinators' 'Coordinator': 'coordinators'
} }
return roles[role] if role in roles else None return roles.get(role)
def collect_zanata_language_and_members(): def collect_zanata_language_and_members():
@ -118,7 +114,7 @@ def collect_zanata_language_and_members():
member_url = languages[language].pop('member_url') member_url = languages[language].pop('member_url')
for role, user_id in zanata.iter_language_members(member_url): for role, user_id in zanata.iter_language_members(member_url):
role = convert_role_name(role) role = convert_role_name(role)
if role is None: if not role:
print('[Warn] Unknown role : %s' % role) print('[Warn] Unknown role : %s' % role)
continue continue
@ -127,7 +123,8 @@ def collect_zanata_language_and_members():
languages[language][role].append(user_id) languages[language][role].append(user_id)
sorted_key = sorted(languages, reverse=True, sorted_key = sorted(languages, reverse=True,
key=lambda k: len(languages[k]['translators'])) # Need to consider a case where no tranlators in a team
key=lambda k: len(languages[k].get('translators', [])))
result = OrderedDict((k, languages[k]) for k in sorted_key) result = OrderedDict((k, languages[k]) for k in sorted_key)
return result return result