a little nicer wrt pep8
[sfa.git] / tools / reset_gids.py
1 #!/usr/bin/env python3
2 # -*- coding:utf-8 -*-
3
4 from sfa.storage.model import *
5 from sfa.storage.alchemy import *
6 from sfa.trust.gid import create_uuid
7 from sfa.trust.hierarchy import Hierarchy
8 from sfa.util.xrn import Xrn
9 from sfa.trust.certificate import Certificate, Keypair, convert_public_key
10
11
12 def fix_users():
13     s = global_dbsession
14     hierarchy = Hierarchy()
15     users = s.query(RegRecord).filter_by(type="user")
16     for record in users:
17         record.gid = ""
18         if not record.gid:
19             uuid = create_uuid()
20             pkey = Keypair(create=True)
21             pub_key = getattr(record, 'reg_keys', None)
22             if len(pub_key) > 0:
23                 # use only first key in record
24                 if pub_key and isinstance(pub_key, list):
25                     pub_key = pub_key[0]
26                 pub_key = pub_key.key
27                 pkey = convert_public_key(pub_key)
28             urn = Xrn(xrn=record.hrn, type='user').get_urn()
29             email = getattr(record, 'email', None)
30             gid_object = hierarchy.create_gid(urn, uuid, pkey, email=email)
31             gid = gid_object.save_to_string(save_parents=True)
32             record.gid = gid
33     s.commit()
34
35 if __name__ == '__main__':
36     fix_users()