def config_by_search(): """Create a RDF Graph configuration file by searching for Orcid user.""" orcid_profile = orcid_search(sandbox=False) turtle_data = orcid_profile.get_turtle() config_file = ConfigManager() config_file.get_config(_id=orcid_profile.orcid_id, _data=turtle_data) config_file.write_config()
def config_by_search(): """Create a RDF Graph configuration file by searching for Orcid user.""" orcid_profile = orcid_search(sandbox=False) if orcid_profile is not None: orcid_manager = OrcidManager(sandbox=False, orcid_id=orcid_profile) turtle_data = orcid_manager.get_turtle() config_file = ConfigManager() config_file.config_obj = turtle_data config_file.write_config() else: print("Sorry, ORCID returned no resutls for that user information.")
def config_by_id(orcid_id): """Create a RDF Graph configuration file by Orcid ID. :param orcid_id: string Orcid ID used for the configuration file ID and to create the configuration file. """ # Make sure sandbox variable is set correctly in cli.py before testing orcid_profile = OrcidManager(orcid_id=orcid_id, sandbox=False) turtle_data = orcid_profile.get_turtle() config_file = ConfigManager() config_file.get_config(_id=orcid_profile.orcid_id, _data=turtle_data) config_file.write_config()
def config_by_email(email): """Create a RDF Graph configuration file by Orcid email. :param email: string Orcid email address used to create a configuration file. """ # Make sure sandbox variable is set correctly in cli.py before testing email = 'email:' + email orcid_profile = OrcidManager(orcid_email=email, sandbox=False) turtle_data = orcid_profile.get_turtle() config_file = ConfigManager() config_file.get_config(_id=orcid_profile.orcid_id, _data=turtle_data) config_file.write_config()
def advanced_search(query, record_type): """ Function for initializing an advanced search for an orcid id. Utilizes OrcidSearchResults() class from search.py Parameters ---------- :param query: string Orcid ID inputted by user :param record_type: string User selected record_type that they want to display. Must have corresponding put-code Returns ------- :returns: no return. Will write to file for a 'activities' record, or print record to screen for all other records. Will prompt user to see if they would like to write customer records to file. A large amount of information can be gathered for a 'activities' record_type. The only option allowed at this time is for the JSON output to be written to a JSON file. """ search_obj = OrcidSearchResults(sandbox) # Will be 'not None' only if record type is other than 'activities' if record_type == 'write-rdf': config = ConfigManager(orcid_id=query, sandbox=sandbox) config.write_config() elif record_type == 'read-rdf': config = ConfigManager(orcid_id=query, sandbox=sandbox) rdf_graph = config.read_config() print rdf_graph elif record_type is not None: put_code = click.prompt('Please enter the put-code (must match record type)') results = search_obj.advanced_search(query, record_type, put_code) print('') print(json.dumps(results, sort_keys=True, indent=4, ensure_ascii=False)) # Ask user if they would like to send this information to file while True: send_to_file = click.prompt('Would you like to send this output to a file [y/N]?', default='N', show_default=False) if send_to_file in ('y', 'Y', 'yes', 'YES', 'Yes'): with io.open(query + '_' + record_type + '_' + put_code + '.json', 'w', encoding='utf8') \ as json_file: data = json.dumps(results, json_file, sort_keys=True, indent=4, ensure_ascii=False) # unicode(data) auto-decodes data to unicode if str json_file.write(unicode(data)) break elif send_to_file in ('n', 'N', 'no', 'NO', 'No'): break else: print('You did not pick an appropriate answer.') else: # When 'activities' (option 1 - summary) is selected, prints to file results = search_obj.advanced_search(query) home_path = expanduser("~") dir_path = home_path + "/.sc/" filename = query + '.json' if os.path.exists(dir_path): config_path = dir_path + filename else: os.mkdir(home_path + "/.sc/") config_path = dir_path + filename with io.open(config_path, 'w', encoding='utf8') as json_file: data = json.dumps(results, json_file, sort_keys=True, indent=4, ensure_ascii=False) # unicode(data) auto-decodes data to unicode if str json_file.write(unicode(data)) # Ask user if they would like to go back to the advanced search selection menu while True: new_instance = click.prompt('Back to \'Selection\' menu [y/EXIT]?', default='EXIT', show_default=False) print('') if new_instance in ('y', 'Y', 'yes', 'YES', 'Yes'): search_type(args = ['-a']) break elif new_instance in ('exit', 'EXIT', 'Exit'): exit(1) else: print('You did not pick an appropriate answer.')
def basic_search_config(query): """ Function for initializing a search for an orcid id, and then creates a RDF configuration file automatically. Parameters ---------- :param query: string Query built from user input. Returns ------- :returns: no return. """ # Initialize and populate all variables and dictionaries search_obj = OrcidSearchResults(sandbox) search_obj.basic_search(query) actual_total = search_obj.actual_total_results total_results = search_obj.total_results # orcid_id = search_obj.orcid_id # Print results search_obj.print_basic_alt() # Print total results if actual results are above 100 if total_results < actual_total: print 'Actual Total Results: {}'.format(actual_total) print('') # Get list of Orcid ID's from results id_list = search_obj.orcid_id # Write config if only one result was found if total_results == 1: orcid_id = id_list[0] config = ConfigManager(orcid_id=orcid_id, sandbox=sandbox) config.write_config() # If no results are found elif total_results == 0: print("No results where found. Please try again.\n") search_type(args = ['-c']) # Allow user to select Orcid profile if multiple results are found else: id_dict = dict() # Get list of Orcid ID's and correspond count with ID for i, id in enumerate(id_list): id_dict[i + 1] = id selected = None while not selected: try: selected = click.prompt('Select the result # of the record (Type "N" for another search, "Exit" to abort)') print("") orcid_id = id_dict[int(selected)] config = ConfigManager(orcid_id=orcid_id, sandbox=sandbox) config.write_config() except (KeyError): print('That is not a valid selection. Please try again.\n') selected = None except (ValueError): if selected in ('N', 'n'): search_type(args = ['-c']) elif selected in ('exit', 'Exit', 'EXIT'): exit() else: print('That is not a valid selection. Please try again.\n') selected = None
def config_by_email(orcid_email): """Create a RDF Graph configuration file by Orcid email.""" # Make sure sandbox variable is set correctly in cli.py before testing email = 'email:' + orcid_email config = ConfigManager(orcid_email=email, sandbox=sandbox) config.write_config()
def config_by_id(id): """Create a RDF Graph configuration file by Orcid ID.""" # Make sure sandbox variable is set correctly in cli.py before testing config = ConfigManager(orcid_id=id, sandbox=sandbox) config.write_config()