def load_author(soup): """loads author from raw_poem file into db""" name = Parse.parse_name(soup) try: author = Author.query.filter_by(name = name).one() return author except NoResultFound: region = Parse.parse_region(soup) affiliation = Parse.parse_school(soup) try: region = Region.query.filter(Region.region_name == region).one().region_id except NoResultFound: log_err('region', name.encode('unicode-escape'), region) try: affiliation = Affiliation.query.filter(Affiliation.affiliation_name == affiliation).one().affiliation_id except NoResultFound: log_err('affiliation', name.encode('unicode-escape'), affiliation) author = Author(name=name, region_id=region, affiliation_id=affiliation) db.session.add(author) db.session.flush() return author except MultipleResultsFound: print 'multiple results found for author name. db corrupted. investigate!'