Fix deadline default value, get deadline from parent if it exists or today+3days

This commit is contained in:
Vincent Fretin 2013-07-27 16:12:00 +02:00
parent cfa9530198
commit 40155153f2
1 changed files with 15 additions and 9 deletions

View File

@ -4,9 +4,10 @@ import datetime
from z3c.form.browser.select import SelectFieldWidget
from zope import schema
from zope.interface import provider
from Products.CMFPlone.utils import base_hasattr
from plone.autoform import directives as form
from plone.directives.form import default_value
from plone.formwidget.datetime.z3cform.widget import DatetimeFieldWidget
from plone.supermodel import model
from plone.theme.interfaces import IDefaultPloneLayer
@ -22,12 +23,25 @@ class ICollectiveTaskLayer(IDefaultPloneLayer):
"""Marker interface that defines a Zope 3 browser layer."""
@provider(schema.interfaces.IContextAwareDefaultFactory)
def deadlineDefaultValue(context):
"""Default value for deadline field, copy deadline of the parent (context),
or set it to today+3 days at 12:00"""
if base_hasattr(context, 'deadline'):
return context.deadline
date = datetime.datetime.today() + datetime.timedelta(days=3)
hour = datetime.time(12, 0)
return datetime.datetime.combine(date, hour)
class IBaseTask(model.Schema):
"""Interface for all "tasks" content types"""
title = schema.TextLine(title=_(u'Title'))
note = schema.Text(title=_(u'Note'),
required=False)
deadline = schema.Datetime(title=_(u'Deadline'),
defaultFactory=deadlineDefaultValue,
required=False)
form.widget(deadline=DatetimeFieldWidget)
@ -57,11 +71,3 @@ class IBaseTask(model.Schema):
form.widget(responsible=AjaxChosenMultiFieldWidget)
form.order_after(note='responsible')
@default_value(field=IBaseTask['deadline'])
def deadlineDefaultValue(data):
"""Default value for deadline field today+3 days at 18:00"""
date = datetime.datetime.today() + datetime.timedelta(days=3)
hour = datetime.time(12, 0)
return datetime.datetime.combine(date, hour)