예제 #1
0
 def tearDownClass(cls):
     for data_type in get_fixture_data_types(cls.domain):
         delete_fixture_items_for_data_type(cls.domain, data_type._id)
     for data_type in get_fixture_data_types(cls.linked_domain):
         delete_fixture_items_for_data_type(cls.linked_domain,
                                            data_type._id)
     delete_all_fixture_data_types()
     super().tearDownClass()
예제 #2
0
def update_fixture(domain_link, tag):
    if domain_link.is_remote:
        master_results = remote_fixture(domain_link, tag)
    else:
        master_results = local_fixture(domain_link.master_domain, tag)

    master_data_type = master_results["data_type"]
    if not master_data_type.is_global:
        raise UnsupportedActionError(
            _("Found non-global lookup table '{}'.").format(
                master_data_type.tag))

    # Update data type
    master_data_type = master_data_type.to_json()
    del master_data_type["_id"]
    del master_data_type["_rev"]

    linked_data_type = get_fixture_data_type_by_tag(domain_link.linked_domain,
                                                    master_data_type["tag"])
    if linked_data_type:
        linked_data_type = linked_data_type.to_json()
    else:
        linked_data_type = {}
    linked_data_type.update(master_data_type)
    linked_data_type["domain"] = domain_link.linked_domain
    linked_data_type = FixtureDataType.wrap(linked_data_type)
    linked_data_type.save()
    clear_fixture_quickcache(domain_link.linked_domain, [linked_data_type])

    # Re-create relevant data items
    delete_fixture_items_for_data_type(domain_link.linked_domain,
                                       linked_data_type._id)
    for master_item in master_results["data_items"]:
        doc = master_item.to_json()
        del doc["_id"]
        del doc["_rev"]
        doc["domain"] = domain_link.linked_domain
        doc["data_type_id"] = linked_data_type._id
        FixtureDataItem.wrap(doc).save()

    clear_fixture_cache(domain_link.linked_domain)
예제 #3
0
 def tearDown(self):
     delete_fixture_items_for_data_type(self.domain, self.table._id)