def es_query(self, paginated):
        reviewed_form_ids = get_form_ids_by_status(
            self.domain, getattr(self, 'display_status', None))
        if len(reviewed_form_ids) > 0:
            if not getattr(self, 'es_response', None):
                date_tuple = _get_date_range(
                    self.request_params.get('range', None))
                filtered_case_ids = self._get_filtered_cases(
                    date_tuple[0], date_tuple[1])
                location_ids = get_location_hierarchy_by_id(
                    self.request_params.get("location_id", None),
                    self.domain,
                    CCT_only=True)
                q = _get_report_query(date_tuple[0], date_tuple[1],
                                      filtered_case_ids, location_ids)

                if len(reviewed_form_ids) > 0:
                    q["filter"]["and"].append(
                        {"ids": {
                            "values": reviewed_form_ids
                        }})

                q["sort"] = self.get_sorting_block() if self.get_sorting_block(
                ) else [{
                    "form.meta.timeEnd": {
                        "order": "desc"
                    }
                }]
                if paginated:
                    self.es_response = es_query(
                        params={"domain.exact": self.domain},
                        q=q,
                        es_url=ES_URLS.get('forms'),
                        start_at=self.pagination.start,
                        size=self.pagination.count)
                else:
                    self.es_response = es_query(
                        params={"domain.exact": self.domain},
                        q=q,
                        es_url=ES_URLS.get('forms'))
        else:
            self.es_response = {'hits': {'total': 0}}

        return self.es_response
    def es_query(self, paginated):
        if not getattr(self, 'es_response', None):
            date_tuple = _get_date_range(self.request_params.get(
                'range', None))
            filtered_case_ids = self._get_filtered_cases(
                date_tuple[0], date_tuple[1])
            location_ids = get_location_hierarchy_by_id(
                self.request_params.get("location_id", None),
                self.domain,
                CCT_only=True)
            q = _get_report_query(date_tuple[0], date_tuple[1],
                                  filtered_case_ids, location_ids)

            xmlnss = _get_relevant_xmlnss_for_service_type(
                self.request.GET.get("service_type_filter"))
            if xmlnss:
                q["filter"]["and"].append({"terms": {"xmlns.exact": xmlnss}})

            modify_close = filter(None, [u'Modify/Close Client'])
            q["filter"]["and"].append(
                {"not": {
                    "terms": {
                        "form.@name": modify_close
                    }
                }})

            q["sort"] = self.get_sorting_block() \
                if self.get_sorting_block() else [{"form.meta.timeEnd": {"order": "desc"}}]
            if paginated:
                self.es_response = es_query(
                    params={"domain.exact": self.domain},
                    q=q,
                    es_url=ES_URLS.get('forms'),
                    start_at=self.pagination.start,
                    size=self.pagination.count)
            else:
                self.es_response = es_query(
                    params={"domain.exact": self.domain},
                    q=q,
                    es_url=ES_URLS.get('forms'))
        return self.es_response
    def _get_filtered_cases(self, start_date, end_date):
        query = {
            "query": {
                "bool": {
                    "must_not": [{
                        "range": {
                            "modified_on.date": {
                                "lt": start_date
                            }
                        }
                    }, {
                        "range": {
                            "opened_on.date": {
                                "gt": end_date
                            }
                        }
                    }]
                }
            }
        }

        case_search = self.request.GET.get("case_search", "")
        if len(case_search) > 0:
            query["filter"] = {
                "and": [{
                    "regexp": {
                        "name.exact": ".*?%s.*?" % case_search
                    }
                }]
            }

        es_response = es_query(params={"domain.exact": self.domain},
                               q=query,
                               es_url=ES_URLS.get('cases'))
        return [
            res['_source']['_id']
            for res in es_response.get('hits', {}).get('hits', [])
        ]
Ejemplo n.º 4
0
    def es_query(self, paginated):
        if not getattr(self, 'es_response', None):
            date_tuple = _get_date_range(self.request_params.get('range', None))
            filtered_case_ids = self._get_filtered_cases(date_tuple[0], date_tuple[1])
            location_ids = get_location_hierarchy_by_id(self.request_params.get("location_id", None), self.domain,
                                                        CCT_only=True)
            q = _get_report_query(date_tuple[0], date_tuple[1], filtered_case_ids, location_ids)

            xmlnss = _get_relevant_xmlnss_for_service_type(self.request.GET.get("service_type_filter"))
            if xmlnss:
                q["filter"]["and"].append({"terms": {"xmlns.exact": xmlnss}})

            modify_close = filter(None, [u'Modify/Close Client'])
            q["filter"]["and"].append({"not": {"terms": {"form.@name": modify_close}}})

            q["sort"] = self.get_sorting_block() \
                if self.get_sorting_block() else [{"form.meta.timeEnd": {"order": "desc"}}]
            if paginated:
                self.es_response = es_query(params={"domain.exact": self.domain}, q=q, es_url=ES_URLS.get('forms'),
                                            start_at=self.pagination.start, size=self.pagination.count)
            else:
                self.es_response = es_query(params={"domain.exact": self.domain}, q=q, es_url=ES_URLS.get('forms'))
        return self.es_response
