[Zope] Problem with Z SQL Method associated with a class...
Frederic Quin
frederic.quin@free.fr
Fri, 06 Oct 2000 18:37:46 +0200
Hi all,
I associated a Z SQL Method to a class. This class MUST have attributes
but I obtain a Zope error on them. Did anyone know why and what I can do
???
Thanks
Fred
HERE IS THE ERROR ----------------------------------------
Error
Zope has encountered an error while publishing this
resource. See below for details.
Error Type: AttributeError
Error Value: interests_founded
Troubleshooting Suggestions
The URL may be incorrect.
The parameters passed to this resource may be
incorrect.
A resource that this resource relies on may be
encountering an error.
For more detailed information about the error, please
refer to the HTML source for this page.
If the error persists please contact the site maintainer.
Thank you for your patience.
Version 2.0.1 -- ©
2000 Profile For You -- Internal use only.
Traceback (innermost last):
File
/usr/local/Zope-2.1.6-linux2-x86/lib/python/ZPublisher/Publish.py, line
214, in publish_module
File
/usr/local/Zope-2.1.6-linux2-x86/lib/python/ZPublisher/Publish.py, line
179, in publish
File /usr/local/Zope-2.1.6-linux2-x86/lib/python/Zope/__init__.py,
line 202, in zpublisher_exception_hook
(Object: ElementWithAttributes)
File
/usr/local/Zope-2.1.6-linux2-x86/lib/python/ZPublisher/Publish.py, line
165, in publish
File /usr/local/Zope-2.1.6-linux2-x86/lib/python/ZPublisher/mapply.py,
line 160, in mapply
(Object: index_html)
File
/usr/local/Zope-2.1.6-linux2-x86/lib/python/ZPublisher/Publish.py, line
102, in call_object
(Object: index_html)
File /usr/local/Zope-2.1.6-linux2-x86/lib/python/OFS/DTMLDocument.py,
line 166, in __call__
(Object: index_html)
File
/usr/local/Zope-2.1.6-linux2-x86/lib/python/DocumentTemplate/DT_String.py,
line 502, in __call__
(Object: index_html)
File /usr/local/Zope-2.1.6-linux2-x86/lib/python/OFS/DTMLMethod.py,
line 146, in __call__
(Object: dmProfileCompare)
File
/usr/local/Zope-2.1.6-linux2-x86/lib/python/DocumentTemplate/DT_String.py,
line 502, in __call__
(Object: dmProfileCompare)
File
/usr/local/Zope-2.1.6-linux2-x86/lib/python/DocumentTemplate/DT_In.py,
line 691, in renderwob
(Object: sqlSiteProfileDetails( WEBSITEID=REQUEST.id,
PAGEID=REQUEST.pg ))
File
/usr/local/Zope-2.1.6-linux2-x86/lib/python/DocumentTemplate/DT_Util.py,
line 335, in eval
(Object: XMLToDict(REQUEST.pstor))
(Info: REQUEST)
File <string>, line 0, in ?
File /Zope/Extensions/IntranetToolKit.py, line 132, in XMLToDict
(Object: Profile4uXMLParser)
AttributeError: (see above)
HERE IS MY CLASS ----------------------------------------------------
import string
import sys
from Shared.DC.xml import *
from Shared.DC.xml.pyexpat import *
class Profile4uXMLParser:
# Necessary method to make the pyexpat module works
def start_element(self, name, attrs):
self.current_name = name
# Simple tag for which we just want to
store the attributes or the value situated just after the tag
if ((name != 'interests') and (self.interests_founded == 0)):
for i in range(len(attrs)):
if ((i % 2) == 0):
self.datas[attrs[i]] = attrs[i+1]
# If we have a value just after the tag,
it will be associate with the name of the tag after
if (name != 'profile'):
self.datas[name] = ''
# We find the tag interests so...
elif (self.interests_founded == 0):
self.interests_founded = 1
# Tag founded in the tag interests
else:
tmp = {}
tmp['level'] = string.replace(name,'l','')
for i in range(len(attrs)):
if ((i % 2) == 0):
tmp[attrs[i]] = attrs[i+1]
self.interests.append(tmp)
# Necessary method to make the pyexpat module works
def end_element(self, name):
# End of interests : we can find others
simple tags
if (name == 'interests'):
self.interests_founded = 0
# Necessary method to make the pyexpat module works
def char_data(self, data):
# Association of the value founded just
after the tag with the name of the tag
if ((self.current_name != 'interest') and
(self.interests_founded == 0)):
# If the data need to be decoded...
if (string.find(data,':') >= 0):
tmp2 = {}
tmp = string.split(data,':')
for i in range(len(tmp)):
if ((i % 3) == 0):
tmp2[tmp[i]] = [tmp[i+1],tmp[i+2]]
self.datas[self.current_name] = tmp2
else:
self.datas[self.current_name] = data
def XMLToDict(self, dict):
self.interests_founded = 0 # To know when we have
found the interests
self.datas = {} # To store all general
informations
self.current_name = '' # To associate the
information located just after a tag to the name of this tag (see
char_data method)
self.interests = [] # To store temporaly
the interests
p = pyexpat.ParserCreate()
p.StartElementHandler = self.start_element
p.EndElementHandler = self.end_element
p.CharacterDataHandler= self.char_data
if (self.INTEREST != 'false'):
p.Parse(self.INTEREST)
dict[self.datas['type']] = [self.datas,self.interests]
return dict