I was trying to do a very simple template operation today:

1. Show the Effective Date if it is identical or more recent than the Modification Date

2. Show both Effective and Modification Dates if Modification Date > Effective Date

Should be simple, right?

<p tal:condition="context/EffectiveDate">
Published on […]

<p tal:condition="python: context.EffectiveDate() < context.ModificationDate()">
Modified on […]

Not so:

- EffectiveDate returns a *string* 'None' when it has no value (wtf?)

- Then I think "that's what 'effective' is for" — it return __FLOOR_DATE if unset, so no False there either.

There seems to be no way of getting the effective date to actually return a False value.

I am forced to crazy conditions like these:

tal:condition="python:context.EffectiveDate()!='None' and context.EffectiveDate() < context.ModificationDate()">

…and then Stefan says "I don't know whole story of your condition, you may need to use == and or or whatever, point being you have to guard for EffectiveDate being 'None'"

At which point I want to ask: Can we fix this in CMF 2.1, so it is possible to get False values from the date objects? The current situation seems pretty ridiculous. I might have missed it if there is a better way, but I couldn't find any.

Alexander Limi · http://limi.net

Zope-CMF maillist  -  Zope-CMF@lists.zope.org

See http://collector.zope.org/CMF for bug reports and feature requests

Reply via email to