diff --git a/app/apps/import_app/schemas/v1.py b/app/apps/import_app/schemas/v1.py index 01ae643..7289140 100644 --- a/app/apps/import_app/schemas/v1.py +++ b/app/apps/import_app/schemas/v1.py @@ -65,7 +65,7 @@ class CSVImportSettings(BaseModel): class ColumnMapping(BaseModel): - source: Optional[str] = Field( + source: Optional[str] | Optional[list[str]] = Field( default=None, description="CSV column header. If None, the field will be generated from transformations", ) diff --git a/app/apps/import_app/services/v1.py b/app/apps/import_app/services/v1.py index d84935e..1d72b1e 100644 --- a/app/apps/import_app/services/v1.py +++ b/app/apps/import_app/services/v1.py @@ -486,8 +486,18 @@ class ImportService: mapped_data = {} for field, mapping in self.mapping.items(): - # If source is None, use None as the initial value - value = row.get(mapping.source) if mapping.source else None + value = None + + if isinstance(mapping.source, str): + value = row.get(mapping.source) + elif isinstance(mapping.source, list): + for source in mapping.source: + value = row.get(source) + if value is not None: + break + else: + # If source is None, use None as the initial value + value = None # Use default_value if value is None if value is None: