示例#1
0
    def _get_users_filter(self, mobile_user_and_group_slugs):
        user_ids = (EMWF.user_es_query(
            self.domain, mobile_user_and_group_slugs,
            self.request.couch_user).values_list('_id', flat=True))
        track_es_report_load(self.domain, self.slug, len(user_ids))
        if HQUserType.UNKNOWN in EMWF.selected_user_types(
                mobile_user_and_group_slugs):
            user_ids.append(SYSTEM_USER_ID)

        return form_es.user_id(user_ids)
示例#2
0
    def _build_query(self):
        query = (self.search_class().domain(self.domain).size(
            self.pagination.count).start(self.pagination.start))
        query.es_query['sort'] = self.get_sorting_block()
        mobile_user_and_group_slugs = self.request.GET.getlist(EMWF.slug)

        if self.case_filter:
            query = query.filter(self.case_filter)

        query = query.NOT(case_es.case_type("user-owner-mapping-case"))

        if self.case_type:
            query = query.case_type(self.case_type)

        if self.case_status:
            query = query.is_closed(self.case_status == 'closed')

        case_owner_filters = []

        if (self.request.can_access_all_locations
                and EMWF.show_project_data(mobile_user_and_group_slugs)):
            case_owner_filters.append(
                all_project_data_filter(self.domain,
                                        mobile_user_and_group_slugs))

        if (self.request.can_access_all_locations
                and EMWF.show_deactivated_data(mobile_user_and_group_slugs)):
            case_owner_filters.append(deactivated_case_owners(self.domain))

        # Only show explicit matches
        if (EMWF.selected_user_ids(mobile_user_and_group_slugs)
                or EMWF.selected_user_types(mobile_user_and_group_slugs)
                or EMWF.selected_group_ids(mobile_user_and_group_slugs)
                or EMWF.selected_location_ids(mobile_user_and_group_slugs)):
            track_es_report_load(self.domain, self.slug, len(self.case_owners))
            case_owner_filters.append(case_es.owner(self.case_owners))

        query = query.OR(*case_owner_filters)

        if not self.request.can_access_all_locations:
            query = query_location_restricted_cases(query, self.request)

        search_string = CaseSearchFilter.get_value(self.request, self.domain)
        if search_string:
            query = query.set_query({"query_string": {"query": search_string}})

        return query