Migration Can';t将自定义Plone文件类型迁移到BLOB

Migration Can';t将自定义Plone文件类型迁移到BLOB,migration,blob,plone,plone-4.x,Migration,Blob,Plone,Plone 4.x,我们有自定义的内容类型,它们是作为ATTYPE的扩展创建的,其中两个扩展ATFile类型,一个扩展ATImage类型。我们最近从Plone 4.2升级到Plone 4.3.2。刚刚发现我们根本没有使用Blob存储。难怪我们的Data.fs是巨大的。因此,我一直在尝试迁移这些自定义类型 我遵循了中介绍的所有步骤和pypi中的产品说明,并使用了archetypes.schemaextender的pypi页面中的示例(很抱歉,由于我还是一个noob,我的声誉不允许我发布超过2个链接) 最后,我创建了一

我们有自定义的内容类型,它们是作为ATTYPE的扩展创建的,其中两个扩展ATFile类型,一个扩展ATImage类型。我们最近从Plone 4.2升级到Plone 4.3.2。刚刚发现我们根本没有使用Blob存储。难怪我们的Data.fs是巨大的。因此,我一直在尝试迁移这些自定义类型

我遵循了中介绍的所有步骤和pypi中的产品说明,并使用了archetypes.schemaextender的pypi页面中的示例(很抱歉,由于我还是一个noob,我的声誉不允许我发布超过2个链接)

最后,我创建了一个扩展程序脚本,它只是扩展了ATFile类型,将FileField更改为BlobField。它似乎在为新项目工作。我可以添加一个新的CustomFileType,它似乎正在将文件上载到blob,并且显示了我的新上载字段(我更改了描述以快速验证它使用的是哪一个)

但是,我在迁移所有现有内容项以将二进制文件移到blob时遇到问题。我尝试了通用的migrate()脚本,然后按照上面参考资料中的建议创建了自己的migrate和walker。但它似乎什么也没做。当打印它尝试合并的每个项目的结果时,我确实看到每个项目返回的结果:

DEBUG ATCT.migration Migrating /site/path/to/custom/file/filename.ext (CustomFile -> Blob)
当我导航到站点中的自定义文件类型时,它通常显示指向该文件的链接,但它只是空的。然后要进行编辑,它会将其视为没有文件。作为检查,我禁用了扩展器,重新启动并重新加载了自定义文件。文件现在在那里。因此,我运行的脚本似乎没有将该文件移动到它现在应该所在的位置

我觉得我错过了一些简单的东西,它就在那里,但我似乎找不到它。所有这些都是我边走边学的,我有点不知所措,所以希望有人能很容易地纠正我的错误

如果我需要提供任何其他信息,请留下评论,我将尽力提供您需要的信息

更新
我以红海龟对象为例,按照keul的建议迁移我的自定义类型。我仍然无法使文件迁移到类型本身中的blob。所以,我尝试了一种不同的方法。我创建了一个新的自定义类型“CustomBlob”,它是我的CustomFile类型的模拟设置,并且只扩展了这个新的blob类型,使其具有blob意识。然后我将CustomFiles迁移到CustomBlob,进行了一次完整的清除和重建,并打包了zeo。迁移似乎在很大程度上起了作用,blobstorage的增长达到了预期的数量,新的类型也起了作用。然而,Data.fs的大小并没有下降。我原以为Data.fs中存储的二进制文件会在迁移过程中被删除。我理解错了吗?如何删除这些文件,使Data.fs大小适当减小

我不确定这是否是最好的解决方案,但下面是我如何让它发挥作用的

我创建了与每种类型并行的临时内容类型(对于CustomImage,我创建了CustomImageBlob,等等)。我只让新类型blob感知,将所有类型迁移到它们的并行模式。然后,我为原始类型启用了扩展程序,使它们能够识别blob,并迁移回原来的类型。这是一个有点冗余和耗时的过程,但我只是在迁移到自身时无法将文件迁移到blob


提供这是迄今为止最好的答案,以防它帮助其他人,或者可能鼓励其他人找到更好的解决方案。谢谢你的提示,它确实帮助我找到了这个解决方案

不使用blob扩展ATFile这一事实很正常(但会让很多用户感到困惑)。无法给您答案(可能您遗漏了一些非常简单的内容,正如您所说的。请使用迁移脚本检查其他包,如(文件)或(图像)。