badges: Add a GDPR SAR script for Badges
Signed-off-by: Sayan Chowdhury <sayan.chowdhury2012@gmail.com>
This commit is contained in:
parent
a4991341c9
commit
6715f6ce19
4 changed files with 109 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
91
roles/badges/backend/files/get-sar-person-details
Normal file
91
roles/badges/backend/files/get-sar-person-details
Normal 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)
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue