Data sync: Allow more flexibility on list separators (#5718)

This commit is contained in:
Raphael Michel
2025-12-17 16:23:07 +01:00
committed by GitHub
parent a17a098b15
commit d0d7670ca5
2 changed files with 15 additions and 8 deletions

View File

@@ -90,6 +90,7 @@ StaticMapping = namedtuple('StaticMapping', ('id', 'pretix_model', 'external_obj
class OutboundSyncProvider: class OutboundSyncProvider:
max_attempts = 5 max_attempts = 5
list_field_joiner = "," # set to None to keep native lists in properties
def __init__(self, event): def __init__(self, event):
self.event = event self.event = event
@@ -281,7 +282,8 @@ class OutboundSyncProvider:
'Please update value mapping for field "{field_name}" - option "{val}" not assigned' 'Please update value mapping for field "{field_name}" - option "{val}" not assigned'
).format(field_name=key, val=val)]) ).format(field_name=key, val=val)])
val = ",".join(val) if self.list_field_joiner:
val = self.list_field_joiner.join(val)
return val return val
def get_properties(self, inputs: dict, property_mappings: List[dict]): def get_properties(self, inputs: dict, property_mappings: List[dict]):

View File

@@ -71,15 +71,20 @@ def assign_properties(
return out return out
def _add_to_list(out, field_name, current_value, new_item, list_sep): def _add_to_list(out, field_name, current_value, new_item_input, list_sep):
new_item = str(new_item)
if list_sep is not None: if list_sep is not None:
new_item = new_item.replace(list_sep, "") new_items = str(new_item_input).split(list_sep)
current_value = current_value.split(list_sep) if current_value else [] current_value = current_value.split(list_sep) if current_value else []
elif not isinstance(current_value, (list, tuple)): else:
current_value = [str(current_value)] new_items = [str(new_item_input)]
if new_item not in current_value: if not isinstance(current_value, (list, tuple)):
new_list = current_value + [new_item] current_value = [str(current_value)]
new_list = list(current_value)
for new_item in new_items:
if new_item not in current_value:
new_list.append(new_item)
if new_list != current_value:
if list_sep is not None: if list_sep is not None:
new_list = list_sep.join(new_list) new_list = list_sep.join(new_list)
out[field_name] = new_list out[field_name] = new_list