def handle(self, *args, **options):
        start = options['startdate']
        end = options['enddate']

        print 'Starting...\n'
        ids = get_build_ids(start, end)

        print 'Checking {} builds\n'.format(len(ids))
        case_types_by_domain = {}
        all_form_xmlns = set()
        for build in iter_docs(Application.get_db(), ids):
            domain = build.get('domain')
            errors = forms_with_empty_case_block(build)
            if not errors:
                continue

            case_types, form_xmlns = errors
            all_form_xmlns |= form_xmlns
            domain_case_counts = case_types_by_domain.setdefault(domain, {})
            case_counts = {
                case_type: get_number_of_cases_in_domain(domain, case_type)
                for case_type in case_types
                if case_type not in domain_case_counts
            }
            domain_case_counts.update(case_counts)

        import pprint
        pprint.pprint(case_types_by_domain)

        print

        print all_form_xmlns
    def update_indicators_for_case_type(self, case_type, domain):
        print "\n\n\nFetching %s cases in domain %s...." % (case_type, domain)
        relevant_indicators = CaseIndicatorDefinition.get_all(
            namespace=MVP.NAMESPACE, domain=domain, case_type=case_type
        )

        if relevant_indicators:
            num_cases = get_number_of_cases_in_domain(domain, type=case_type)

            print ("\nFound the following Case Indicator Definitions " "for Case Type %s in Domain %s") % (
                case_type,
                domain,
            )
            print "--%s\n" % "\n--".join([i.slug for i in relevant_indicators])

            print "Found %d possible cases for update." % num_cases
            case_ids = get_case_ids_in_domain(domain, type=case_type)

            self._throttle_updates(
                "Cases of type %s in %s" % (case_type, domain),
                relevant_indicators,
                num_cases,
                domain,
                case_ids,
                CommCareCase,
            )
示例#3
0
 def test_get_number_of_cases_in_domain__type(self):
     self.assertEqual(
         get_number_of_cases_in_domain(self.domain, type='type1'),
         len([
             case for case in self.cases
             if case.domain == self.domain and case.type == 'type1'
         ]))
示例#4
0
    def handle(self, *args, **options):
        start = options['startdate']
        end = options['enddate']

        print 'Starting...\n'
        ids = get_build_ids(start, end)

        print 'Checking {} builds\n'.format(len(ids))
        case_types_by_domain = {}
        all_form_xmlns = set()
        for build in iter_docs(Application.get_db(), ids):
            domain = build.get('domain')
            errors = forms_with_empty_case_block(build)
            if not errors:
                continue

            case_types, form_xmlns = errors
            all_form_xmlns |= form_xmlns
            domain_case_counts = case_types_by_domain.setdefault(domain, {})
            case_counts = {
                case_type: get_number_of_cases_in_domain(domain, case_type)
                for case_type in case_types
                if case_type not in domain_case_counts
            }
            domain_case_counts.update(case_counts)

        import pprint
        pprint.pprint(case_types_by_domain)

        print

        print all_form_xmlns
示例#5
0
    def get_pact_cases(cls):
        # query couch to get reduce count of all PACT cases
        case_es = ReportCaseES(PACT_DOMAIN)
        # why 'or 100'??
        total_count = \
            get_number_of_cases_in_domain('pact', type=PACT_CASE_TYPE) or 100
        fields = ['_id', 'name', 'pactid.#value']
        query = case_es.base_query(terms={'type': PACT_CASE_TYPE},
                                   fields=fields,
                                   start=0,
                                   size=total_count)
        query['filter']['and'].append({"prefix": {"dot_status.#value": "dot"}})

        results = case_es.run_query(query)
        for res in results['hits']['hits']:
            yield res['fields']
示例#6
0
    def get_pact_cases(cls):
        # query couch to get reduce count of all PACT cases
        case_es = ReportCaseES(PACT_DOMAIN)
        # why 'or 100'??
        total_count = \
            get_number_of_cases_in_domain('pact', type=PACT_CASE_TYPE) or 100
        fields = ['_id', 'name', 'pactid.#value']
        query = case_es.base_query(terms={'type': PACT_CASE_TYPE},
                                   fields=fields,
                                   start=0,
                                   size=total_count)
        query['filter']['and'].append({"prefix": {"dot_status.#value": "dot"}})

        results = case_es.run_query(query)
        for res in results['hits']['hits']:
            yield res['fields']
示例#7
0
    def update_indicators_for_case_type(self, case_type, domain):
        print "\n\n\nFetching %s cases in domain %s...." % (case_type, domain)
        relevant_indicators = CaseIndicatorDefinition.get_all(
            namespace=MVP.NAMESPACE, domain=domain, case_type=case_type)

        if relevant_indicators:
            num_cases = get_number_of_cases_in_domain(domain, type=case_type)

            print(
                "\nFound the following Case Indicator Definitions "
                "for Case Type %s in Domain %s") % (case_type, domain)
            print "--%s\n" % "\n--".join([i.slug for i in relevant_indicators])

            print "Found %d possible cases for update." % num_cases
            case_ids = get_case_ids_in_domain(domain, type=case_type)

            self._throttle_updates(
                "Cases of type %s in %s" % (case_type, domain),
                relevant_indicators, num_cases, domain, case_ids, CommCareCase)
示例#8
0
def cases(domain, *args):
    return get_number_of_cases_in_domain(domain)
示例#9
0
 def test_get_number_of_cases_in_domain(self):
     self.assertEqual(
         get_number_of_cases_in_domain(self.domain),
         len([case for case in self.cases if case.domain == self.domain]))
 def test_get_number_of_cases_in_domain__type(self):
     self.assertEqual(
         get_number_of_cases_in_domain(self.domain, type='type1'),
         len([case for case in self.cases
              if case.domain == self.domain and case.type == 'type1'])
     )
 def test_get_number_of_cases_in_domain(self):
     self.assertEqual(
         get_number_of_cases_in_domain(self.domain),
         len([case for case in self.cases if case.domain == self.domain])
     )
示例#12
0
def cases(domain, *args):
    return get_number_of_cases_in_domain(domain)