Ejemplo n.º 5
0
    def es_query(self, paginated):
        reviewed_form_ids = get_form_ids_by_status(self.domain, getattr(self, 'display_status', None))
        if len(reviewed_form_ids) > 0:
            if not getattr(self, 'es_response', None):
                date_tuple = _get_date_range(self.request_params.get('range', None))
                filtered_case_ids = self._get_filtered_cases(date_tuple[0], date_tuple[1])
                location_ids = get_location_hierarchy_by_id(self.request_params.get("location_id", None), self.domain,
                                                            CCT_only=True)
                q = _get_report_query(date_tuple[0], date_tuple[1], filtered_case_ids, location_ids)

                if len(reviewed_form_ids) > 0:
                    q["filter"]["and"].append({"ids": {"values": reviewed_form_ids}})

                q["sort"] = self.get_sorting_block() if self.get_sorting_block() else [{"form.meta.timeEnd" : {"order": "desc"}}]
                if paginated:
                    self.es_response = es_query(params={"domain.exact": self.domain}, q=q, es_url=ES_URLS.get('forms'),
                                                start_at=self.pagination.start, size=self.pagination.count)
                else:
                    self.es_response = es_query(params={"domain.exact": self.domain}, q=q, es_url=ES_URLS.get('forms'))
        else:
            self.es_response = {'hits': {'total': 0}}

        return self.es_response
Ejemplo n.º 6
0
    def es_query(self, paginated):
        if not getattr(self, 'es_response', None):
            range = self.request_params.get('range', None)
            start_date = None
            end_date = None
            if range is not None:
                dates = str(range).split(_(" to "))
                start_date = dates[0]
                end_date = dates[1]
            filtered_case_ids = self._get_filtered_cases(start_date, end_date)
            exclude_form_ids = [mcct_status.form_id for mcct_status in McctStatus.objects.filter(
                domain=self.domain, received_on__range=(start_date, end_date))
                                if (mcct_status.status != "eligible" or
                                    (mcct_status.immunized == False and
                                    (date.today() - mcct_status.registration_date).days < 272 and
                                     mcct_status.is_booking == False))]
            location_ids = get_location_hierarchy_by_id(self.request_params.get("location_id", None), self.domain,
                                                        CCT_only=True)
            q = _get_report_query(start_date, end_date, filtered_case_ids, location_ids)

            if len(exclude_form_ids) > 0:
                q["filter"]["and"].append({"not": {"ids": {"values": exclude_form_ids}}})

            xmlnss = _get_relevant_xmlnss_for_service_type(self.request.GET.get("service_type_filter"))
            if xmlnss:
                q["filter"]["and"].append({"terms": {"xmlns.exact": xmlnss}})

            modify_close = filter(None, [u'Modify/Close Client'])
            q["filter"]["and"].append({"not": {"terms": {"form.@name": modify_close}}})

            q["sort"] = self.get_sorting_block() \
                if self.get_sorting_block() else [{"form.meta.timeEnd" : {"order": "desc"}}]

            if paginated:
                self.es_response = es_query(params={"domain.exact": self.domain}, q=q, es_url=ES_URLS.get('forms'),
                                            start_at=self.pagination.start, size=self.pagination.count)
            else:
                self.es_response = es_query(params={"domain.exact": self.domain}, q=q, es_url=ES_URLS.get('forms'))
        return self.es_response
Ejemplo n.º 7
0
        def _get_filtered_cases(self, start_date, end_date):
            query = {
                "query": {
                    "bool": {
                        "must_not": [
                            {"range": {"modified_on.date": {"lt": start_date}}},
                            {"range": {"opened_on.date": {"gt": end_date}}}
                        ]
                    }
                }
            }

            case_search = self.request.GET.get("case_search", "")
            if len(case_search) > 0:
                query["filter"] = {
                    "and": [
                        {"regexp": {"name.exact": ".*?%s.*?" % case_search}}
                    ]
                }

            es_response = es_query(params={"domain.exact": self.domain}, q=query, es_url=ES_URLS.get('cases'))
            return [res['_source']['_id'] for res in es_response.get('hits', {}).get('hits', [])]
    def es_query(self, paginated):
        if not getattr(self, 'es_response', None):
            range = self.request_params.get('range', None)
            start_date = None
            end_date = None
            if range is not None:
                dates = str(range).split(_(" to "))
                start_date = dates[0]
                end_date = dates[1]
            filtered_case_ids = self._get_filtered_cases(start_date, end_date)
            exclude_form_ids = [
                mcct_status.form_id
                for mcct_status in McctStatus.objects.filter(
                    domain=self.domain,
                    received_on__range=(start_date, end_date))
                if (mcct_status.status != "eligible" or (
                    mcct_status.immunized == False and
                    (date.today() - mcct_status.registration_date).days < 272
                    and mcct_status.is_booking == False))
            ]
            location_ids = get_location_hierarchy_by_id(
                self.request_params.get("location_id", None),
                self.domain,
                CCT_only=True)
            q = _get_report_query(start_date, end_date, filtered_case_ids,
                                  location_ids)
            if len(exclude_form_ids) > 0:
                q["filter"]["and"].append(
                    {"not": {
                        "ids": {
                            "values": exclude_form_ids
                        }
                    }})

            xmlnss = _get_relevant_xmlnss_for_service_type(
                self.request.GET.get("service_type_filter"))
            if xmlnss:
                q["filter"]["and"].append({"terms": {"xmlns.exact": xmlnss}})

            modify_close = filter(None, [u'Modify/Close Client'])
            q["filter"]["and"].append(
                {"not": {
                    "terms": {
                        "form.@name": modify_close
                    }
                }})

            q["sort"] = self.get_sorting_block() \
                if self.get_sorting_block() else [{"form.meta.timeEnd" : {"order": "desc"}}]

            if paginated:
                self.es_response = es_query(
                    params={"domain.exact": self.domain},
                    q=q,
                    es_url=ES_URLS.get('forms'),
                    start_at=self.pagination.start,
                    size=self.pagination.count)
            else:
                self.es_response = es_query(
                    params={"domain.exact": self.domain},
                    q=q,
                    es_url=ES_URLS.get('forms'))
        return self.es_response