diff --git a/base_jsonify/models/models.py b/base_jsonify/models/models.py index a26d23a52..226f771ab 100644 --- a/base_jsonify/models/models.py +++ b/base_jsonify/models/models.py @@ -62,9 +62,7 @@ class Base(models.AbstractModel): @api.model def _add_json_key(self, values, json_key, value): """To manage defaults, you can use a specific resolver.""" - key_marshaller = json_key.split("=") - key = key_marshaller[0] - marshaller = key_marshaller[1] if len(key_marshaller) > 1 else None + key, sep, marshaller = json_key.partition("=") if marshaller == "list": # sublist field if not values.get(key): values[key] = [] @@ -170,7 +168,8 @@ class Base(models.AbstractModel): for record, json in zip(records, results): self._jsonify_record(parsers[lang], record, json) - results = resolver.resolve(results, self) if resolver else results + if resolver: + results = resolver.resolve(results, self) return results[0] if one else results # HELPERS diff --git a/base_jsonify/models/utils.py b/base_jsonify/models/utils.py index 150f3f809..dba45cc06 100644 --- a/base_jsonify/models/utils.py +++ b/base_jsonify/models/utils.py @@ -4,14 +4,14 @@ def convert_simple_to_full_parser(parser): return {"fields": _convert_parser(parser)} -def _f(f, function=None): +def _convert_field(fld, function=None): """Return a dict from the string encoding a field to export. The : is used as a separator to specify a target, if any. """ - field_split = f.split(":") - field_dict = {"name": field_split[0]} - if len(field_split) > 1: - field_dict["target"] = field_split[1] + name, sep, target = fld.partition(":") + field_dict = {"name": name} + if target: + field_dict["target"] = target if function: field_dict["function"] = function return field_dict @@ -24,11 +24,12 @@ def _convert_parser(parser): result = [] for line in parser: if isinstance(line, str): - result.append(_f(line)) + field_def = _convert_field(line) else: - f, sub = line + fld, sub = line if callable(sub) or isinstance(sub, str): - result.append(_f(f, sub)) + field_def = _convert_field(fld, sub) else: - result.append((_f(f), _convert_parser(sub))) + field_def = (_convert_field(fld), _convert_parser(sub)) + result.append(field_def) return result