def pull(): """ Pull all elvanto people into db, then pull down groups to add people. Then iterate through them to add them to the correct groups """ data = e_api("people/getAll", page_size=settings.ELVANTO_PEOPLE_PAGE_SIZE) people = data['people'] num_synced = people["on_this_page"] page = 2 while num_synced < people["total"]: more_data = e_api("people/getAll", page_size=settings.ELVANTO_PEOPLE_PAGE_SIZE, page=page) for person in more_data["people"]["person"]: people["person"].append(person) num_synced += more_data["people"]["on_this_page"] page += 1 for e_prsn in people['person']: prsn, created = ElvantoPerson.objects.get_or_create(e_id=e_prsn['id']) prsn.first_name = e_prsn['firstname'].strip() prsn.preferred_name = e_prsn['preferred_name'].strip() prsn.last_name = e_prsn['lastname'].strip() prsn.save()
def remove_people(self, ids_to_remove=None): if ids_to_remove is None: return print( 'Removing {0} from {1}'.format( str(ids_to_remove), str(self.main_group) ) ) for p_id in ids_to_remove: e_api( "groups/removePerson", id=self.main_group.e_id, person_id=p_id )
def add_people(self, ids_to_add=None): if ids_to_add is None: return print( 'Adding {0} to {1}'.format( str(ids_to_add), str(self.main_group) ) ) for p_id in ids_to_add: e_api( "groups/addPerson", id=self.main_group.e_id, person_id=p_id )
def pull(): """ Pull all elvanto groups and create entries in local db. """ data = e_api("groups/getAll") for e_grp in data['groups']['group']: grp, created = ElvantoGroup.objects.get_or_create(e_id=e_grp['id']) grp.name = e_grp['name'].encode('utf-8', 'replace').strip() grp.save()
def populate(): data = e_api("groups/getAll", fields=['people']) if data['status'] == 'ok': for grp in data['groups']['group']: grp_obj = ElvantoGroup.objects.get(e_id=grp["id"]) grp_obj.group_members.clear() if len(grp['people']) > 0: for x in grp['people']['person']: prsn = ElvantoPerson.objects.get(e_id=x['id']) prsn.elvanto_groups.add(grp_obj) prsn.save()