Beispiel #1
0
    def test_get_list(self):
        """
        Any case in the appropriate domain should be in the list from the API.
        """

        # The actual infrastructure involves saving to CouchDB, having PillowTop
        # read the changes and write it to ElasticSearch.

        #the pillow is set to offline mode - elasticsearch not needed to validate
        pillow = CasePillow(online=False)
        fake_case_es = FakeXFormES()
        v0_4.MOCK_CASE_ES = fake_case_es

        modify_date = datetime.utcnow()

        backend_case = CommCareCase(server_modified_on=modify_date, domain=self.domain.name)
        backend_case.type = CC_BIHAR_PREGNANCY
        backend_case.save()

        translated_doc = pillow.change_transform(backend_case.to_json())

        fake_case_es.add_doc(translated_doc['_id'], translated_doc)

        self.client.login(username=self.username, password=self.password)

        response = self.client.get(self.list_endpoint)
        self.assertEqual(response.status_code, 200)

        api_cases = simplejson.loads(response.content)['objects']
        self.assertEqual(len(api_cases), 2)

        api_case = api_cases['mother_lists'][0]
        self.assertEqual(dateutil.parser.parse(api_case['server_date_modified']), backend_case.server_modified_on)

        backend_case.delete()
Beispiel #2
0
    def finish_handle(self):
        filepath = os.path.join(settings.FILEPATH, 'corehq', 'pillows',
                                'mappings', 'case_mapping.py')
        case_pillow = CasePillow(create_index=False)

        #check current index
        current_index = case_pillow.es_index

        sys.stderr.write("current index:\n")
        sys.stderr.write('CASE_INDEX="%s"\n' % current_index)

        #regenerate the mapping dict
        mapping = case_mapping.CASE_MAPPING
        case_pillow.default_mapping = mapping
        delattr(case_pillow, '_calc_meta_cache')
        calc_index = "%s_%s" % (case_pillow.es_index_prefix,
                                case_pillow.calc_meta())

        #aliased_indices = case_pillow.check_alias()
        # if calc_index not in aliased_indices and calc_index != current_index:
        #     sys.stderr.write("\n\tWarning, current index %s is not aliased at the moment\n" % current_index)
        #     sys.stderr.write("\tCurrent live aliased index: %s\n\n"  % (','.join(aliased_indices)))

        if calc_index != current_index:
            sys.stderr.write("############# HEADS UP!!! #################\n")
            sys.stderr.write(
                "CASE_INDEX hash has changed, please update \n\t%s\n\tCASE_INDEX property with the line below:\n"
                % filepath)
            sys.stdout.write('CASE_INDEX="%s"\n' % calc_index)
        else:
            sys.stderr.write("CASE_INDEX unchanged\n")
    def testOwnerIDSetOnTransform(self):
        """
        Test that the owner_id gets set to the case when the pillow calls change transform
        """
        case_owner_id = CASE_WITH_OWNER_ID
        case_no_owner_id = CASE_NO_OWNER_ID

        pillow = CasePillow(create_index=False, online=False)
        changed_with_owner_id = pillow.change_transform(case_owner_id)
        changed_with_no_owner_id = pillow.change_transform(case_no_owner_id)

        self.assertEqual(changed_with_owner_id.get("owner_id"), "testuser")
        self.assertEqual(changed_with_no_owner_id.get("owner_id"), "testuser")
Beispiel #4
0
    def finish_handle(self):

        filepath = os.path.join(settings.FILEPATH, 'corehq', 'pillows',
                                'mappings', 'case_mapping.py')
        casepillow = CasePillow(create_index=False)

        #current index
        #check current index
        aliased_indices = casepillow.check_alias()

        #        current_index = '%s_%s' % (casepillow.es_index_prefix, casepillow.calc_meta())
        current_index = casepillow.es_index

        #regenerate the mapping dict
        m = DEFAULT_MAPPING_WRAPPER

        m['properties'] = dynamic.set_properties(
            self.doc_class, custom_types=case_special_types)
        m['_meta'][
            'comment'] = "Autogenerated [%s] mapping from ptop_generate_mapping %s" % (
                self.doc_class_str, datetime.utcnow().strftime('%m/%d/%Y'))
        casepillow.default_mapping = m
        delattr(casepillow, '_calc_meta_cache')
        output = []
        output.append('CASE_INDEX="%s_%s"' %
                      (casepillow.es_index_prefix, casepillow.calc_meta()))
        output.append('CASE_MAPPING=%s' % pprint.pformat(m))
        newcalc_index = "%s_%s" % (casepillow.es_index_prefix,
                                   casepillow.calc_meta())
        print "Writing new case_index and mapping: %s" % output[0]
        with open(filepath, 'w') as outfile:
            outfile.write('\n'.join(output))

        if newcalc_index not in aliased_indices and newcalc_index != current_index:
            sys.stderr.write(
                "\n\tWarning, current index %s is not aliased at the moment\n"
                % current_index)
            sys.stderr.write("\tCurrent live aliased index: %s\n\n" %
                             (','.join(aliased_indices)))

        sys.stderr.write("File written to %s\n" % filepath)