Troubles in migration from 4.3.15 to 5.0.7: fail to view files list under folders

Plone 4.3.15 locates in /keti with 100s folders containing 4000s files (not dexterity content type).

I get a fresh installed Plone 5.0.7, then copy blobstorage and Data.fs from 4.3.15 to 5.0.7. The following migration seems ok as https://pastebin.com/bZDD8DR5

But when I try to open folders to view files list(links as http://192.168.142.158:8080/keti/xjieti/2009xjt/xxsx), it fails with error as https://pastebin.com/RxjazVQu. Curiously I can view or download a file within the folder through straightforward links such as http://192.168.142.158:8080/keti/xjieti/2009xjt/xxsx/2009X098.rar/at_download/file or http://192.168.142.158:8080/keti/xjieti/2009xjt/xxsx/2009X098.rar/view.

I find that the view is ok when there are folders and files in a folder. Error appears when only files exist.

How can I get this done? After this, I plan to upgrade my existing content to use Dexterity. Thank you very much.

Regards.
Hugo

The error tells you that your xxsx lacks a method getText. To analyse the reason, I would compare the xxsx in your old and in your new instance. Has its class changed? has the existence of getText changed? has the view template changed? etc.

After my first try, in order to resolve the error “ReferenceException: None not referenceable” (https://pastebin.com/MbTWyQrw), I cleared plone4.3.15’s reference catalog in keti/reference_catalog/manage_catalogAdvanced.

How to check class, getText and view template?
100s folders :frowning:

Thanks.
Hugo

I would try debugging with pdb. See https://docs.plone.org/develop/debugging/pdb.html for more info. Good luck.

I like to use an interactive Python session (bin/{instance|client1} debug) for this. It starts an interactive Python session and defines the variable app to reference the Zope root object. You can then use app.unrestrictedTraverse(urlpath) the get the object at urlpath. obj.__class__ gives your the class of an object (if this gives you some kind of Acquisition wrapper, you will need to use obj.aq_base.__class__).

To find the view template, I would access the object and look at the url shown in your browser. Its last path component is the name of the view. I would then search the Plone source tree to find the registration for this name in a *.zcml file (which will reveal the source) and then compare the sources.

2 Likes

Some guessing, maybe the view is the problem, not the content:
It looks like the folder view is : ... /CMFPlone/skins/plone_content/folder_tabular_view.pt

(which it maybe should not be)

Is it possible that you have some views that are customized (in /portal_skin/custom or /portal_view_customization.

Could you try to go to
http://path/to/folder/manage_propertiesForm and remove the view set there (layout /default page)

Plone Foundation Code of Conduct