Here are some useful timestamps you can extract from content objects and examples how to use them.
Timestamps are part of metadata. For Archetypes, metadata is defined in ExtensibleMetadata.
Zope 2 DateTime date objects are used.
Products.Archetypes.ExtensibleMetadata.modified() function will give the last modification date as Zope DateTime object. This is part of Dublin Core metadata.
Example (Zope console debug mode):
>>> app.yoursite.yourpage.modified()
DateTime('2009/02/04 10:56:25.740 Universal')
You might want to manual set modification date
Example (Zope console debug mode, assume obj is Archetypes content item):
>>> obj.modified()
>>> DateTime('2009/10/05 16:18:32.813 GMT+2')
>>> import DateTime
>>> now = DateTime.DateTime()
>>> now
>>> DateTime('2010/01/20 12:58:38.033 GMT+2')
>>> obj.setModificationDate(now)
>>> obj.modified()
>>> DateTime('2010/01/20 12:58:38.033 GMT+2')
Below is an example how to create a custom last modified viewlet.
Viewlet code:
from zope.component import getMultiAdapter
from plone.app.layout.viewlets.common import ViewletBase
class LastModifiedViewlet(ViewletBase):
""" Viewlet to change the document last modification time.
"""
def modified(self):
"""
http://svn.plone.org/svn/plone/Plone/trunk/Products/CMFPlone/browser/ploneview.py
@return: Last modified as a string, local time format
"""
# Get Plone helper view
# which we use to convert the date to local format
plone = getMultiAdapter((self.context, self.request), name="plone")
time = self.context.modified()
return plone.toLocalizedTime(time)
Template (lastmodified.py):
<div id="last-modified">
Last modified: <span tal:content="view/modified" />
</div>
Viewlet registration:
<!-- Last modification date, register only for contentish context objects -->
<browser:viewlet
name="yourapp.lastmodified"
for="Products.CMFCore.interfaces.IContentish"
manager="plone.app.layout.viewlets.interfaces.IBelowContent"
template="viewlets/lastmodified.pt"
class=".common.LastModifiedViewlet"
permission="zope2.View"
/>
CSS:
#last-modified {
text-align: right;
font-size: 80%;
color: #888;
}
Products.Archetypes.ExtensibleMetadata.created() function will give the creation date as Zope DateTime object. This is part of Dublin Core metadata.
Example (Zope console debug mode):
>>> app.yoursite.yourpage.created()
DateTime('2009/02/04 10:56:25.740 Universal')