ZClass Product distribution woes
I have a ZClass-based Product on one server and I want to copy it to another. I am using import/export to do this. I also tried the Distribution tab this morning but it had the same problem. (I restored Data.fs afterwards.) Yesterday, I was able to import the Product into the second server and use it. Today, I import it, and try to instantiate it, and get the following traceback on the ..._add method: ---- Traceback (innermost last): File /R02/zope/lib/python/ZPublisher/Publish.py, line 223, in publish_module File /R02/zope/lib/python/ZPublisher/Publish.py, line 187, in publish File /R02/zope/lib/python/Zope/__init__.py, line 226, in zpublisher_exception_hook (Object: RoleManager) File /R02/zope/lib/python/ZPublisher/Publish.py, line 171, in publish File /R02/zope/lib/python/ZPublisher/mapply.py, line 160, in mapply (Object: DefconContainer_add) File /R02/zope/lib/python/ZPublisher/Publish.py, line 112, in call_object (Object: DefconContainer_add) File /R02/zope/lib/python/OFS/DTMLMethod.py, line 194, in __call__ (Object: DefconContainer_add) File /R02/zope/lib/python/DocumentTemplate/DT_String.py, line 546, in __call__ (Object: DefconContainer_add) File /R02/zope/lib/python/DocumentTemplate/DT_With.py, line 133, in render (Object: DefconContainer.createInObjectManager(REQUEST['id'], REQUEST)) File /R02/zope/lib/python/DocumentTemplate/DT_Util.py, line 231, in eval (Object: DefconContainer.createInObjectManager(REQUEST['id'], REQUEST)) (Info: REQUEST) File <string>, line 2, in f (Object: guarded_getitem) NameError: global name 'DefconContainer' is not defined ---- DefconContainer is the name of the ZClass I am trying to instantiate. I have a slightly modified ..._add method, just to init a property sheet: ---- <HTML> <HEAD><TITLE>Add DefconItem</TITLE></HEAD> <BODY BGCOLOR="#FFFFFF" LINK="#000099" VLINK="#555555"> <dtml-comment> We add the new object by calling the class in a with tag. Not only does this get the thing added, it adds the new thing's attributes to the DTML name space, so we can call methods to initialize the object. </dtml-comment> <dtml-with "DefconItem.createInObjectManager(REQUEST['id'], REQUEST)"> <dtml-call "propertysheets.properties.manage_editProperties( REQUEST)"> </dtml-with> <dtml-comment> Now we need to return something. We do this via a redirect so that the URL is correct. Unfortunately, the way we do this depends on whether we live in a product or in a class. If we live in a product, we need to use DestinationURL to decide where to go. If we live in a class, DestinationURL won't be available, so we use URL2. </dtml-comment> <dtml-if DestinationURL> <dtml-call "RESPONSE.redirect( DestinationURL+'/manage_workspace')"> <dtml-else> <dtml-call "RESPONSE.redirect( URL2+'/manage_workspace')"> </dtml-if> </body></html> ---- I would be tearing my hair out if I hadn't shaved my head over Labor Day weekend. Any ideas? I have restarted, packed, cleared cache... basically done everything but try to recreate the Product. (Shudder.) I cannot for the life of me figure out why this worked yesterday and doesn't work today. -- Matt Behrens <matt.behrens@kohler.com> System Analyst, Baker Furniture
Matt Behrens wrote:
DefconContainer is the name of the ZClass I am trying to instantiate. I have a slightly modified ..._add method, just to init a property sheet:
I cut-and-pasted the wrong ..._add method... try this one :-) ---- <HTML> <HEAD><TITLE>Add DefconContainer</TITLE></HEAD> <BODY BGCOLOR="#FFFFFF" LINK="#000099" VLINK="#555555"> <dtml-comment> We add the new object by calling the class in a with tag. Not only does this get the thing added, it adds the new thing's attributes to the DTML name space, so we can call methods to initialize the object. </dtml-comment> <dtml-with "DefconContainer.createInObjectManager(REQUEST['id'], REQUEST)"> <dtml-call "propertysheets.properties.manage_editProperties( REQUEST)"> </dtml-with> <dtml-comment> Now we need to return something. We do this via a redirect so that the URL is correct. Unfortunately, the way we do this depends on whether we live in a product or in a class. If we live in a product, we need to use DestinationURL to decide where to go. If we live in a class, DestinationURL won't be available, so we use URL2. </dtml-comment> <dtml-if DestinationURL> <dtml-call "RESPONSE.redirect( DestinationURL+'/manage_workspace')"> <dtml-else> <dtml-call "RESPONSE.redirect( URL2+'/manage_workspace')"> </dtml-if> </body></html> ---- -- Matt Behrens <matt.behrens@kohler.com> System Analyst, Baker Furniture
participants (1)
-
Behrens Matt - Grand Rapids