How to disply a property of an object created with a Z class
I used a Z class to write a basic news pinup board for my site. Everything is working fine but I reached a point where I am trying to publish only the heading and a summary of the message while asking users to click on a link to view the body of the message I have created a newster class which is my news server instance. The newster class contains the messages class which is the blueprint for each of the messages that I am going to add. Each message is an object in the newster directory. The message objects each have a number of properties such as expired, title, id, summary and body. I have two methods: 1. index_html that prints the title and summary of each message instance one after the other on a long page. 2. display_body that will print the body of the message in a new window. The problem: I pass the id of the message whose body must be displayed in a url like: display_body?document_id=<id> Here is what I believe the basic code of the display_body method should be: <dtml-var standard_html_header> <dtml-with REQUEST> <dtml-with expr="document_id"> <dtml-var body> </dtml-with> </dtml-with> <dtml-var standard_html_footer> I can print the document_id as a dtml-var but somehow I cannot get zope to understand it is the name of an object whose body property I want to display. But, somehow, zope does not push the properties of the document_id (which it received through the web) on top of the namespace and therefore it believes that there is no such thing as a body property. Any help will be greatly appreciated. This is driving me nuts. Thanks, Pieter
Oh, I also didn't add the following bit of info. If I hard code the display_body method to be: <dtml-var standard_html_header> <dtml-with REQUEST> <dtml-with name="001"> # 001 is the id of the message <dtml-var body> # body is a text property of the message </dtml-with> </dtml-with> <dtml-var standard_html_footer> Then it works fine. Thanks, Pieter -----Original Message----- From: zope-admin@zope.org [mailto:zope-admin@zope.org] On Behalf Of pieter claassen Sent: 26 January 2003 23:12 To: zope@zope.org Subject: [Zope] How to disply a property of an object created with a Z class I used a Z class to write a basic news pinup board for my site. Everything is working fine but I reached a point where I am trying to publish only the heading and a summary of the message while asking users to click on a link to view the body of the message I have created a newster class which is my news server instance. The newster class contains the messages class which is the blueprint for each of the messages that I am going to add. Each message is an object in the newster directory. The message objects each have a number of properties such as expired, title, id, summary and body. I have two methods: 1. index_html that prints the title and summary of each message instance one after the other on a long page. 2. display_body that will print the body of the message in a new window. The problem: I pass the id of the message whose body must be displayed in a url like: display_body?document_id=<id> Here is what I believe the basic code of the display_body method should be: <dtml-var standard_html_header> <dtml-with REQUEST> <dtml-with expr="document_id"> <dtml-var body> </dtml-with> </dtml-with> <dtml-var standard_html_footer> I can print the document_id as a dtml-var but somehow I cannot get zope to understand it is the name of an object whose body property I want to display. But, somehow, zope does not push the properties of the document_id (which it received through the web) on top of the namespace and therefore it believes that there is no such thing as a body property. Any help will be greatly appreciated. This is driving me nuts. Thanks, Pieter
you will need to actually get the object from the string id <dtml-with "_.getattr(this(), document_id)"> <dtml-var body> </dtml-with> Or simply <dtml-var "(_.getattr(this(), document_id)).body"> I've not tested this. See the cookbook entry at: http://www.zopelabs.com/cookbook/1001104105 -- Vattekkat S Babu http://vsbabu.org/ On Sun, 2003-01-26 at 19:21, pieter claassen wrote:
Oh, I also didn't add the following bit of info. If I hard code the display_body method to be:
<dtml-var standard_html_header>
<dtml-with REQUEST>
<dtml-with name="001"> # 001 is the id of the message
<dtml-var body> # body is a text property of the message
</dtml-with>
</dtml-with>
<dtml-var standard_html_footer>
Then it works fine.
Thanks,
Pieter
-----Original Message----- From: zope-admin@zope.org [mailto:zope-admin@zope.org] On Behalf Of pieter claassen Sent: 26 January 2003 23:12 To: zope@zope.org Subject: [Zope] How to disply a property of an object created with a Z class
I used a Z class to write a basic news pinup board for my site. Everything is working fine but I reached a point where I am trying to publish only the heading and a summary of the message while asking users to click on a link to view the body of the message
I have created a newster class which is my news server instance. The newster class contains the messages class which is the blueprint for each of the messages that I am going to add. Each message is an object in the newster directory.
The message objects each have a number of properties such as expired, title, id, summary and body.
I have two methods:
1. index_html that prints the title and summary of each message instance one after the other on a long page.
2. display_body that will print the body of the message in a new window.
The problem:
I pass the id of the message whose body must be displayed in a url like: display_body?document_id=<id>
Here is what I believe the basic code of the display_body method should be:
<dtml-var standard_html_header>
<dtml-with REQUEST>
<dtml-with expr="document_id">
<dtml-var body>
</dtml-with>
</dtml-with>
<dtml-var standard_html_footer>
I can print the document_id as a dtml-var but somehow I cannot get zope to understand it is the name of an object whose body property I want to display.
But, somehow, zope does not push the properties of the document_id (which it received through the web) on top of the namespace and therefore it believes that there is no such thing as a body property.
Any help will be greatly appreciated. This is driving me nuts.
Thanks,
Pieter
Satheesh Babu wrote at 2003-1-26 21:22 -0500:
you will need to actually get the object from the string id
<dtml-with "_.getattr(this(), document_id)"> Often, you can use the simpler: "_.getitem(document_id)".
"getitem" looks in the complete DTML namespace while "getattr" looks only in the namespace of the given object's attributes (its own and acquired ones). Dieter
participants (3)
-
Dieter Maurer -
pieter claassen -
Satheesh Babu