def setup_data_dictionary(domain, case_type_name, prop_list=None, allowed_values=None): prop_list = prop_list or [] allowed_values = allowed_values or {} CaseType.get_or_create(domain, case_type_name) for prop_name, data_type in prop_list: prop = CaseProperty.get_or_create(prop_name, case_type_name, domain) prop.data_type = data_type prop.save() if prop_name in allowed_values: for value in allowed_values[prop_name]: CasePropertyAllowedValue.objects.get_or_create( case_property=prop, allowed_value=value)
def update_data_dictionary(domain_link): if domain_link.is_remote: master_results = remote_get_data_dictionary(domain_link) else: master_results = local_get_data_dictionary(domain_link.master_domain) # Start from an empty set of CaseTypes and CaseProperties in the linked domain. CaseType.objects.filter(domain=domain_link.linked_domain).delete() # Create CaseType and CaseProperty as necessary for case_type_name, case_type_desc in master_results.items(): case_type_obj = CaseType.get_or_create(domain_link.linked_domain, case_type_name) case_type_obj.description = case_type_desc['description'] case_type_obj.fully_generated = case_type_desc['fully_generated'] case_type_obj.save() for case_property_name, case_property_desc in case_type_desc['properties'].items(): case_property_obj = CaseProperty.get_or_create(case_property_name, case_type_obj.name, domain_link.linked_domain) case_property_obj.description = case_property_desc['description'] case_property_obj.deprecated = case_property_desc['deprecated'] case_property_obj.data_type = case_property_desc['data_type'] case_property_obj.group = case_property_desc['group'] case_property_obj.save()