예제 #1
0
    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,
        )
예제 #2
0
    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,
        )