def migrate_committees(state): def attach_members(committee, org): for member in committee['members']: osid = member.get('leg_id', None) person_id = lookup_entry_id('people', osid) if person_id: m = Membership(person_id, org._id) save_object(m) spec = {"subcommittee": None} if state: spec['state'] = state for committee in db.committees.find(spec): # OK, we need to do the root committees first, so that we have IDs that # we can latch onto down below. org = Organization(committee['committee'], classification="committee") org.parent_id = lookup_entry_id('organizations', committee['state']) org.openstates_id = committee['_id'] org.sources = committee['sources'] # Look into posts; but we can't be sure. save_object(org) attach_members(committee, org) spec.update({"subcommittee": {"$ne": None}}) for committee in db.committees.find(spec): org = Organization(committee['subcommittee'], classification="committee") org.parent_id = lookup_entry_id( 'organizations', committee['parent_id'] ) or lookup_entry_id( 'organizations', committee['state'] ) org.openstates_id = committee['_id'] org.sources = committee['sources'] # Look into posts; but we can't be sure. save_object(org) attach_members(committee, org)