def create_creator(creator_dict): creator_dict = dict(creator_dict) creator_dict.pop('id', None) with session_scope() as session: roles = creator_dict.pop('roles', None) related_creators = creator_dict.pop('related_creators', []) aliases = creator_dict.pop('aliases', []) new_creator = Creator(**creator_dict) session.add(new_creator) if roles: _update_roles_for_creator(session, roles, new_creator) if related_creators: related_creator_rows = session.query(Creator)\ .filter(Creator.id.in_(related_creators))\ .all() new_creator.related_creators = related_creator_rows if aliases: _update_creator_aliases(session, aliases, new_creator) session.commit() return new_creator.to_dict()