Index: /main/waeup.kofa/trunk/CHANGES.txt
===================================================================
--- /main/waeup.kofa/trunk/CHANGES.txt	(revision 12980)
+++ /main/waeup.kofa/trunk/CHANGES.txt	(revision 12981)
@@ -4,4 +4,7 @@
 1.3.2.dev0 (unreleased)
 =======================
+
+* Remove quite old bug in `doImport`: Replace empty strings *and* lists with
+  ignore-markers in update *and* create mode.
 
 * Add StudentUnpaidPaymentExporter to export only unpaid tickets.
Index: /main/waeup.kofa/trunk/src/waeup/kofa/doctests/batchprocessing_browser.txt
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/doctests/batchprocessing_browser.txt	(revision 12980)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/doctests/batchprocessing_browser.txt	(revision 12981)
@@ -642,5 +642,5 @@
     >>> print open(pending_file).read()
     name,roles,title,public_name,phone,email,--ERRORS--
-    anne,['waeup.Nonsense'],Anne Palina,,+49-234-567,anne@abc.de,roles: invalid role
+    anne,['waeup.Nonsense'],Anne Palina,<IGNORE>,+49-234-567,anne@abc.de,roles: invalid role
 
 There are many finished-files:
Index: /main/waeup.kofa/trunk/src/waeup/kofa/hostels/tests.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/hostels/tests.py	(revision 12980)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/hostels/tests.py	(revision 12981)
@@ -514,8 +514,8 @@
             "beds_for_pre=['G'], floors_per_block=1, "
             "beds_for_final=['A', 'B'], rooms_per_floor=32, "
-            "blocks_for_male=[], hostel_id=block-a-upper-hostel, "
+            "hostel_id=block-a-upper-hostel, "
             "sort_id=20, beds_for_returning=['C', 'D'], "
             "hostel_name=Block A Upper Hostel, beds_for_fresh=['E', 'F'], "
-            "blocks_for_female=['A'], beds_for_all=[], beds_reserved=[]"
+            "blocks_for_female=['A']"
             in logcontent)
         shutil.rmtree(os.path.dirname(fin_file))
@@ -542,8 +542,8 @@
             "beds_for_pre=['G'], floors_per_block=1, "
             "beds_for_final=['A', 'B'], rooms_per_floor=32, "
-            "blocks_for_male=[], hostel_id=block-a-upper-hostel, "
+            "hostel_id=block-a-upper-hostel, "
             "sort_id=20, beds_for_returning=['C', 'D'], "
             "hostel_name=Block A Upper Hostel, beds_for_fresh=['E', 'F'], "
-            "blocks_for_female=['A'], beds_for_all=[], beds_reserved=[]"
+            "blocks_for_female=['A']"
             in logcontent)
         shutil.rmtree(os.path.dirname(fin_file))
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_batching.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_batching.py	(revision 12980)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_batching.py	(revision 12981)
@@ -513,5 +513,5 @@
             'reg_number,firstname,student_id,sex,email,phone,state,date_of_birth,lastname,password,matric_number,--ERRORS--\r\n'
             '4,John,D123456,m,aa@aa.ng,1234,nonsense,1990-01-05,Wolter,mypw1,100003,state: not allowed\r\n'
-            '5,John,E123456,x,aa@aa.ng,1234,,1990-01-06,Kennedy,,100004,sex: Invalid value\r\n'
+            '5,John,E123456,x,aa@aa.ng,1234,<IGNORE>,1990-01-06,Kennedy,<IGNORE>,100004,sex: Invalid value\r\n'
             )
         students = self.app['students']
@@ -547,6 +547,6 @@
             '1,Aaren,B123456,m,aa@aa.ng,1234,cleared,1990-01-03,Finau,mypw1,100001,reg_number: Invalid input\r\n'
             '2,Aaren,C123456,m,aa@aa.ng,1234,admitted,1990-01-04,Berson,mypw1,100000,matric_number: Invalid input\r\n'
-            '1,Frank,F123456,m,aa@aa.ng,1234,,1990-01-06,Meyer,,100000,reg_number: Invalid input; matric_number: Invalid input\r\n'
-            '3,Uli,A123456,m,aa@aa.ng,1234,,1990-01-07,Schulz,,100002,This object already exists.\r\n'
+            '1,Frank,F123456,m,aa@aa.ng,1234,<IGNORE>,1990-01-06,Meyer,<IGNORE>,100000,reg_number: Invalid input; matric_number: Invalid input\r\n'
+            '3,Uli,A123456,m,aa@aa.ng,1234,<IGNORE>,1990-01-07,Schulz,<IGNORE>,100002,This object already exists.\r\n'
             )
         shutil.rmtree(os.path.dirname(fin_file))
@@ -780,5 +780,5 @@
         self.assertEqual(studylevel.__parent__.certificate.code, u'CERT1')
         self.assertEqual(studylevel.level_session, 2008)
-        self.assertEqual(studylevel.level_verdict, None)
+        self.assertEqual(studylevel.level_verdict, '0')
         self.assertEqual(studylevel.level, 100)
         shutil.rmtree(os.path.dirname(fin_file))
@@ -891,9 +891,9 @@
         self.assertEqual(fail_file,
             'reg_number,code,mandatory,level,level_session,score,matric_number,--ERRORS--\r\n'
-            '1,COURSE1,,nonsense,,5,,Not all parents do exist yet.\r\n'
-            '1,NONSENSE,,100,,5,,code: non-existent\r\n'
-            '1,COURSE1,,200,2004,6,,level_session: does not match 2008\r\n'
-            '1,COURSE1,,300,2008,6,,level: does not exist\r\n'
-            '1,COURSE1,,300,2008X,6,,level_session: Invalid value\r\n')
+            '1,COURSE1,<IGNORE>,nonsense,<IGNORE>,5,<IGNORE>,Not all parents do exist yet.\r\n'
+            '1,NONSENSE,<IGNORE>,100,<IGNORE>,5,<IGNORE>,code: non-existent\r\n'
+            '1,COURSE1,<IGNORE>,200,2004,6,<IGNORE>,level_session: does not match 2008\r\n'
+            '1,COURSE1,<IGNORE>,300,2008,6,<IGNORE>,level: does not exist\r\n'
+            '1,COURSE1,<IGNORE>,300,2008X,6,<IGNORE>,level_session: Invalid value\r\n')
         assert self.processor.entryExists(
             dict(reg_number='1', level='100', code='COURSE1'),
@@ -1220,5 +1220,5 @@
         studycourse = self.processor.getEntry(dict(matric_number='100000'),
                                               self.app)
-        self.assertEqual(studycourse['200'].level_verdict, None)
+        self.assertEqual(studycourse['200'].level_verdict, '0')
         student = self.processor.getParent(
             dict(matric_number='100000'), self.app)
Index: /main/waeup.kofa/trunk/src/waeup/kofa/utils/batching.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/utils/batching.py	(revision 12980)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/utils/batching.py	(revision 12981)
@@ -384,8 +384,8 @@
                 continue
             string_row = self.applyMapping(raw_row, mapping)
-            if ignore_empty and mode in ('update',):
-                # Replace empty strings with ignore-markers
+            if ignore_empty:
+                # Replace empty strings and empty lists with ignore-markers
                 for key, val in string_row.items():
-                    if val == '':
+                    if val == '' or val == '[]':
                         string_row[key] = IGNORE_MARKER
             row = dict(string_row.items()) # create deep copy
