def edit_form_actions(request, domain, app_id, form_unique_id): app = get_app(domain, app_id) form = app.get_form(form_unique_id) module = form.get_module() old_load_from_form = form.actions.load_from_form form.actions = FormActions.wrap(json.loads(request.POST['actions'])) add_properties_to_data_dictionary( domain, module.case_type, list(form.actions.update_case.update.keys())) if old_load_from_form: form.actions.load_from_form = old_load_from_form for condition in (form.actions.open_case.condition, form.actions.close_case.condition): if isinstance(condition.answer, six.string_types): soft_assert_type_text(condition.answer) condition.answer = condition.answer.strip('"\'') form.requires = request.POST.get('requires', form.requires) if actions_use_usercase(form.actions): if not is_usercase_in_use(domain): enable_usercase(domain) add_properties_to_data_dictionary( domain, USERCASE_TYPE, list(form.actions.usercase_update.update.keys())) response_json = {} app.save(response_json) response_json['propertiesMap'] = get_all_case_properties(app) response_json['usercasePropertiesMap'] = get_usercase_properties(app) return json_response(response_json)
def edit_form_actions(request, domain, app_id, form_unique_id): app = get_app(domain, app_id) form = app.get_form(form_unique_id) module = form.get_module() old_load_from_form = form.actions.load_from_form form.actions = FormActions.wrap(json.loads(request.POST['actions'])) add_properties_to_data_dictionary(domain, module.case_type, list(form.actions.update_case.update.keys())) if old_load_from_form: form.actions.load_from_form = old_load_from_form for condition in (form.actions.open_case.condition, form.actions.close_case.condition): if isinstance(condition.answer, six.string_types): soft_assert_type_text(condition.answer) condition.answer = condition.answer.strip('"\'') form.requires = request.POST.get('requires', form.requires) if actions_use_usercase(form.actions): if not is_usercase_in_use(domain): enable_usercase(domain) add_properties_to_data_dictionary(domain, USERCASE_TYPE, list(form.actions.usercase_update.update.keys())) response_json = {} app.save(response_json) response_json['propertiesMap'] = get_all_case_properties(app) response_json['usercasePropertiesMap'] = get_usercase_properties(app) return json_response(response_json)
def _generate_data_dictionary(self, domain): dictionary = { 'adult': ['name', 'address', 'birthdate', 'blood_group', 'company', 'job', 'sex', 'lang'], 'child': ['name', 'address', 'birthdate', 'blood_group', 'sex', 'age', 'favorite_color', 'favorite_number', 'lang'], 'car': ['name', 'licence_plate', 'color'], 'maintenance_record': ['name', 'date_performed', 'notes'], } for case_type, props in six.iteritems(dictionary): add_properties_to_data_dictionary(domain, case_type, props)
def edit_advanced_form_actions(request, domain, app_id, module_id, form_id): app = get_app(domain, app_id) form = app.get_module(module_id).get_form(form_id) json_loads = json.loads(request.POST.get('actions')) actions = AdvancedFormActions.wrap(json_loads) form.actions = actions for action in actions.load_update_cases: add_properties_to_data_dictionary(domain, action.case_type, action.case_properties.keys()) if advanced_actions_use_usercase(form.actions) and not is_usercase_in_use(domain): enable_usercase(domain) response_json = {} app.save(response_json) response_json['propertiesMap'] = get_all_case_properties(app) return json_response(response_json)
def _cached_add_inferred_export_properties(sender, domain, case_type, properties): from corehq.apps.export.models import MAIN_TABLE, PathNode, CaseInferredSchema, ScalarItem """ Adds inferred properties to the inferred schema for a case type. :param: sender - The signal sender :param: domain :param: case_type :param: properties - An iterable of case properties to add to the inferred schema """ assert domain, 'Must have domain' assert case_type, 'Must have case type' assert all(['.' not in prop for prop in properties]), 'Properties should not have periods' inferred_schema = get_case_inferred_schema(domain, case_type) if not inferred_schema: inferred_schema = CaseInferredSchema( domain=domain, case_type=case_type, ) group_schema = inferred_schema.put_group_schema(MAIN_TABLE) add_properties_to_data_dictionary(domain, case_type, properties) for case_property in properties: path = [PathNode(name=case_property)] system_property_column = list( filter( lambda column: column.item.path == path and column.item. transform is None, MAIN_CASE_TABLE_PROPERTIES, )) if system_property_column: assert len(system_property_column) == 1 column = system_property_column[0] group_schema.put_item(path, inferred_from=sender, item_cls=column.item.__class__) else: group_schema.put_item(path, inferred_from=sender, item_cls=ScalarItem) inferred_schema.save()
def edit_advanced_form_actions(request, domain, app_id, form_unique_id): app = get_app(domain, app_id) form = app.get_form(form_unique_id) json_loads = json.loads(request.POST.get('actions')) actions = AdvancedFormActions.wrap(json_loads) if form.form_type == "shadow_form": form.extra_actions = actions else: form.actions = actions for action in actions.load_update_cases: add_properties_to_data_dictionary(domain, action.case_type, list(action.case_properties.keys())) if advanced_actions_use_usercase(actions) and not is_usercase_in_use(domain): enable_usercase(domain) response_json = {} app.save(response_json) response_json['propertiesMap'] = get_all_case_properties(app) return JsonResponse(response_json)
def _cached_add_inferred_export_properties(sender, domain, case_type, properties): from corehq.apps.export.models import MAIN_TABLE, PathNode, InferredSchema, ScalarItem """ Adds inferred properties to the inferred schema for a case type. :param: sender - The signal sender :param: domain :param: case_type :param: properties - An iterable of case properties to add to the inferred schema """ assert domain, 'Must have domain' assert case_type, 'Must have case type' assert all(map(lambda prop: '.' not in prop, properties)), 'Properties should not have periods' inferred_schema = get_inferred_schema(domain, case_type) if not inferred_schema: inferred_schema = InferredSchema( domain=domain, case_type=case_type, ) group_schema = inferred_schema.put_group_schema(MAIN_TABLE) add_properties_to_data_dictionary(domain, case_type, properties) for case_property in properties: path = [PathNode(name=case_property)] system_property_column = filter( lambda column: column.item.path == path, MAIN_CASE_TABLE_PROPERTIES, ) if system_property_column: assert len(system_property_column) == 1 column = system_property_column[0] group_schema.put_item(path, inferred_from=sender, item_cls=column.item.__class__) else: group_schema.put_item(path, inferred_from=sender, item_cls=ScalarItem) inferred_schema.save()