

@classmethod
def user_es_query(cls, domain, mobile_user_and_group_slugs):
    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)
    user_type_filters = []
    if (HQUserType.ADMIN in user_types):
        user_type_filters.append(user_es.admin_users())
    if (HQUserType.UNKNOWN in user_types):
        user_type_filters.append(user_es.unknown_users())
        user_type_filters.append(user_es.web_users())
    if (HQUserType.DEMO_USER in user_types):
        user_type_filters.append(user_es.demo_users())
    q = user_es.UserES().domain(domain)
    if (HQUserType.REGISTERED in user_types):
        user_type_filters.append(user_es.mobile_users())
        return q.OR(*user_type_filters)
    else:
        id_filter = filters.OR(filters.term('_id', user_ids), filters.term('__group_ids', group_ids))
        if user_type_filters:
            return q.OR(id_filter, filters.OR(*user_type_filters))
        else:
            return q.filter(id_filter)

dataset/ETHPy150Open dimagi/commcare-hq/corehq/apps/reports/filters/users.py ExpandedMobileWorkerFilter.user_es_query/original