We should use if ctx.collection is not None instead of just if ctx.collection
[DEBUG] >> Change 'type_key': 'ReferenceField' => 'GenericReferenceField'
Traceback (most recent call last):
File "bin/mongoengine_migrate", line 8, in <module>
sys.exit(cli())
File "/opt/miniforge/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
return self.main(*args, **kwargs)
File "/opt/miniforge/lib/python3.8/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/opt/miniforge/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/opt/miniforge/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/opt/miniforge/lib/python3.8/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/cli.py", line 36, in w
return func(*args, **kwargs)
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/cli.py", line 160, in migrate
mongoengine_migrate.migrate(migration)
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/loader.py", line 540, in migrate
self.upgrade(migration_name, graph)
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/loader.py", line 423, in upgrade
action_object.run_forward()
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/actions/fields.py", line 263, in run_forward
self._run_migration(self._run_ctx['left_field_schema'], self.parameters, swap=False)
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/actions/fields.py", line 288, in _run_migration
field_handler.change_param(db_field, 'type_key')
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/fields/base.py", line 166, in change_param
return method(updater, diff)
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/fields/base.py", line 304, in change_type_key
new_handler.convert_type(updater, *field_classes)
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/fields/base.py", line 345, in convert_type
type_converter(updater)
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/fields/converters/common.py", line 261, in to_dynamic_ref
updater.update_by_document(by_doc)
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/updater.py", line 213, in update_by_document
self._update_by_document(callback, collection, [], [])
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/updater.py", line 363, in _update_by_document
callback(ctx)
File "/opt/miniforge/lib/python3.8/site-packages/mongoengine_migrate/fields/converters/common.py", line 236, in by_doc
collection_name = ctx.collection.name if ctx.collection else None
File "/opt/miniforge/lib/python3.8/site-packages/pymongo/collection.py", line 348, in __bool__
raise NotImplementedError(
NotImplementedError: Collection objects do not implement truth value testing or bool(). Please compare with None instead: collection is not None
This action fails:
Due to this condition: https://github.com/bdragon300/mongoengine-migrate/blob/master/mongoengine_migrate/fields/converters/common.py#L209
We should use
if ctx.collection is not None
instead of justif ctx.collection