Make the badge award cronjob more flexible.
This commit is contained in:
parent
76a44ec771
commit
e6b8eab5fc
1 changed files with 34 additions and 55 deletions
|
@ -35,8 +35,8 @@ fedmsg.init(**fm_config)
|
||||||
import fedbadges.utils
|
import fedbadges.utils
|
||||||
|
|
||||||
|
|
||||||
def get_cla_signers(**config):
|
def get_fas_groupings(fas_credentials, lookup, **config):
|
||||||
creds = config['fas_credentials']
|
creds = fas_credentials
|
||||||
|
|
||||||
fasclient = fedora.client.fas2.AccountSystem(
|
fasclient = fedora.client.fas2.AccountSystem(
|
||||||
username=creds['username'],
|
username=creds['username'],
|
||||||
|
@ -55,16 +55,16 @@ def get_cla_signers(**config):
|
||||||
|
|
||||||
mega_list = request['people'] + request['unapproved_people']
|
mega_list = request['people'] + request['unapproved_people']
|
||||||
|
|
||||||
|
results = {}
|
||||||
packager_id = None
|
packager_id = None
|
||||||
clas, sponsors, provenpackagers, proventesters = [], [], [], []
|
|
||||||
for user in mega_list:
|
for user in mega_list:
|
||||||
if any([group.name == 'cla_done' for group in user.memberships]):
|
# This is the main check.
|
||||||
clas.append(user)
|
for group_name, badge_id in lookup:
|
||||||
if any([group.name == 'provenpackager' for group in user.memberships]):
|
if any([group.name == group_name for group in user.memberships]):
|
||||||
provenpackagers.append(user)
|
results[group_name] = results.get(group_name, []) + [user]
|
||||||
if any([group.name == 'proventesters' for group in user.memberships]):
|
|
||||||
proventesters.append(user)
|
|
||||||
|
|
||||||
|
# This is special.. we're checking for being a packager-sponsor
|
||||||
|
if not packager_id:
|
||||||
for group in user.memberships:
|
for group in user.memberships:
|
||||||
if group.name == 'packager':
|
if group.name == 'packager':
|
||||||
packager_id = group.id
|
packager_id = group.id
|
||||||
|
@ -72,59 +72,37 @@ def get_cla_signers(**config):
|
||||||
for role in user.roles:
|
for role in user.roles:
|
||||||
if role.group_id == packager_id:
|
if role.group_id == packager_id:
|
||||||
if role.role_type == 'sponsor' and role.role_status == 'approved':
|
if role.role_type == 'sponsor' and role.role_status == 'approved':
|
||||||
sponsors.append(user)
|
results['sponsors'] = results.get('sponsors', []) + [user]
|
||||||
|
|
||||||
return clas, sponsors, provenpackagers, proventesters
|
return results
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
d = {}
|
d = {}
|
||||||
print "fascache.db code is commented out -- querying fas."
|
print "fascache.db code is commented out -- querying fas."
|
||||||
clas, sponsors, provenpackagers, proventesters = \
|
|
||||||
get_cla_signers(fas_credentials=fm_config['fas_credentials'])
|
|
||||||
d['clas'] = clas
|
|
||||||
d['sponsors'] = sponsors
|
|
||||||
d['provenpackagers'] = provenpackagers
|
|
||||||
d['proventesters'] = proventesters
|
|
||||||
|
|
||||||
# When running by hand, its often nice to use the code below instead of the code above.
|
# A mapping of fas groups to badge ids
|
||||||
#import shelve
|
mapping = {
|
||||||
#d = shelve.open("fascache.db")
|
'cla_done': 'involvement',
|
||||||
#if not d:
|
'provenpackager': 'proven-packager',
|
||||||
# print "fascache.db not found.. querying fas."
|
'proventesters': 'proven-tester',
|
||||||
# clas, sponsors, provenpackagers, proventesters = \
|
'ambassadors': 'ambassador',
|
||||||
# get_cla_signers(fas_credentials=dict(
|
'sysadmin-main': 'trust-me-i-know-what-i-am-doing',
|
||||||
# username="ralph",
|
'sysadmin-badges': 'inside-job',
|
||||||
# password=getpass.getpass(),
|
'sponsors': 'packager-sponsor',
|
||||||
# ))
|
}
|
||||||
# d['clas'] = clas
|
|
||||||
# d['sponsors'] = sponsors
|
|
||||||
# d['provenpackagers'] = provenpackagers
|
|
||||||
# d['proventesters'] = proventesters
|
|
||||||
# d.sync()
|
|
||||||
#else:
|
|
||||||
# print "** using cached fas data **"
|
|
||||||
|
|
||||||
clas, sponsors, provenpackagers, proventesters = \
|
results = get_fas_groupings(fas_credentials=fm_config['fas_credentials'],
|
||||||
d['clas'], d['sponsors'], \
|
lookup=mapping)
|
||||||
d['provenpackagers'], d['proventesters']
|
|
||||||
|
|
||||||
print len(list(clas)), "clas in the end"
|
for fas_group, members in results.iteritems():
|
||||||
print len(list(sponsors)), "sponsors in the end"
|
print fas_group, "had", len(members), "members for", mapping[fas_group]
|
||||||
print len(list(provenpackagers)), "provenpackagers in the end"
|
|
||||||
print len(list(proventesters)), "proventesters in the end"
|
|
||||||
|
|
||||||
badge = tahrir.get_badge(badge_id='involvement')
|
for fas_group, members in results.iteritmes():
|
||||||
hit_em_up(badge, clas)
|
print "processing", fas_group
|
||||||
|
print "======================"
|
||||||
badge = tahrir.get_badge(badge_id='packager-sponsor')
|
badge = tahrir.get_badge(badge_id=mapping[fas_group])
|
||||||
hit_em_up(badge, sponsors)
|
hit_em_up(badge, members)
|
||||||
|
|
||||||
badge = tahrir.get_badge(badge_id='proven-packager')
|
|
||||||
hit_em_up(badge, provenpackagers)
|
|
||||||
|
|
||||||
badge = tahrir.get_badge(badge_id='proven-tester')
|
|
||||||
hit_em_up(badge, proventesters)
|
|
||||||
|
|
||||||
|
|
||||||
def hit_em_up(badge, group):
|
def hit_em_up(badge, group):
|
||||||
|
@ -149,6 +127,7 @@ def hit_em_up(badge, group):
|
||||||
transaction.abort()
|
transaction.abort()
|
||||||
print "Failure:", e
|
print "Failure:", e
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
uri = fm_config['badges_global']['database_uri']
|
uri = fm_config['badges_global']['database_uri']
|
||||||
tahrir = TahrirDatabase(
|
tahrir = TahrirDatabase(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue