Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-29 Thread Dieter Maurer
beno - wrote at 2006-7-28 15:43 -0700:
 ...
  tr tal:repeat=item batch
td tal:define=number repeat/item/number
tal:content=number1/td
td tal:content=item/titletitle/td
tdtal:content 
 metal:use-macro=here/?number/macros/authorauthor/tal:content/td
 ...
 Traceback
 ...
 Line 22, Column 4
 Expression: standard:'here/?number/macros/author'
 ...
KeyError: 'number' (Also, an error occurred while attempting to render the 
standard error message.)

The traceback tells you (kept part) that the KeyError: 'number' comes
from here/?number/macros/author and it is right:

   Unless you use global, variables defined in TAL only live
   within the element (aka tag) you have defined them in.

   In your special case, this is the td element.
   It it not defined in the following tds.

A common approach is to use artificial block elements to
carry the definitions for some elements in the loop body -- similar to

  tr tal:repeat=...
tal:block define=number ...
  td tal:content=number /
  ...
  tdtal:content metal:use-macro=here/?number/... //td
  ...
/tal:block
  /tr

Apparently, you already use tal prefixed tag names.
The tal:block is another standard use...


Another advice: carefully read the PageTemplate section in
the Zope Book (2.7 edition, on plope.org).



-- 
Dieter
___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-29 Thread beno -
Alexis Rhoda's suggestion sounds similar. I edited the code as follows, both with and without the 'global' parameter with the same error thrown. I read the material you recommended before writing the list and have been referencing it. I confess that snakes would bite me repeatedly though before my eyes for lack of seeing them, no matter how hard I try. Your further help would be very much appreciated. TIA,beno tr tal:repeat="item batch" tal:block define="global number repeat/item/number" td tal:content="number"1/td td tal:content="item/title"title/td tdtal:content metal:use-macro="here/?number/macros/author"author/tal:content/td tdtal:content metal:use-macro="here/?number/macros/content"content/tal:content/td td
 tal:content="item/bobobase_modification_time" modification date/td  /tal:block /tr3TypeErrorSorry, a site error occurred.Traceback (innermost last):   Module ZPublisher.Publish, line 175, in publish_module_standard  Module ZPublisher.Publish, line 132, in publish  Module Zope.App.startup, line 204, in zpublisher_exception_hook  Module ZPublisher.Publish, line 101, in publish  Module ZPublisher.mapply, line 88, in mapply  Module ZPublisher.Publish, line 39, in call_object  Module Shared.DC.Scripts.Bindings, line 306, in
 __call__  Module Shared.DC.Scripts.Bindings, line 343, in _bindAndExec  Module Products.PageTemplates.ZopePageTemplate, line 222, in _exec  Module Products.PageTemplates.PageTemplate, line 96, in pt_render ZopePageTemplate at /rejoice.2012.vi/en-us/Books/getQuote used for /rejoice.2012.vi/en-us/Books/test  Module TAL.TALInterpreter, line 190, in __call__  Module TAL.TALInterpreter, line 234, in interpret  Module TAL.TALInterpreter, line 613, in do_loop_tal  Module TAL.TALInterpreter, line 234, in interpret  Module TAL.TALInterpreter, line 409, in do_optTag_tal  Module TAL.TALInterpreter, line 394, in do_optTag  Module TAL.TALInterpreter, line 389, in no_tag  Module TAL.TALInterpreter, line 234, in interpret  Module TAL.TALInterpreter, line 657, in do_useMacro  Module Products.PageTemplates.TALES, line 221, in evaluate URL:
 /rejoice.2012.vi/en-us/Books/getQuote Line 22, Column 8 _expression_: standard:'here/?number/macros/author' Names:{'container': Folder instance at e909350, 'context': Folder instance at 92e1ad0, 'default': Products.PageTemplates.TALES.Default instance at 0x8a1d62c, 'here': Folder instance at 92e1ad0, 'loop': SafeMapping instance at 8ff2380, 'modules': Products.PageTemplates.ZRPythonExpr._SecureModuleImporter instance at 0x8a1d06c, 'nothing': None, 'options': {'args': ()}, 'repeat': SafeMapping instance at 8ff2380, 'request': HTTPRequest, URL=""> 'root': Application instance at 90c1f80, 'template': ZopePageTemplate at /rejoice.2012.vi/en-us/Books/getQuote used for /rejoice.2012.vi/en-us/Books/test, 'traverse_subpath': [], 'user': Anonymous
 User}  Module Products.PageTemplates.Expressions, line 174, in __call__  Module Products.PageTemplates.Expressions, line 162, in _eval  Module Products.PageTemplates.Expressions, line 107, in _evalTypeError: iteration over non-sequence (Also, an error occurred while attempting to render the standard error message.)Dieter Maurer [EMAIL PROTECTED] wrote: beno - wrote at 2006-7-28 15:43 -0700: ...  tal:content="number"1titleauthor ... Traceback ... Line 22, Column 4 _expression_: standard:'here/?number/macros/author' ...KeyError: 'number' (Also, an error
 occurred while attempting to render the standard error message.)The traceback tells you (kept part) that the "KeyError: 'number'" comesfrom "here/?number/macros/author" and it is right:   Unless you use "global", variables defined in TAL only live   within the element (aka "tag") you have defined them in.   In your special case, this is the "td" element.   It it not defined in the following "td"s.A common approach is to use artificial "block" elements tocarry the definitions for some elements in the loop body -- similar to...  ...   Apparently, you already use "tal" prefixed tag names.The "tal:block" is another standard use...Another advice: carefully read the PageTemplate section inthe Zope Book (2.7 edition, on "plope.org").--
 Dieter 
		Groups are talking. Were listening. Check out the handy changes to Yahoo! Groups. ___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-29 Thread Dieter Maurer
