allow for more than one key per CSV column
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3861 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
68fe787feb
commit
b85d120ad2
1 changed files with 23 additions and 17 deletions
12
external/dsv.py
vendored
12
external/dsv.py
vendored
|
@ -57,9 +57,12 @@ class CsvReader(BaseReader):
|
||||||
continue
|
continue
|
||||||
currentElements = {}
|
currentElements = {}
|
||||||
for k, v in row.items():
|
for k, v in row.items():
|
||||||
k, v = self.preprocessField(k, v)
|
keys, v = self.preprocessField(k, v)
|
||||||
if k is None:
|
if not keys:
|
||||||
continue
|
continue
|
||||||
|
if not isinstance(keys, (tuple, list)):
|
||||||
|
keys = [keys]
|
||||||
|
for k in keys:
|
||||||
type = None
|
type = None
|
||||||
if '.' in k:
|
if '.' in k:
|
||||||
type, k = k.split('.', 1)
|
type, k = k.split('.', 1)
|
||||||
|
@ -74,7 +77,7 @@ class CsvReader(BaseReader):
|
||||||
element.type = type
|
element.type = type
|
||||||
if isinstance(v, str):
|
if isinstance(v, str):
|
||||||
v = v.decode(self.encoding)
|
v = v.decode(self.encoding)
|
||||||
element[k] = v
|
self.setValue(element, k, v)
|
||||||
for element in sorted(currentElements.values(), key=lambda x: x.order):
|
for element in sorted(currentElements.values(), key=lambda x: x.order):
|
||||||
if element.identifier is None:
|
if element.identifier is None:
|
||||||
result.append(element)
|
result.append(element)
|
||||||
|
@ -94,6 +97,9 @@ class CsvReader(BaseReader):
|
||||||
def preprocessField(self, k, v):
|
def preprocessField(self, k, v):
|
||||||
return k, v
|
return k, v
|
||||||
|
|
||||||
|
def setValue(self, element, k, v):
|
||||||
|
element[k] = v
|
||||||
|
|
||||||
def getDate(self, value, correctBug=False):
|
def getDate(self, value, correctBug=False):
|
||||||
if not value:
|
if not value:
|
||||||
return value
|
return value
|
||||||
|
|
Loading…
Add table
Reference in a new issue