This is insane ... I have an example (using DTML) of this working perfectly and an example (using TAL) where it doesn't work at all: I have a DTML method which is a form that allows users to add their name (staff_name), some text (description) and a link (link_url) <p>Details: <br> <textarea name="description" rows="10" cols="60"></textarea> </p> --- on submit it calls a DTML method named addEntryAction which calls a python method 'add' <dtml-call expr="add(staff_name, link_url, description)"> --- the python method creates a file and adds the description (and the other parameters) # create a unique file id id='message_%d' % len(context.objectIds()) # create the document context.manage_addProduct['OFSP'].manage_addFile(id, title="", file=description) ----- then you get booted back to the page that iterates through all the postings. this is a TAL file called index.html <span tal:condition="python: item.meta_type == 'File'"> <b tal:content="item/staff_name"> name </b> wrote on <span tal:define="mtime item/bobobase_modification_time" tal:content="python:mtime.strftime('%d/%m/%Y %H:%M')">date </span> and added the link: <b tal:content="item/link_url">link</b><br> saying <b tal:define="pss modules/Products/PythonScripts/standard" tal:content="python: pss.newline_to_br(item.description)"> news </b> <hr> </span> ------ Everything works and displays except description which displays as the word description. When I add an item and then go back and look at the file created - the text is always 'description' no matter what I typed. What's going on here??? Kate
On Wed, 2003-12-03 at 13:10, Kate Legere wrote:
--- on submit it calls a DTML method named addEntryAction which calls a python method 'add'
You could probably just call the python method directly... but anyway.
# create the document context.manage_addProduct['OFSP'].manage_addFile(id, title="", file=description)
OK... note that here you're passing description to a constructor, you aren't creating an attribute called "description".
<b tal:define="pss modules/Products/PythonScripts/standard" tal:content="python: pss.newline_to_br(item.description)">
There is no description attribute in this object. You want to *call* the object if you're looking to have it display its contents. I'm guessing the reason this appeared to work in DTML is that you still had the "description" variable in your namespace. ZPT is not quite so tolerant. I'd also be you only tested the DTML version on one upload. Had you tested on multiple uploads, you probably would have seen that all objects had the same description property. HTH, Dylan
Kate Legere wrote:
This is insane ... I have an example (using DTML) of this working perfectly and an example (using TAL) where it doesn't work at all:
I have a DTML method which is a form that allows users to add their name (staff_name), some text (description) and a link (link_url)
<p>Details: <br> <textarea name="description" rows="10" cols="60"></textarea> </p>
--- on submit it calls a DTML method named addEntryAction which calls a python method 'add'
<dtml-call expr="add(staff_name, link_url, description)">
--- the python method creates a file and adds the description (and the other parameters)
# create a unique file id id='message_%d' % len(context.objectIds())
# create the document context.manage_addProduct['OFSP'].manage_addFile(id, title="", file=description)
----- then you get booted back to the page that iterates through all the postings. this is a TAL file called index.html
<span tal:condition="python: item.meta_type == 'File'"> <b tal:content="item/staff_name"> name </b> wrote on
<span tal:define="mtime item/bobobase_modification_time" tal:content="python:mtime.strftime('%d/%m/%Y %H:%M')">date </span>
and added the link: <b tal:content="item/link_url">link</b><br> saying
<b tal:define="pss modules/Products/PythonScripts/standard" tal:content="python: pss.newline_to_br(item.description)"> news </b> <hr> </span>
------ Everything works and displays except description which displays as the word description. When I add an item and then go back and look at the file created - the text is always 'description' no matter what I typed.
What's going on here???
Got me. In fact, it's so strange I'll even allow the three question marks. Everything looks right to me, though I can't see the parameter list for your Python script. Seems like you've got a default of 'description' that's being applied or a literal of the same being passed in somewhere. But I don't see any of these. So: narrow it down a bit. Print the request object in the method to which you submit the form. Print the value of 'description' in the Python script. Hardcode values in along the chain and see where things change. Change the names of parameters and variables to make sure you're spelling everything right. Put in a 'span' with 'tal:replace="item/description"' to rule out the TAL statement. Also, why the intermediate DTML method? Unless it does something I can't see, submit straight to the Python script and return or redirect to the final page from there. If you never see anything rendered by it, a DTML method has absolutely no reason to exist. --jcc -- "My point and period will be throughly wrought, Or well or ill, as this day's battle's fought."
participants (3)
-
Dylan Reinhardt -
J. Cameron Cooper -
Kate Legere