beno - wrote at 2006-7-29 10:09 -0700:
 ...
  tr tal:repeat=item batch
   tal:block define=global number repeat/item/number
td tal:content=number1/td
td tal:content=item/titletitle/td
tdtal:content 
 metal:use-macro=here/?number/macros/authorauthor/tal:content/td
tdtal:content 
 metal:use-macro=here/?number/macros/contentcontent/tal:content/td
td tal:content=item/bobobase_modification_time
  modification date/td  
   /tal:block
  /tr
 ...
Sorry, a site error occurred.Traceback (innermost last): 
 ...
 Line 22, Column 8
 Expression: standard:'here/?number/macros/author'
 ...
 Module Products.PageTemplates.Expressions, line 107, in _eval
TypeError: iteration over non-sequence (Also, an error occurred while 
attempting to render the standard error message.)

This one is a bit more difficult: you need to look at the source code
to find out what goes wrong.

The traceback again tells you that the problem is
with here/?number/macros/author.
Moreover, it tells you that the exception is raised in line 107
of Module Products.PageTemplates.Expressions.
The code, you see there is path[i:i+1] = list(val).

I see from this code (it is okay when you do not yet see it),
that list(val) is the problem.

You must now look a bit around and take names seriously.
The code aroung is:

if self._dp:
path = list(path) # Copy!
for i, varname in self._dp:
val = vars[varname]
if isinstance(val, StringType):
path[i] = val
else:
# If the value isn't a string, assume it's a sequence
# of path names.
path[i:i+1] = list(val)

This loop is responsible to replace the ?varname occurrencies in your
path by the value of the variable varname.

As you see, the value may either be a string or a sequence of paths.

In your case, it is an integer and list(some_integer) results
in the TypeError you observe.

Add number python:`number` after your definition of number, i.e.

tal:block define=number repeat/item/number; number python:`number`

I removed the global (as you no longer need it due to the introduction
of tal:block).

The `...` is a Python operator equivalent to
a call to repr(...) which converts into a string.




-- 
Dieter
___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-28 Thread beno -
I have done as you say and get this error:KeyError: '$var' Here are the code lines I added into the table:tdtal:content metal:use-macro="here/$var/macros/author"author/tal:content/tdtdtal:content metal:use-macro="here/$var/macros/content"content/tal:content/td  TIA,  BenDieter Maurer [EMAIL PROTECTED] wrote:  beno - wrote at 2006-7-26 15:04 -0700: ... that works fine. But I'd like to call the following in that table:   where "XXX" is the "item" that changes each time a new item from the batch
 is called.You might try something like "here/?var/..."."?var" reads the contents of the variable "var" and inserts this contentinto the path _expression_.Note that the value must be a string and that embedded '/' are *not*treated as path separators.-- Dieter 
		Do you Yahoo!? Next-gen email? Have it all with the  all-new Yahoo! Mail Beta.___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-28 Thread Jens Vagelpohl

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 28 Jul 2006, at 09:45, beno - wrote:


I have done as you say and get this error:

KeyError: '$var'


Dieter said ?var, not $var...

jens


-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.1 (Darwin)

iD8DBQFEyhVLRAx5nvEhZLIRArVjAJ4wGFI60euFIRFdf7iqK9eEyrBVjgCdHfdt
h9cTcnnUP7HEf/B76+iYH7E=
=Hsz4
-END PGP SIGNATURE-
___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
http://mail.zope.org/mailman/listinfo/zope-announce

http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-28 Thread Andreas Jung



--On 28. Juli 2006 06:45:34 -0700 beno - [EMAIL PROTECTED] wrote:


I have done as you say and get this error:

  KeyError: '$var'

  Here are the code lines I added into the table:

  tdtal:content
metal:use-macro=here/$var/macros/authorauthor/tal:content/td
tdtal:content
metal:use-macro=here/$var/macros/contentcontent/tal:content/td


Please read carefully.
There is no documentation that told you about $var.
You might use ?var instead.

-aj

pgprLBxnd0wbq.pgp
Description: PGP signature
___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-28 Thread beno -
Right. My bad. However, that didn't work either :( The error was it couldn't find 'var'. So I tried 'item'. It couldn't find 'item'. So I tried this code: td tal:define="number repeat/item/number" tal:content="number"1/td  and it complained that it couldn't find 'number'.  TIA,  benoJens Vagelpohl [EMAIL PROTECTED] wrote:  -BEGIN PGP SIGNED MESSAGE-Hash: SHA1On 28 Jul 2006, at 09:45, beno - wrote: I have done as you say and get this error: KeyError: '$var'Dieter said "?var", not "$var"...jens-BEGIN PGP SIGNATURE-Version: GnuPG v1.4.1
 (Darwin)iD8DBQFEyhVLRAx5nvEhZLIRArVjAJ4wGFI60euFIRFdf7iqK9eEyrBVjgCdHfdth9cTcnnUP7HEf/B76+iYH7E==Hsz4-END PGP SIGNATURE-___Zope maillist - Zope@zope.orghttp://mail.zope.org/mailman/listinfo/zope** No cross posts or HTML encoding! **(Related lists - http://mail.zope.org/mailman/listinfo/zope-announcehttp://mail.zope.org/mailman/listinfo/zope-dev ) 
		Do you Yahoo!? Everyone is raving about the  all-new Yahoo! Mail Beta.___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-28 Thread Andreas Jung



--On 28. Juli 2006 08:01:01 -0700 beno - [EMAIL PROTECTED] wrote:


Right. My bad. However, that didn't work either :( The error was it
couldn't find 'var'. So I tried 'item'. It couldn't find 'item'. So I
tried this code:
  td tal:define=number repeat/item/number
tal:content=number1/td

  and it complained that it couldn't find 'number'.



*Please* don't throw snippets without further context at us. We need some 
reasonable context information about the code around..if you do expect help 
then please provide some more accurate informations...most of us have little

to think about what your real problem might be.

-aj

pgpDL2zG9iXMS.pgp
Description: PGP signature
___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-28 Thread Dieter Maurer
beno - wrote at 2006-7-28 08:01 -0700:
Right. My bad. However, that didn't work either :( The error was it couldn't 
find 'var'.

I used var to indicate some variable. It was not meant that you
use var literally...

So I tried 'item'. It couldn't find 'item'. So I tried this code:
   
  td tal:define=number repeat/item/number
tal:content=number1/td

  and it complained that it couldn't find 'number'.

You must be very careful: both in reading and in writing.
And you must try to understand how things work.
And you must provide full error information (i.e. Error Type,
Error Value and the traceback -- you find all of them
in the error_log object in your Zope Root Folder).

If you use repeat/variable (again, variable is not meant literally,
but *some* variable), then variable must be a repeat variable
defined by an enclosing 'tal:repeat=variable ...'.
If this is the case, then repeat/variable/number should work.



-- 
Dieter
___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-28 Thread beno -
Dieter Maurer [EMAIL PROTECTED] wrote:If you use "repeat/variable" (again, "variable" is not meant literally,but *some* "variable"), then "variable" must be a repeat variabledefined by an enclosing 'tal:repeat="variable ..."'.If this is the case, then "repeat/variable/number" should work.Here is the code again:table tal:define="objects here/objectValues; sort_on python:(('title', 'nocase',
 'asc'), ('bobobase_modification_time', 'cmp', 'desc')); sorted_objects python:sequence.sort(objects, sort_on); start python:getattr(request, 'start', 0); batch python:modules['ZTUtils'].Batch(sorted_objects, size=10, start=start); previous
 python:batch.previous; next python:batch.next" tr tal:repeat="item batch" td tal:define="number repeat/item/number" tal:content="number"1/td td tal:content="item/title"title/td tdtal:content metal:use-macro="here/?number/macros/author"author/tal:content/td tdtal:content metal:use-macro="here/?number/macros/content"content/tal:content/td td tal:content="item/bobobase_modification_time" modification date/td  /tr/tableHere is the error it throws as reported through the
 TTW:Site Error   An error was encountered while publishing this resource.  KeyErrorSorry, a site error occurred.Traceback (innermost last):   Module ZPublisher.Publish, line 175, in publish_module_standard  Module ZPublisher.Publish, line 132, in publish  Module Zope.App.startup, line 204, in zpublisher_exception_hook  Module ZPublisher.Publish, line 101, in publish  Module ZPublisher.mapply, line 88, in mapply  Module ZPublisher.Publish, line 39, in call_object  Module Shared.DC.Scripts.Bindings, line 306, in __call__  Module Shared.DC.Scripts.Bindings, line 343, in _bindAndExec  Module Products.PageTemplates.ZopePageTemplate, line 222, in _exec  Module Products.PageTemplates.PageTemplate, line 96, in pt_render ZopePageTemplate at /rejoice.2012.vi/en-us/Books/getQuote used for
 /rejoice.2012.vi/en-us/Books/test  Module TAL.TALInterpreter, line 190, in __call__  Module TAL.TALInterpreter, line 234, in interpret  Module TAL.TALInterpreter, line 613, in do_loop_tal  Module TAL.TALInterpreter, line 234, in interpret  Module TAL.TALInterpreter, line 657, in do_useMacro  Module Products.PageTemplates.TALES, line 221, in evaluate URL: /rejoice.2012.vi/en-us/Books/getQuote Line 22, Column 4 _expression_: standard:'here/?number/macros/author' Names:{'container': Folder instance at 9cb67a0, 'context': Folder instance at 9cd1e60, 'default': Products.PageTemplates.TALES.Default instance at 0x8a1d62c, 'here': Folder instance at 9cd1e60, 'loop': SafeMapping instance at 99ef7a0, 'modules': Products.PageTemplates.ZRPythonExpr._SecureModuleImporter instance at 0x8a1d06c, 'nothing':
 None, 'options': {'args': ()}, 'repeat': SafeMapping instance at 99ef7a0, 'request': HTTPRequest, URL=""> 'root': Application instance at 9a4c8f0, 'template': ZopePageTemplate at /rejoice.2012.vi/en-us/Books/getQuote used for /rejoice.2012.vi/en-us/Books/test, 'traverse_subpath': [], 'user': Anonymous User}  Module Products.PageTemplates.Expressions, line 174, in __call__  Module Products.PageTemplates.Expressions, line 162, in _eval  Module Products.PageTemplates.Expressions, line 101, in _evalKeyError: 'number' (Also, an error occurred while attempting to render the standard error message.)The error from the error log makes no sense to me. The time is off, too. I don't understand, but here it is:Time   2006/07/28 22:42:06.706 Universal   
User Name (User Id)tick (tick)   Request URL   http://2012.vi:7080/error_log/manage_workspace   Exception Type   Redirect   Exception Value   http://2012.vi:7080/error_log/manage_main Traceback (innermost last):   Module ZPublisher.Publish, line 101, in publish  Module ZPublisher.mapply, line 88, in mapply  Module ZPublisher.Publish, line 39, in call_object  Module App.Management, line 85, in manage_workspaceRedirect: http://2012.vi:7080/error_log/manage_mainDisplaytraceback as text51  43REQUEST formcookiestree-s'eJzT0MgpMOQKVneEA09bda4CI67EkgJjLj0AeJsHfw'lazy itemsSESSIONbound method SessionDataManager.getSessionData of SessionDataManager instance at 9a56890otherTraversalRequestNameStack[]AUTHENTICATED_USERtickURL'http://2012.vi:7080/error_log/manage_workspace'SERVER_URL'http://2012.vi:7080'AUTHENTICATION_PATH''PUBLISHEDbound method SiteErrorLog.manage_workspace of SiteErrorLog at /error_logURL1'http://2012.vi:7080/error_log'ACTUAL_URL'http://2012.vi:7080/error_log/manage_workspace'URL0http://2012.vi:7080/error_log/manage_workspaceURL1http://2012.vi:7080/error_logURL2http://2012.vi:7080BASE0http://2012.vi:7080BASE1http://2012.vi:7080BASE2http://2012.vi:7080/error_logBASE3http://2012.vi:7080/error_log/manage_workspaceenvironHTTP_COOKIE'tree-s="eJzT0MgpMOQKVneEA09bda4CI67EkgJjLj0AeJsHfw"'SERVER_SOFTWARE'Zope/(Zope 2.7.8-final, python 2.3.5, freebsd5) 

Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-28 Thread Alexis Roda

En/na beno - ha escrit:


Here is the error it throws as reported through the TTW:

Site Error

