I am using parsed xml … I have a parsed xml file in a folder.
I tried to lockdown my plone site, by following the link in http://plone.org/documentation/howto/HowToCreateAPrivatePloneSite
This works great ( basically set a whole bunch of workflow state permissions to authenticated then run the update security settings) if you don't have a parsed xml file inside your site, but if you do you get a nastly little error
TypeError: hasattr expected 2 arguments, got 1
The even.log file says:
2004-07-15T16:12:32 ERROR(200) SiteError http://localhost:5555/nerwa/portal_workflow/updateRoleMappings
Traceback (most recent call last):
File "C:\plone\Plone\Zope\lib\python\ZPublisher\Publish.py", line 100, in publish
request, bind=1)
File "C:\plone\Plone\Zope\lib\python\ZPublisher\mapply.py", line 88, in mapply
if debug is not None: return debug(object,args,context)
File "C:\plone\Plone\Zope\lib\python\ZPublisher\Publish.py", line 40, in call_object
result=apply(object,args) # Type s<cr> to step into published object.
File "C:\plone\Plone\Data\Products\CMFCore\WorkflowTool.py", line 490, in updateRoleMappings
count = self._recursiveUpdateRoleMappings(portal, wfs)
File "C:\plone\Plone\Data\Products\CMFCore\WorkflowTool.py", line 673, in _recursiveUpdateRoleMappings
count = count + self._recursiveUpdateRoleMappings(v, wfs)
File "C:\plone\Plone\Data\Products\CMFCore\WorkflowTool.py", line 673, in _recursiveUpdateRoleMappings
count = count + self._recursiveUpdateRoleMappings(v, wfs)
File "C:\plone\Plone\Data\Products\CMFCore\WorkflowTool.py", line 673, in _recursiveUpdateRoleMappings
count = count + self._recursiveUpdateRoleMappings(v, wfs)
File "C:\plone\Plone\Data\Products\CMFCore\WorkflowTool.py", line 669, in _recursiveUpdateRoleMappings
obs = ob.objectItems()
File "C:\plone\Plone\Zope\lib\python\Products\ParsedXML\ParsedXML.py", line 283, in objectItems
return ManageableDocument.objectItems(self, spec)
File "C:\plone\Plone\Zope\lib\python\Products\ParsedXML\ManageableDOM.py", line 241, in objectItems
for ob in self.objectValues(spec): a((ob.getId(), ob))
File "C:\plone\Plone\Zope\lib\python\Products\ParsedXML\ManageableDOM.py", line 193, in getId
if hasattr(self.aq_base):
TypeError: hasattr expected 2 arguments, got 1
I found the problem on line 193 it says :
# partial ObjectManagerItem interface
def getId(self):
"Return the id of the object as a string."
if hasattr(self.aq_base):
base = self.aq_base
else:
base = self
name=getattr(base, 'id', None)
if name is not None:
return name
return self.tpURL()
You can see straightaway that someone is using hasattr with only one parameter. Not good is it.
Any suggestions how to fix. The work around I have is just to remove my xml file, apply the security then put the xml file back … although this works it is not the ideal solution.
Maybe I shouldn't be using parsed xml maybe there is a better python xml parser out there??
____________________________________________
Peter Millar
Technical Project Manager
Parasyn Controls Pty Ltd
Peter.Millar@Parasyn.com.au
T: 61 7 3396 6388
F: 61 7 3396 6299
45 Millenium Place, Tingalpa QLD 4173
PO Box 400 Cannon Hill QLD 4170
Australia
www.parasyn.com.au