Make the badge SAR script working according to the set standards

Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
This commit is contained in:
Pierre-Yves Chibon 2018-05-18 10:19:58 +02:00
parent 1394618cfb
commit eb0a7caf45

View file

@ -2,37 +2,26 @@
""" This is a CLI script for getting all the details of a person
"""
from __future__ import print_function
import __main__
__main__.__requires__ = __requires__ = ["tahrir-api", "sqlalchemy>=0.7"]
import pkg_resources
pkg_resources.require(__requires__)
import argparse
import json
import os
import sys
from tahrir_api.dbapi import TahrirDatabase
import fedmsg
import fedmsg.config
import fedbadges.utils
def parse_args():
parser = argparse.ArgumentParser(__doc__)
parser.add_argument('--person', default=None, help="A person FAS username")
args = parser.parser_args()
return args
def initialize():
fm_config = fedmsg.config.load_config()
fm_config['cert_prefix'] = 'fedbadges'
fm_config['name'] = 'relay_inbound'
fm_config['active'] = True
fedmsg.init(**fm_config)
uri = fm_config['badges_global']['database_uri']
tahrir = TahrirDatabase(
uri,
@ -41,13 +30,19 @@ def initialize():
return tahrir
def main(tahrir, nickname):
def main():
tahrir = initialize()
nickname = os.getenv('SAR_USERNAME')
if not nickname:
print('An username is required to query datagrepper')
return 1
payload = {}
person = tahrir.get_person(nickname=nickname)
if not person:
print 'No such person %r' % nickname
sys.exit(1)
return 1
payload = {
'id': person.id,
@ -55,8 +50,8 @@ def main(tahrir, nickname):
'email': person.email,
'website': person.website,
'bio': person.bio,
'created_on': person.created_on,
'last_login': person.last_login,
'created_on': person.created_on.isoformat(),
'last_login': person.last_login.isoformat(),
'opt_out': person.opt_out,
'rank': person.rank,
'assertions': []
@ -69,23 +64,16 @@ def main(tahrir, nickname):
for assertion in assertions:
assertion_list.append({
'badge_id': assertion.badge_id,
'issued_on': assertion.issued_on
'issued_on': assertion.issued_on.isoformat()
})
payload['assertions'] = assertion_list
print json.dumps(payload)
print(json.dumps(
payload, sort_keys=True, indent=4, separators=(',', ': ')
).encode('utf-8'))
if __name__ == '__main__':
args = parse_args()
if not args.person:
nickname = os.environ['BADGE_USER']
if nickname is None:
print "You must specify a person id."
sys.exit(1)
else:
nickname = args.person
sys.exit(main())
tahrir = initialize()
main(tahrir, nickname)