Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)