csv: link attribute object to relevant headers (#66053)

This commit is contained in:
Paul Marillonnet 2022-12-06 11:44:58 +01:00 committed by Benjamin Dauvergne
parent 615dbcfe2a
commit 80d743f8d3
2 changed files with 8 additions and 6 deletions

View File

@ -193,7 +193,7 @@ class CsvHeader:
column = attrib()
name = attrib(default='')
field = attrib(default=False, converter=bool)
attribute = attrib(default=False, converter=bool)
attribute = attrib(default=None)
create = attrib(default=True, metadata={'flag': True})
update = attrib(default=True, metadata={'flag': True})
key = attrib(default=False, metadata={'flag': True})
@ -502,8 +502,7 @@ class UserCsvImporter:
pass
if not header.field:
try:
Attribute.objects.get(name=header.name)
header.attribute = True
header.attribute = Attribute.objects.get(name=header.name)
except Attribute.DoesNotExist:
pass

View File

@ -181,13 +181,14 @@ tnoel@entrouvert.com,Thomas,Noël,0123456789
fpeters@entrouvert.com,Frédéric,Péters,+3281005678
x,x,x,x'''
importer = user_csv_importer_factory(content)
phone = Attribute.objects.get(name='phone')
importer.run()
assert importer.headers == [
CsvHeader(1, 'email', field=True, key=True, verified=True),
CsvHeader(2, 'first_name', field=True),
CsvHeader(3, 'last_name', field=True),
CsvHeader(4, 'phone', field=True),
CsvHeader(4, 'phone', attribute=phone),
]
assert importer.has_errors
assert len(importer.rows) == 3
@ -233,13 +234,14 @@ tnoel@entrouvert.com,Thomas,Noël,0123456789
fpeters@entrouvert.com,Frédéric,Péters,+3281005678
x,x,x,x'''
importer = user_csv_importer_factory(content)
phone = Attribute.objects.get(name='phone')
assert not importer.run(simulate=True)
assert importer.headers == [
CsvHeader(1, 'email', field=True, key=True, verified=True),
CsvHeader(2, 'first_name', field=True),
CsvHeader(3, 'last_name', field=True),
CsvHeader(4, 'phone', field=True),
CsvHeader(4, 'phone', attribute=phone),
]
assert importer.has_errors
assert len(importer.rows) == 3
@ -416,6 +418,7 @@ app1,1,tnoel@entrouvert.com,Thomas,Noël,0606060606
app1,2,tnoel@entrouvert.com,Thomas,Noël,0606060606
'''
importer = user_csv_importer_factory(content)
phone = Attribute.objects.get(name='phone')
assert importer.run(), importer.all_errors
assert importer.headers == [
@ -424,7 +427,7 @@ app1,2,tnoel@entrouvert.com,Thomas,Noël,0606060606
CsvHeader(3, 'email', field=True, verified=True),
CsvHeader(4, 'first_name', field=True),
CsvHeader(5, 'last_name', field=True),
CsvHeader(6, 'phone', field=True),
CsvHeader(6, 'phone', attribute=phone),
]
assert not importer.has_errors
assert len(importer.rows) == 2