[Zope] accessing custom properties of file objects
Jesse Goerz
jgoerz@cfl.rr.com
21 Jun 2002 04:13:15 -0400
On Fri, 2002-06-21 at 00:10, Jesse Goerz wrote:
> On Thu, 2002-06-20 at 15:40, Dieter Maurer wrote:
> > Hmm, you do not tell us, it what way the other code does not work...
> >
> > exception? (which one, with Error Type/Value and tracebach)
> > wrong result?
> > something else?
>
> Sorry about that. I posted prematurely. I seem to be able to test if
> the property I created is there but I'd really like to base my
> conditions on the value of the property. Below is my amended code as
> well as the tracebacks.
>
> <table border="1" width="95%" bgcolor="#000000" cellspacing="2"
> cellpadding="2" align="center"
> tal:define="objects here/files;
> sort_on python:(('id', 'nocase', 'asc'),
> ('bobobase_modification_time', 'cmp', 'desc'));
> sorted_objects python:sequence.sort(objects, sort_on)">
>
> <tbody>
> <tr>
> <th>Filename</th>
> <th>Size</th>
> <th>Description</th>
> <th>Last modified</th>
> </tr>
>
> <tr tal:repeat="item sorted_objects">
> <!--
> This one displays all the file objects with a property of "section", but
> I want to display based on the value of "section", i.e. there will be
> multiple different sections throughout the html page, each in its own
> table.
> <div tal:condition="python:exists('item/section')"
> -->
> <div tal:condition="python:'item/section'=='c'"
> tal:omit-tag>
>
> <td>
> <a href="http://jesse.homelinux.net/sample"
> tal:attributes="href item/getId"
> tal:content="item/getId">File_link</a>
> </td>
> <td tal:content="item/file_size">Type</td>
> <td tal:content="item/title">Description</td>
> <td tal:content="item/date_mod" align="center">Last modified</td>
>
> </div>
> </tr>
> </tbody>
> </table>
>
> The statement I'm working on here is:
> <div tal:condition="python:'item/section'=='c'" tal:omit-tag>
> That above gives no errors but outputs only one blank row.
I was having a hard time with the expressions so I tried a python script
instead which seems to work. Here's what I did:
"""
returns all 'File' objects with property 'section' set to 'c'
"""
all_files = context.objectValues('File')
c_files = []
for i in all_files:
try:
if getattr(i, 'section') == 'c':
c_files.append(i)
except:
pass
sequence.sort(c_files)
return c_files
What is the exact syntax of the sort method? I was trying to sort like I did above:
> sort_on python:(('id', 'nocase', 'asc'),
> ('bobobase_modification_time', 'cmp', 'desc'));
> sorted_objects python:sequence.sort(objects, sort_on)">
The docs state that sequence.sort(seq, sort_schema) where sort schema is
a tuple (key, function, direction). I used the exact same values ('id',
'nocase', 'asc') and I get
Error Type: TALESError
Error Value: exceptions.AttributeError on 'None' object has no attribute
'getitem' in "standard:'here/c_section'", at line 22, column 1