def pull_users_and_groups(cls, domain, mobile_user_and_group_slugs, include_inactive=False, limit_user_ids=None): user_ids = set(cls.selected_user_ids(mobile_user_and_group_slugs)) user_types = cls.selected_user_types(mobile_user_and_group_slugs) group_ids = cls.selected_group_ids(mobile_user_and_group_slugs) location_ids = cls.selected_location_ids(mobile_user_and_group_slugs) users = [] if location_ids: user_ids |= set( user_ids_at_locations_and_descendants(location_ids)) if limit_user_ids: user_ids = set(limit_user_ids).intersection(user_ids) if user_ids or HQUserType.REGISTERED in user_types: users = util.get_all_users_by_domain( domain=domain, user_ids=user_ids, simplified=True, CommCareUser=CommCareUser, ) user_filter = tuple( [HQUserToggle(id, id in user_types) for id in range(4)]) other_users = util.get_all_users_by_domain( domain=domain, user_filter=user_filter, simplified=True, CommCareUser=CommCareUser, include_inactive=include_inactive) groups = [Group.get(g) for g in group_ids] all_users = users + other_users user_dict = {} for group in groups: users_in_group = util.get_all_users_by_domain(group=group, simplified=True) if limit_user_ids: users_in_group = filter( lambda user: user['user_id'] in limit_user_ids, users_in_group) user_dict["%s|%s" % (group.name, group._id)] = users_in_group users_in_groups = flatten_list(user_dict.values()) users_by_group = user_dict combined_users = remove_dups(all_users + users_in_groups, "user_id") return _UserData( users=all_users, admin_and_demo_users=other_users, groups=groups, users_by_group=users_by_group, combined_users=combined_users, )
def pull_users_and_groups(cls, domain, mobile_user_and_group_slugs, include_inactive=False, limit_user_ids=None): user_ids = cls.selected_user_ids(mobile_user_and_group_slugs) user_types = cls.selected_user_types(mobile_user_and_group_slugs) group_ids = cls.selected_group_ids(mobile_user_and_group_slugs) users = [] if limit_user_ids: user_ids = set(limit_user_ids).intersection(set(user_ids)) if user_ids or HQUserType.REGISTERED in user_types: users = util.get_all_users_by_domain( domain=domain, user_ids=user_ids, simplified=True, CommCareUser=CommCareUser, ) user_filter = tuple([HQUserToggle(id, id in user_types) for id in range(4)]) other_users = util.get_all_users_by_domain( domain=domain, user_filter=user_filter, simplified=True, CommCareUser=CommCareUser, include_inactive=include_inactive ) groups = [Group.get(g) for g in group_ids] all_users = users + other_users user_dict = {} for group in groups: user_dict["%s|%s" % (group.name, group._id)] = util.get_all_users_by_domain( group=group, simplified=True ) users_in_groups = flatten_list(user_dict.values()) users_by_group = user_dict combined_users = remove_dups(all_users + users_in_groups, "user_id") return _UserData( users=all_users, admin_and_demo_users=other_users, groups=groups, users_by_group=users_by_group, combined_users=combined_users, )