badges: Add a GDPR SAR script for Badges

Signed-off-by: Sayan Chowdhury <sayan.chowdhury2012@gmail.com>
This commit is contained in:
Sayan Chowdhury 2018-05-17 20:59:03 +05:30 committed by Sayan Chowdhury
parent a4991341c9
commit 6715f6ce19
4 changed files with 109 additions and 1 deletions

View file

@ -8,3 +8,8 @@ volgroup: /dev/vg_guests
eth0_ip: 10.5.126.100
vmhost: virthost19.phx2.fedoraproject.org
datacenter: phx2
# GDPR SAR variables
sar_script: /usr/local/bin/get-sar-person-details
sar_script_user: fedmsg
sar_output_file: badges.json

View file

@ -40,6 +40,7 @@ retrace01.qa.fedoraproject.org
retrace02.qa.fedoraproject.org
[sar]
badges-backend01.phx2.fedoraproject.org
bodhi-backend02.phx2.fedoraproject.org
mailman01.phx2.fedoraproject.org

View file

@ -0,0 +1,91 @@
#!/usr/bin/env python
""" This is a CLI script for getting all the details of a person
"""
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,
notification_callback=fedbadges.utils.notification_callback,
)
return tahrir
def main(tahrir, nickname):
payload = {}
person = tahrir.get_person(nickname=nickname)
if not person:
print 'No such person %r' % nickname
sys.exit(1)
payload = {
'id': person.id,
'nickname': nickname,
'email': person.email,
'website': person.website,
'bio': person.bio,
'created_on': person.created_on,
'last_login': person.last_login,
'opt_out': person.opt_out,
'rank': person.rank,
'assertions': []
}
assertions = tahrir.get_assertions_by_email(person.email)
if assertions:
assertion_list = []
for assertion in assertions:
assertion_list.append({
'badge_id': assertion.badge_id,
'issued_on': assertion.issued_on
})
payload['assertions'] = assertion_list
print json.dumps(payload)
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
tahrir = initialize()
main(tahrir, nickname)

View file

@ -169,4 +169,15 @@
- badges
- badges/backend
- name: copy get-sar-person-details
copy: >
src=get-sar-person-details
dest=/usr/local/bin/get-sar-person-details
owner=fedmsg
group=fedmsg
mode=700
tags:
- scripts
- badges
- badges/backend
- sar