def _spay_cats(openfile): projects = get_projects(openfile) split_projects = [] for project in projects: try: coversheet = get_coversheet_info(project['legacy_id']) except IOError: coversheet = {} if not coversheet: try: coversheet = get_coversheet_info(project['proposal_id']) except IOError: coversheet = {} cats = coversheet.get('categories', []) count = float(len(cats)) for cat in cats: shared_project = copy.deepcopy(project) shared_project['category'] = cat for key in ('hours',): hours = float(project[key] or 0) / count if int(hours) == float(hours): hours = int(hours) shared_project[key] = str(hours) split_projects.append(shared_project) if not cats: split_projects.append(project) write_projects(split_projects, fieldnames=category_fields)
def _share_authors(openfile=sys.stdin, pi_only=False): keys = ('professional_status_type', 'affiliation_name', 'domestic', 'country',) projects = get_projects(openfile) new_projects = [] for project in projects: try: authors = get_authors_info(project['legacy_id'], tel=project['tel']) except IOError: authors = [] try: coversheet = get_coversheet_info(project['legacy_id']) except IOError: coversheet = {} if not authors: try: authors = get_authors_info(project['proposal_id'], tel=project['tel']) except IOError: authors = [] try: coversheet = get_coversheet_info(project['proposal_id']) except IOError: coversheet = {} legacy_id = coversheet.get('legacy_id', project['legacy_id']) if len(authors) > 1 and pi_only: pi_id = coversheet.get('pi', '-1') authors = [author for author in authors if author.get('astronomer_id', '-2') == pi_id] count = len(authors) for author in authors: for key in keys: project[key] = author[key] project['legacy_id'] = legacy_id iso_country = iso.country_iso.get(project['country'], '') project['iso_country'] = iso_country new_projects.append(project) if not authors: new_projects.append(project) write_projects(new_projects, fieldnames=author_fields)
def _resolve_proposal_ids(openfile=sys.stdin): projects = get_projects(openfile) resolved_projects = [] for project in projects: proposal_id = project['proposal_id'] if proposal_id and not project.get('legacy_id', ''): print >>sys.stderr, proposal_id # remove files manually first... lame, I know. get_coversheet_file(proposal_id) coversheet = get_coversheet_info(proposal_id) project['legacy_id'] = coversheet.get('legacy_id', '') resolved_projects.append(project) write_projects(resolved_projects, fieldnames=project_fields)