forked from ourresearch/impactstory-tng
-
Notifications
You must be signed in to change notification settings - Fork 0
/
create_person.py
55 lines (36 loc) · 1.39 KB
/
create_person.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from time import time
from app import db
from util import elapsed
from util import safe_commit
import argparse
from models.person import add_or_overwrite_person_from_orcid_id
from models.orcid import clean_orcid
from models.orcid import NoOrcidException
# needs to be imported so the definitions get loaded into the registry
import jobs_defs
"""
Call from command line to add ORCID profiles based on IDs in a local CSV.
"""
def create_person(dirty_orcid, campaign=None):
try:
orcid_id = clean_orcid(dirty_orcid)
except NoOrcidException:
print u"\n\nWARNING: no valid orcid_id in {}; skipping\n\n".format(dirty_orcid)
raise
my_person = add_or_overwrite_person_from_orcid_id(orcid_id, high_priority=False)
if campaign:
my_person.campaign = campaign
db.session.add(my_person)
success = safe_commit(db)
if not success:
print u"ERROR! committing {}".format(my_person.orcid_id)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Run stuff.")
# just for updating lots
parser.add_argument('orcid_id', type=str, help="ORCID ID to build")
parser.add_argument('--campaign', type=str, help="name of campaign")
parsed = parser.parse_args()
start = time()
create_person(parsed.orcid_id, parsed.campaign)
db.session.remove()
print "finished update in {}sec".format(elapsed(start))