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
|
||||
|
||||
|
||||
def get_cla_signers(**config):
|
||||
creds = config['fas_credentials']
|
||||
def get_fas_groupings(fas_credentials, lookup, **config):
|
||||
creds = fas_credentials
|
||||
|
||||
fasclient = fedora.client.fas2.AccountSystem(
|
||||
username=creds['username'],
|
||||
|
@ -55,76 +55,54 @@ def get_cla_signers(**config):
|
|||
|
||||
mega_list = request['people'] + request['unapproved_people']
|
||||
|
||||
results = {}
|
||||
packager_id = None
|
||||
clas, sponsors, provenpackagers, proventesters = [], [], [], []
|
||||
for user in mega_list:
|
||||
if any([group.name == 'cla_done' for group in user.memberships]):
|
||||
clas.append(user)
|
||||
if any([group.name == 'provenpackager' for group in user.memberships]):
|
||||
provenpackagers.append(user)
|
||||
if any([group.name == 'proventesters' for group in user.memberships]):
|
||||
proventesters.append(user)
|
||||
# This is the main check.
|
||||
for group_name, badge_id in lookup:
|
||||
if any([group.name == group_name for group in user.memberships]):
|
||||
results[group_name] = results.get(group_name, []) + [user]
|
||||
|
||||
for group in user.memberships:
|
||||
if group.name == 'packager':
|
||||
packager_id = group.id
|
||||
# This is special.. we're checking for being a packager-sponsor
|
||||
if not packager_id:
|
||||
for group in user.memberships:
|
||||
if group.name == 'packager':
|
||||
packager_id = group.id
|
||||
|
||||
for role in user.roles:
|
||||
if role.group_id == packager_id:
|
||||
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():
|
||||
d = {}
|
||||
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.
|
||||
#import shelve
|
||||
#d = shelve.open("fascache.db")
|
||||
#if not d:
|
||||
# print "fascache.db not found.. querying fas."
|
||||
# clas, sponsors, provenpackagers, proventesters = \
|
||||
# get_cla_signers(fas_credentials=dict(
|
||||
# username="ralph",
|
||||
# password=getpass.getpass(),
|
||||
# ))
|
||||
# d['clas'] = clas
|
||||
# d['sponsors'] = sponsors
|
||||
# d['provenpackagers'] = provenpackagers
|
||||
# d['proventesters'] = proventesters
|
||||
# d.sync()
|
||||
#else:
|
||||
# print "** using cached fas data **"
|
||||
# A mapping of fas groups to badge ids
|
||||
mapping = {
|
||||
'cla_done': 'involvement',
|
||||
'provenpackager': 'proven-packager',
|
||||
'proventesters': 'proven-tester',
|
||||
'ambassadors': 'ambassador',
|
||||
'sysadmin-main': 'trust-me-i-know-what-i-am-doing',
|
||||
'sysadmin-badges': 'inside-job',
|
||||
'sponsors': 'packager-sponsor',
|
||||
}
|
||||
|
||||
clas, sponsors, provenpackagers, proventesters = \
|
||||
d['clas'], d['sponsors'], \
|
||||
d['provenpackagers'], d['proventesters']
|
||||
results = get_fas_groupings(fas_credentials=fm_config['fas_credentials'],
|
||||
lookup=mapping)
|
||||
|
||||
print len(list(clas)), "clas in the end"
|
||||
print len(list(sponsors)), "sponsors in the end"
|
||||
print len(list(provenpackagers)), "provenpackagers in the end"
|
||||
print len(list(proventesters)), "proventesters in the end"
|
||||
for fas_group, members in results.iteritems():
|
||||
print fas_group, "had", len(members), "members for", mapping[fas_group]
|
||||
|
||||
badge = tahrir.get_badge(badge_id='involvement')
|
||||
hit_em_up(badge, clas)
|
||||
|
||||
badge = tahrir.get_badge(badge_id='packager-sponsor')
|
||||
hit_em_up(badge, sponsors)
|
||||
|
||||
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)
|
||||
for fas_group, members in results.iteritmes():
|
||||
print "processing", fas_group
|
||||
print "======================"
|
||||
badge = tahrir.get_badge(badge_id=mapping[fas_group])
|
||||
hit_em_up(badge, members)
|
||||
|
||||
|
||||
def hit_em_up(badge, group):
|
||||
|
@ -149,6 +127,7 @@ def hit_em_up(badge, group):
|
|||
transaction.abort()
|
||||
print "Failure:", e
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
uri = fm_config['badges_global']['database_uri']
|
||||
tahrir = TahrirDatabase(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue