From 4255b998c6a519d3be38433c42556ca454c0739e Mon Sep 17 00:00:00 2001
From: Philipp Stadler <hello@phstadler.com>
Date: Sat, 20 Jul 2024 20:20:08 +0200
Subject: [PATCH] feat!: add fields_static

BREAKING CHANGE: new required field
---
 export_apkgs.py                                   | 9 +++++++--
 test/fixtures/csv/.apkg-spec.yaml                 | 1 +
 test/fixtures/csv_updated_content/.apkg-spec.yaml | 1 +
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/export_apkgs.py b/export_apkgs.py
index b018d9b..eaedd2e 100755
--- a/export_apkgs.py
+++ b/export_apkgs.py
@@ -46,6 +46,7 @@ class ImportCsv(BaseModel):
     file_patterns: list[str]|None
     deck_name_pattern: str
     fields_mapping: list[str]
+    fields_static: dict[str, str]
     tags: list[str]
 
 class ImportImages(BaseModel):
@@ -329,7 +330,8 @@ class ApkgExporter:
                                 tmp_deck,
                                 import_csv.tags,
                                 csv_path,
-                                fields_mapping)
+                                fields_mapping,
+                                import_csv.fields_static)
                             self.move_to_target_decks(col, tmp_deck, deck_name, csv_path)
             elif 'import_apkg' in content:
                 import_apkg : ImportApkg = content['import_apkg']
@@ -375,7 +377,8 @@ class ApkgExporter:
             tmp_deck: int,
             tags: list[str],
             csv_path: Path,
-            fields_mapping: list[str]):
+            fields_mapping: list[str],
+            fields_static: dict[str, str]):
         with open(csv_path) as csv_file:
             reader = csv.reader(csv_file, delimiter=';')
             for row in reader:
@@ -386,6 +389,8 @@ class ApkgExporter:
                         raise Exception(f'CSV row is missing {field} at index {idx}:\n{row}')
                     if field != 'guid':
                         note[field] = row[idx]
+                for field, value in fields_static.items():
+                    note[field] = value
                 for tag in tags:
                     note.add_tag(tag)
                 col.add_note(note, tmp_deck)
diff --git a/test/fixtures/csv/.apkg-spec.yaml b/test/fixtures/csv/.apkg-spec.yaml
index b8ddf0f..0c13501 100644
--- a/test/fixtures/csv/.apkg-spec.yaml
+++ b/test/fixtures/csv/.apkg-spec.yaml
@@ -15,6 +15,7 @@ content:
     - guid
     - Question
     - Answer
+    fields_static: {}
     tags: []
 
 resource_paths: []
diff --git a/test/fixtures/csv_updated_content/.apkg-spec.yaml b/test/fixtures/csv_updated_content/.apkg-spec.yaml
index 08ebda7..18e0338 100644
--- a/test/fixtures/csv_updated_content/.apkg-spec.yaml
+++ b/test/fixtures/csv_updated_content/.apkg-spec.yaml
@@ -15,6 +15,7 @@ content:
     - guid
     - Question
     - Answer
+    fields_static: {}
     tags: []
 
 resource_paths: []
-- 
GitLab