[Setup] setLayout() and ID field in CT's

Denis Mishunoff spliter at sdtcom.lg.ua
Sun Apr 9 10:13:23 UTC 2006

Hello, list.

I try to migrated my 2.0.5 instance to 2.1.3(unreleased).
Migration was fine and site works ok.
But I have some issues that I would like to sort out.

Some more information about the site.

1. I have a custom AT based content type in my site that is somekind of
extended News Item.
This type can have different categories (World news, Local News, Sport
news and so on) that have to be chosen during item's creation on edit
page. So, each item of this type can be the part of one of some
categories. To have possibility to controll the archive of these
custom News Items, I have added the script on plone_workflow (based on
'Move object in DCWorkflow' how-to on
http://zopelabs.com/cookbook/1029298314 by Alan Runyan) that
cuts/pastes these items on publish to subfolders of "news archive" folder.
These subfolders are created according to NewsItem's date, means


So, in case there are no NewsItems published during this
year/month/date, the script on plone_workflow create the folder
according to item's creation data.
For those year/month/date folders I use simple invokeFactory().

So users can create items in any part of the site - the script will manage these
items on publish and will move them to the folder accrding to item's
It worked great on 2.0.5, but when I have migrated to 2.1.3 I have the
error trying to publish that kind of object:

ValueError: layout must be a non empty string, got folder_listing()

I found out that this error has gone once I get rid of invokeFactory
method. But I can't leave it this way.
I tried to dig deepper and found out that the above error is produced
by setLayout() from CMFDynamicViewFTI/browserdefault.py.

I have changed the
if not layout or not isinstance(layout, str):
    raise ValueError, ("layout must be a non empty string, got %s(%s)" %
    (layout, type(layout)))
if not layout or not isinstance(layout, str):
    layout = 'folder_listing'

and now it works as it was on 2.0.5

And now I'm wondering did I do it in the wrong way? Is there any other
way to solve my problem except altering the browserdefault.py???

2. After migration all content types of my site contain ID field on
edit and creation. This is not supposed to be so in default (not
migrated) 2.1.x site. Is there anything I can do to get rid of that
field, since it's not required in 2.1.x?

Hope to get any help on these issues.

Thank you.

Best regards,
Denis Mishunoff                          
PLONE Design-Skinning-Development

mailto:spliter at sdtcom.lg.ua
IRC: spliter(#plone)
URL: http://plonetarium.objectis.net

More information about the Setup mailing list