[Zope] "Picture of the day" product

Tres Seaver tseaver@digicool.com
Mon, 29 Jan 2001 23:03:24 -0500 (EST)


On Mon, 29 Jan 2001, Timothy Wilson wrote:

> On Wed, 17 Jan 2001, Tres Seaver wrote:
> 
> > > What I'm not sure about is how to have Zope automatically
> > > display the photo for a day, then archive it. Would a
> > > boolean property of the ZClass work? Is it possible to have
> > > Zope set the property of a ZClass instance at certain time?
> > > Any thoughts on how this would be designed?
> > 
> > This kind of thing is a "query-on-metadata" application;  I
> > would put all these images into a single folder (maybe
> > chunked into subfolders by month?), mark them each with an
> > 'effective' property (of type 'Date'), and then select the
> > appropriate image via a catalog query, e.g.::
> > 
> >   <dtml-in "Catalog( meta_type='Image'
> >                    , effective=( ZopeTime().earliestTime(),
> > ZopeTime().latestTime() )
> >                    , effective_usage='range:min:max'
> >                    # other query parms here, including any sorting...
> >                    )">
> >   <dtml-if sequence-start>
> >     <dtml-var "Catalog.getobject( data_record_id_ )">
> >   </dtml-if>
> >   </dtml-in>
> > 
> > Or you could just have the catalog fetch the images sorted by
> > effective/descending, and then pick off the first one;  this
> > would keep an image around until supplanted by a newer one.
> 
> Tres, I like this second solution. Each 'Photo' instance has a
> display_date property (of type 'date') that should determine
> when it's displayed (strangely enough :-)
> 
> I'd like to grab all instances with a display_date <= today's
> date. I can't figure out exactly how to do that in DTML or a
> Python Script. Once I have that list of instances, I'll simply
> pull off the latest one as you suggested.
> 
> Would someone be willing to give an example of how to do this
> in DTML and a PythonScript? I think it would be an interesting
> comparison. BTW, there's nothing quite like this in the Zope
> Book. Nearly all of the examples there are using form input.
> Perhaps this type of Catalog searching could be expounded on
> there.

I don't know where it would be in the book it would be, but
I do this something like::

  <dtml-in expr="theCatalog( meta_type='Photo'
                           , display_date=ZopeTime()
                           , display_date_usage='range:max'
                           , sort_on='display_date'
                           , sort_order='reverse'
                           )">

The expression would be basically the same in a PythonScript::

  return context.theCatalog( meta_type='Photo'
                           , display_date=ZopeTime()
                           , display_date_usage='range:max'
                           , sort_on='display_date'
                           , sort_order='reverse'
                           )

Hope that helps!

Tres.
-- 
===============================================================
Tres Seaver                                tseaver@digicool.com
Digital Creations     "Zope Dealers"       http://www.zope.org