convert-to-sql: add support for variant pickle class name (#64782)

This commit is contained in:
Frédéric Péters 2022-05-03 10:58:50 +02:00
parent bde49d22b7
commit 420e68bd29
1 changed files with 18 additions and 2 deletions

View File

@ -122,18 +122,34 @@ class Command(BaseCommand):
print('converting %s' % formdef.name)
sql.do_formdef_tables(formdef, rebuild_views=True, rebuild_global_views=True)
data_class = formdef.data_class(mode='files')
if formdef.url_name != formdef.internal_identifier:
# handle maybe different name
setattr(
sys.modules['formdef'],
'_wcs_%s' % formdef.internal_identifier.title(),
getattr(sys.modules['formdef'], formdef.data_class_name),
)
count = data_class.count()
# load all objects a first time, to allow the migrate() code to be
# run and the eventual changes properly saved.
for id in data_class.keys():
formdata = data_class.get(id)
try:
formdata = data_class.get(id)
except AttributeError:
continue
delattr(sys.modules[formdef.xml_root_node], formdef.data_class_name)
# once this is done, reload and store everything in postgresql
sql_data_class = formdef.data_class(mode='sql')
for i, id in enumerate(data_class.keys()):
formdata = data_class.get(id)
try:
formdata = data_class.get(id)
except AttributeError:
errors.append((formdata, traceback.format_exc()))
continue
formdata._formdef = formdef
formdata._evolution = formdata.evolution
formdata.__class__ = sql_data_class