[Zope] Creating links dynamically
John Poltorak
jp at warpix.org
Wed Jun 1 14:14:26 EDT 2005
On Wed, Jun 01, 2005 at 11:05:04AM -0500, J Cameron Cooper wrote:
> John Poltorak wrote:
> > On Tue, May 31, 2005 at 07:17:46PM +0300, Vital Lobachevsky wrote:
> >
> >>John Poltorak wrote:
> >>
> >>Well, it's really easy. Create 'linkList' (Python Script) in the folder
> >>where you page lives or somewhere higher in folder hierarchy:
> >>
> >>## Script (Python) "linkList"
> >>return [
> >> ('http://www.google.com/', 'Google'),
> >> ('http://www.yahoo.com/', 'Yahoo'),
> >>]
> >>
> >>If your page is Page Template, it maybe something like this
> >>
> >><html>
> >><body>
> >><h1>Search Engines</h1>
> >><tal:block repeat="item here/linkList">
> >> <a tal:content="python:item[1]"
> >> tal:attributes="href python:item[0]"></a><br />
> >></tal:block>
> >></body>
> >></html>
> >>
> >>If you page is DTML Method, you can do the same using <dtml-in> tag.
> >
> > How would I extend this so that the Python script could read data from an
> > independently maintained text file which could uploaded periodically?
> >
> > ie using a file containing something like:-
> >
> > http://www.google.com/,Google
> > http://www.yahoo.com/,Yahoo
>
> To get to the local file system, you must use an external method, which
> works very much like a Python script, but gets its code from a Python
> file on the file system. This is for security. You can read all about
> this in the Zope book.
>
> Your external method should return a list just like the Python script
> above. How you generate it is up to you. For your file format example,
> you could use the Python 'file' object's 'readlines' method and use
> 'split' to decode the lines::
>
> f = open('myfile.links')
> retval = ()
> for line in f.readlines():
> elt = line.split(',')
> retval += (elt,)
> return retval
>
> You might also be able to use the 'csv' module.
>
> Now, if you're uploading files to Zope, rather than the file system,
> it's a little different, in that you have to get the data from an
> object, and you'll probably have to split it by newline yourself.
This is the way I had been thinking of setting it up, but can't find an
example of opening and reading such an object.
I thought there may be something here:-
http://www.plope.com/Books/2_7Edition/BasicScripting.stx#1-2
but couldn't find anything which looked relevant.
> --jcc
>
> --
> "Building Websites with Plone"
> http://plonebook.packtpub.com/
--
John
More information about the Zope
mailing list