diff --git a/roles/membership-map/build/templates/membership-mwclient.py b/roles/membership-map/build/templates/membership-mwclient.py index 693503517e..6f53d98f35 100644 --- a/roles/membership-map/build/templates/membership-mwclient.py +++ b/roles/membership-map/build/templates/membership-mwclient.py @@ -1,4 +1,5 @@ -s script is for generating output for +#!/usr/bin/python +''' This script is for generating output for https://fedoraproject.org/wiki/Ambassadors/MembershipService/Verification.''' # # Copyright (C) 2010, Susmit Shannigrahi, Susmit AT fedoraproject DOT org @@ -20,7 +21,7 @@ import getpass from fedora.client.fas2 import AccountSystem import datetime import GeoIP -from django.utils.encoding import smart_str +from kitchen.text.converters import to_bytes import mwclient #from maxmind array @@ -30,83 +31,97 @@ import mwclient CONTINENT_MAP = {'AP': 'AS', 'EU': 'EU', 'AD': 'EU', 'AE': 'EU', 'AF': 'AS', \ - 'AG': 'SA', 'AI': 'SA', 'AL': 'EU', 'AM': 'AS', 'AN': 'SA', 'AO': 'EU', \ + 'AG': 'SA', 'AI': 'SA', 'AL': 'EU', 'AM': 'AS', 'AN': 'SA', 'AO': 'AF', \ 'AQ': 'AN', 'AR': 'SA', 'AS': 'OC', 'AT': 'EU', 'AU': 'OC', 'AW': 'SA', \ 'AX': 'EU', 'AZ': 'AS', 'BA': 'EU', 'BB': 'SA', 'BD': 'AS', 'BE': 'EU', \ -'BF': 'EU', 'BG': 'EU', 'BH': 'AS', 'BI': 'EU', 'BJ': 'EU', 'BM': 'SA', \ -'BN': 'AS', 'BO': 'SA', 'BR': 'SA', 'BS': 'SA', 'BT': 'AS', 'BV': 'EU', \ -'BW': 'EU', 'BY': 'EU', 'BZ': 'SA', 'CA': 'NA', 'CC': 'AS', 'CD': 'EU', \ -'CF': 'EU', 'CG': 'EU', 'CH': 'EU', 'CI': 'EU', 'CK': 'OC', 'CL': 'SA', \ -'CM': 'EU', 'CN': 'AS', 'CO': 'SA', 'CR': 'SA', 'CU': 'SA', 'CV': 'EU', \ -'CX': 'AS', 'CY': 'AS', 'CZ': 'EU', 'DE': 'EU', 'DJ': 'EU', 'DK': 'EU', \ -'DM': 'SA', 'DO': 'SA', 'DZ': 'EU', 'EC': 'SA', 'EE': 'EU', 'EG': 'EU', \ -'EH': 'EU', 'ER': 'EU', 'ES': 'EU', 'ET': 'EU', 'FI': 'EU', 'FJ': 'OC', \ -'FK': 'SA', 'FM': 'OC', 'FO': 'EU', 'FR': 'EU', 'FX': 'EU', 'GA': 'EU', \ -'GB': 'EU', 'GD': 'SA', 'GE': 'AS', 'GF': 'SA', 'GG': 'EU', 'GH': 'EU', \ -'GI': 'EU', 'GL': 'SA', 'GM': 'EU', 'GN': 'EU', 'GP': 'SA', 'GQ': 'EU', \ -'GR': 'EU', 'GS': 'SA', 'GT': 'SA', 'GU': 'OC', 'GW': 'EU', 'GY': 'SA', \ -'HK': 'AS', 'HM': 'EU', 'HN': 'SA', 'HR': 'EU', 'HT': 'SA', 'HU': 'EU', \ +'BF': 'AF', 'BG': 'EU', 'BH': 'AS', 'BI': 'AF', 'BJ': 'AF', 'BM': 'SA', \ +'BN': 'AS', 'BO': 'SA', 'BR': 'SA', 'BS': 'SA', 'BT': 'AS', 'BV': 'AF', \ +'BW': 'AF', 'BY': 'EU', 'BZ': 'SA', 'CA': 'NA', 'CC': 'AS', 'CD': 'AF', \ +'CF': 'AF', 'CG': 'AF', 'CH': 'EU', 'CI': 'AF', 'CK': 'OC', 'CL': 'SA', \ +'CM': 'AF', 'CN': 'AS', 'CO': 'SA', 'CR': 'SA', 'CU': 'SA', 'CV': 'AF', \ +'CX': 'AS', 'CY': 'AS', 'CZ': 'EU', 'DE': 'EU', 'DJ': 'AF', 'DK': 'EU', \ +'DM': 'SA', 'DO': 'SA', 'DZ': 'AF', 'EC': 'SA', 'EE': 'EU', 'EG': 'AF', \ +'EH': 'AF', 'ER': 'AF', 'ES': 'EU', 'ET': 'AF', 'FI': 'EU', 'FJ': 'OC', \ +'FK': 'SA', 'FM': 'OC', 'FO': 'EU', 'FR': 'EU', 'FX': 'EU', 'GA': 'AF', \ +'GB': 'EU', 'GD': 'SA', 'GE': 'AS', 'GF': 'SA', 'GG': 'EU', 'GH': 'AF', \ +'GI': 'EU', 'GL': 'SA', 'GM': 'AF', 'GN': 'AF', 'GP': 'SA', 'GQ': 'AF', \ +'GR': 'EU', 'GS': 'SA', 'GT': 'SA', 'GU': 'OC', 'GW': 'AF', 'GY': 'SA', \ +'HK': 'AS', 'HM': 'AF', 'HN': 'SA', 'HR': 'EU', 'HT': 'SA', 'HU': 'EU', \ 'ID': 'AS', 'IE': 'EU', 'IL': 'EU', 'IM': 'EU', 'IN': 'AS', 'IO': 'AS', \ 'IQ': 'AS', 'IR': 'AS', 'IS': 'EU', 'IT': 'EU', 'JE': 'EU', 'JM': 'SA', \ -'JO': 'AS', 'JP': 'AS', 'KE': 'EU', 'KG': 'EU', 'KH': 'AS', 'KI': 'OC', \ -'KM': 'EU', 'KN': 'SA', 'KP': 'AS', 'KR': 'AS', 'KW': 'AS', 'KY': 'SA', \ +'JO': 'AS', 'JP': 'AS', 'KE': 'AF', 'KG': 'EU', 'KH': 'AS', 'KI': 'OC', \ +'KM': 'AF', 'KN': 'SA', 'KP': 'AS', 'KR': 'AS', 'KW': 'AS', 'KY': 'SA', \ 'KZ': 'AS', 'LA': 'AS', 'LB': 'EU', 'LC': 'SA', 'LI': 'EU', 'LK': 'AS', \ -'LR': 'EU', 'LS': 'EU', 'LT': 'EU', 'LU': 'EU', 'LV': 'EU', 'LY': 'EU', \ -'MA': 'EU', 'MC': 'EU', 'MD': 'EU', 'MG': 'EU', 'MH': 'OC', 'MK': 'EU', \ -'ML': 'EU', 'MM': 'AS', 'MN': 'AS', 'MO': 'AS', 'MP': 'OC', 'MQ': 'SA', \ -'MR': 'EU', 'MS': 'SA', 'MT': 'EU', 'MU': 'EU', 'MV': 'AS', 'MW': 'EU', \ -'MX': 'NA', 'MY': 'AS', 'MZ': 'EU', 'NA': 'EU', 'NC': 'OC', 'NE': 'EU', \ -'NF': 'OC', 'NG': 'EU', 'NI': 'SA', 'NL': 'EU', 'NO': 'EU', 'NP': 'AS', \ +'LR': 'AF', 'LS': 'AF', 'LT': 'EU', 'LU': 'EU', 'LV': 'EU', 'LY': 'AF', \ +'MA': 'AF', 'MC': 'EU', 'MD': 'EU', 'MG': 'AF', 'MH': 'OC', 'MK': 'EU', \ +'ML': 'AF', 'MM': 'AS', 'MN': 'AS', 'MO': 'AS', 'MP': 'OC', 'MQ': 'SA', \ +'MR': 'AF', 'MS': 'SA', 'MT': 'EU', 'MU': 'AF', 'MV': 'AS', 'MW': 'AF', \ +'MX': 'NA', 'MY': 'AS', 'MZ': 'AF', 'NA': 'AF', 'NC': 'OC', 'NE': 'AF', \ +'NF': 'OC', 'NG': 'AF', 'NI': 'SA', 'NL': 'EU', 'NO': 'EU', 'NP': 'AS', \ 'NR': 'OC', 'NU': 'OC', 'NZ': 'AS', 'OM': 'AS', 'PA': 'SA', 'PE': 'SA', \ 'PF': 'OC', 'PG': 'OC', 'PH': 'AS', 'PK': 'AS', 'PL': 'EU', 'PM': 'SA', \ 'PN': 'OC', 'PR': 'SA', 'PS': 'AS', 'PT': 'EU', 'PW': 'OC', 'PY': 'SA', \ -'QA': 'AS', 'RE': 'EU', 'RO': 'EU', 'RU': 'EU', 'RW': 'EU', 'SA': 'AS', \ -'SB': 'OC', 'SC': 'EU', 'SD': 'EU', 'SE': 'EU', 'SG': 'AS', 'SH': 'EU', \ -'SI': 'EU', 'SJ': 'EU', 'SK': 'EU', 'SL': 'EU', 'SM': 'EU', 'SN': 'EU', \ -'SO': 'EU', 'SR': 'SA', 'ST': 'EU', 'SV': 'SA', 'SY': 'AS', 'SZ': 'EU', \ -'TC': 'SA', 'TD': 'EU', 'TF': 'EU', 'TG': 'EU', 'TH': 'AS', 'TJ': 'AS', \ -'TK': 'OC', 'TM': 'AS', 'TN': 'EU', 'TO': 'OC', 'TP': 'AS', 'TR': 'EU', \ -'TT': 'SA', 'TV': 'OC', 'TW': 'AS', 'TZ': 'EU', 'UA': 'EU', 'UG': 'EU', \ +'QA': 'AS', 'RE': 'AF', 'RO': 'EU', 'RU': 'EU', 'RW': 'AF', 'SA': 'AS', \ +'SB': 'OC', 'SC': 'AF', 'SD': 'AF', 'SE': 'EU', 'SG': 'AS', 'SH': 'AF', \ +'SI': 'EU', 'SJ': 'EU', 'SK': 'EU', 'SL': 'AF', 'SM': 'EU', 'SN': 'AF', \ +'SO': 'AF', 'SR': 'SA', 'ST': 'AF', 'SV': 'SA', 'SY': 'AS', 'SZ': 'AF', \ +'TC': 'SA', 'TD': 'AF', 'TF': 'AF', 'TG': 'AF', 'TH': 'AS', 'TJ': 'AS', \ +'TK': 'OC', 'TM': 'AS', 'TN': 'AF', 'TO': 'OC', 'TP': 'AS', 'TR': 'EU', \ +'TT': 'SA', 'TV': 'OC', 'TW': 'AS', 'TZ': 'AF', 'UA': 'EU', 'UG': 'AF', \ 'UM': 'OC', 'US': 'NA', 'UY': 'SA', 'UZ': 'AS', 'VA': 'EU', 'VC': 'SA', \ 'VE': 'SA', 'VG': 'SA', 'VI': 'SA', 'VN': 'AS', 'VU': 'OC', 'WF': 'OC', \ -'WS': 'OC', 'YE': 'AS', 'YT': 'EU', 'YU': 'EU', 'ZA': 'EU', 'ZM': 'EU', \ -'ZR': 'EU', 'ZW': 'EU', 'RS': 'EU', 'ME': 'EU', 'AU': 'AS'} +'WS': 'OC', 'YE': 'AS', 'YT': 'AF', 'YU': 'EU', 'ZA': 'AF', 'ZM': 'AF', \ +'ZR': 'AF', 'ZW': 'AF', 'RS': 'EU', 'ME': 'EU', 'AU': 'AS'} + def calc_list(): '''Calculate the contributors list categorised by country''' output = [] people_list = [] country_list = [] + inactive_list = [] flag = 0 - final_output_list_as = [] + final_output_list_as = [] final_output_list_eu = [] final_output_list_na = [] final_output_list_latam = [] + final_output_list_africa = [] final_output_list_unknown = [] full_name = {'AS' : 'APAC', 'NA' : 'North America', \ -'SA' : 'LATAM', 'EU' : 'EMEA', 'Unknown' : 'Unknown'} +'SA' : 'LATAM', 'AF' : 'Africa', 'EU' : 'EMEA', 'Unknown' : 'Unknown'} group_name = 'ambassadors' -# username = 'fedoradummy' -# password = '<%= fedoraDummyUserPassword %>' - username = raw_input('Username: ').strip() - password = getpass.getpass('Password: ') - fas = AccountSystem(username=username, password=password) + username = 'fedoradummy' + password = '{{ fedoraDummyUserPassword }}' +# username = raw_input('Username: ').strip() +# password = getpass.getpass('Password: ') +{% if env == "staging" %} + base_url = 'https://admin.stg.fedoraproject.org/accounts/' +{% else %} + base_url = 'https://admin.fedoraproject.org/accounts/' +{% endif %} + + fas = AccountSystem(base_url=base_url, username=username, password=password, timeout=600) # Call fedoraproject API with mwclient - site = mwclient.Site(('https', 'fedoraproject.org'), path='/w/') +{% if env == "staging" %} + site = mwclient.Site(('https', 'stg.fedoraproject.org'), path='/w/') +{% else %} + site = mwclient.Site(('https', 'fedoraproject.org'), path='/w/') +{% endif %} + site.login(username, password) # Optional # Specify which page to edit page = site.Pages['Ambassadors/MembershipService/Verification2'] #delete all the erswhile contents. - page.edit() + page.text() blank_page = "updating..." page.save(blank_page) - + print 'This takes loooooong time to execute...' - + #get all data from a group group_people = fas.group_members(group_name) #make a list of usernames of a group @@ -128,15 +143,17 @@ fields=['human_name', 'username', 'email', 'status', 'country_code']) country_code = item['country_code'] status = item['status'] email = item['username'] + '@fedoraproject.org' - - + + if person == user_name: + if status == 'inactive': + inactive_list.append(user_name) #print 'match' - if status == 'active': #filter out all inactive accounts + elif status == 'active': #filter out all inactive accounts if country_code is None or country_code == 'O1' \ or country_code == ' ': - continent_code = 'Unknown' + continent_code = 'Unknown' else: continent_code = CONTINENT_MAP[country_code] @@ -184,12 +201,12 @@ continent_code] continent_code] output.append(entry) -# Now we have a output list like +# Now we have a output list like #[['rdsharma4u', 'Ravi Datta Sharma','India','rdsharma4u@gmail.com','1','AS'], #['red', 'Sandro Mathys', 'Switzerland', 'sm@sandro-mathys.ch', '10', 'EU']] - - + + for item in output: #break continent_code = item[4] @@ -201,38 +218,38 @@ continent_code] final_output_list_latam.append(item) elif continent_code == 'EU': final_output_list_eu.append(item) + elif continent_code == 'AF': + final_output_list_africa.append(item) elif continent_code == 'Unknown': final_output_list_unknown.append(item) # sort the list according to countries + final_string = '' - for final_output_list in [final_output_list_as, \ + for final_output_list in [final_output_list_as, final_output_list_africa, \ final_output_list_na, final_output_list_latam, final_output_list_eu, \ final_output_list_unknown]: country_list = [] #print final_output_list - + # print the full continent name from entry zero of list try: - continent_code = final_output_list[0][4] - - full_cont_name = full_name[continent_code] - + continent_code = final_output_list[0][4] + full_cont_name = full_name[continent_code] full_cont_name = "
Index | Name | |
---|---|---|
" + str(index) +" | [[User:" + user_name + "| " + human_name + "]]" + " | " + email + " |
%s | [[User:%s| %s]] | %s |