Dylan, Thanks very much for the reply. AFAIK, there is absolutely no change made to lines before trying to use it, but I'll put a bit more detail in here, so someone can no doubt prove me wrong! I set the value of lines, passed to the external method, to be: ['Hello, this is my test pdf', 'This is still my test pdf.', 'Still here', 'and this is the end ..'] ( Just in case, this is done using a python script: lines=[] lines.append("Hello, this is my test pdf") lines.append("This is still my test pdf.") lines.append("Still here") lines.append("and this is the end ..") return lines ) If the code in the External Method is: ******************************************************************** #!/usr/bin/env python def run(fileID, lines): import sping.stringformat from sping.PDF import PDFCanvas from sping.PS import PSCanvas filename="c:/zopepdf/"+fileID canvas = PDFCanvas(size=(350,200), name=filename) y = 20 for line in lines: sping.stringformat.drawString(canvas, line, 10,y) y = y + 20 canvas.flush() canvas.save() return fileID ******************************************************************** Then I get the following error details: ==================================================================== Error Type AttributeError Error Value __getitem__ Traceback (most recent call last): File "C:\PROGRA~1\ZopeSite\lib\python\DocumentTemplate\DT_Try.py", line 149, in render_try_except result = render_blocks(self.section, md) File "C:\PROGRA~1\ZopeSite\lib\python\DocumentTemplate\DT_Let.py", line 75, in render else: d[name]=expr(md) File "C:\PROGRA~1\ZopeSite\lib\python\DocumentTemplate\DT_Util.py", line 159, in eval return eval(code, d) File "", line 2, in f File "C:\PROGRA~1\ZopeSite\lib\python\Products\ExternalMethod\ExternalMethod.py", line 198, in __call__ try: return apply(f,args,kw) File "C:\PROGRA~1\ZopeSite\Extensions\formatted-strings.py", line 21, in run from sping.PDF import PDFCanvas AttributeError: __getitem__ ==================================================================== Whereas, if the code in the External Method is: ******************************************************************** #!/usr/bin/env python def run(fileID, lines): import sping.stringformat from sping.PDF import PDFCanvas from sping.PS import PSCanvas filename="c:/zopepdf/"+fileID canvas = PDFCanvas(size=(350,200), name=filename) return lines ******************************************************************** then this returns the value of lines in the manner above. What am I doing wrong? TIA, Ashley From: Dylan Reinhardt <zope@dylanreinhardt.com> Reply-To: zope@dylanreinhardt.com To: Ashley Lloyd <ashleylloyd@hotmail.com> CC: zope@zope.org Subject: Re: [Zope] Newbie - passing a list to an External Method Date: 17 Apr 2003 10:11:17 -0700 On Thu, 2003-04-17 at 08:01, Ashley Lloyd wrote:
Error Type: AttributeError Error Value: __getitem__
This error is typical when the object you're trying to iterate over isn't a sequence. Most likely, something you've done on lines 2-27 has changed the value of lines to None. Look extra carefully at any and all assignments you make in the external method. In particular, it's possible you may have committed a common error with lists, ex: a = [1,2.3] b = a b = None # now the value of a is None! HTH, Dylan _________________________________________________________________ On the move? Get Hotmail on your mobile phone http://www.msn.co.uk/mobile