An error was encountered while publishing this resource.
*KeyError*
Sorry, a site error occurred.
Traceback (innermost last):


number is defined *only* in the block where you define it and enclosed 
blocks, in the first TD in your case. IIRC TAL provides a way to make 
a variable global, not sure, never used it. A more structured way would 
be to wrap all TDs with some block that defines number:


div tal:define=number repeat/item/number
 tal:omit-tag=
  td tal:content=number/td
  ... metal:use-macro=here/?number/macros/author ...
  ...
/div




HTH
___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
http://mail.zope.org/mailman/listinfo/zope-announce

http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-27 Thread Dieter Maurer
beno - wrote at 2006-7-26 15:04 -0700:
 ...
  that works fine. But I'd like to call the following in that table:
   
  tdtal:content metal:use-macro=here/XXX/macros/author/tal:content/td

  where XXX is the item that changes each time a new item from the batch 
 is called.

You might try something like here/?var/

?var reads the contents of the variable var and inserts this content
into the path expression.

Note that the value must be a string and that embedded '/' are *not*
treated as path separators.



-- 
Dieter
___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


[Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-26 Thread beno -
Hi;  I have the following block of code:table tal:define="objects here/objectValues; sort_on python:(('title', 'nocase', 'asc'), ('bobobase_modification_time', 'cmp', 'desc')); sorted_objects python:sequence.sort(objects, sort_on); start python:getattr(request, 'start', 0); batch
 python:modules['ZTUtils'].Batch(sorted_objects, size=10, start=start); previous python:batch.previous; next python:batch.next" tr tal:repeat="item batch" td tal:content="item/title"title/td td tal:content="item/bobobase_modification_time" modification date/td td tal:content="here/author"author/td td tal:content="here/content"content/td /tr/table  that works fine. But I'd like to call the following in that table:tdtal:content
 metal:use-macro="here/XXX/macros/author"/tal:content/td  where "XXX" is the "item" that changes each time a new item from the batch is called. In other words, there is a folder with a "batch" of files, and each file is an "item". So, since the files' titles are simply sequential numbers, it would look something like this:tdtal:content metal:use-macro="here/1/macros/author"/tal:content/tdtdtal:content metal:use-macro="here/2/macros/author"/tal:content/tdtdtal:content metal:use-macro="here/3/macros/author"/tal:content/td...How do I do that? Even better, is it possible to just open up each file and read its contents??  Thanks,  Ben 
		Do you Yahoo!? 
Get on board. You're invited to try the new Yahoo! Mail Beta.___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] Newbie: Missing a Variable (TAL/METAL Question)

2006-07-26 Thread David H




beno - wrote:

  Hi;
  I have the following block of code:
  
  table tal:define="objects here/objectValues;
 sort_on python:(('title', 'nocase', 'asc'),
 ('bobobase_modification_time',
'cmp', 'desc'));
 sorted_objects python:sequence.sort(objects,
sort_on);
 start python:getattr(request, 'start', 0);
 batch
python:modules['ZTUtils'].Batch(sorted_objects, size=10, start=start);
 previous python:batch.previous;
 next python:batch.next"
 tr tal:repeat="item batch"
 td tal:content="item/title"title/td
 td tal:content="item/bobobase_modification_time"
 modification date/td
 td tal:content="here/author"author/td
 td tal:content="here/content"content/td
 /tr
/table
  
  that works fine. But I'd like to call the following in that
table:
  
  tdtal:content
metal:use-macro="here/XXX/macros/author"/tal:content/td
  
  where "XXX" is the "item" that changes each time a new item from
the batch is called. In other words, there is a folder with a "batch"
of files, and each file is an "item". So, since the files' titles are
simply sequential numbers, it would look something like this:
  
  tdtal:content
metal:use-macro="here/1/macros/author"/tal:content/td
tdtal:content
metal:use-macro="here/2/macros/author"/tal:content/td
tdtal:content
metal:use-macro="here/3/macros/author"/tal:content/td
...

How do I do that? Even better, is it possible to just open up each file
and read its contents??

  Thanks,
  Ben
   
  

Ben,
First this is wrong:

tdtal:content ...

If should be
td tal:content ...

But that may be wrong in the context you've given. 

Since "do it in python" has been a theme lately, you can also return a
macro from a python script like so:

Where there is an author might be a parameter.
#some python script
#
 return container.YourMacroFolder.someMacro[ author ]
---

And in your ZPT: (where result.author is just a stub for whatever your
using)

tdspan metal:use-macro="python:
context.youPythonScript(result.author)"macro goes
here/span/td

I suggest *always* doing stuff in python when things are not clear.
Then code back into your Page Templates, if desired

DAvid








___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )