Fix deadline default value, get deadline from parent if it exists or today+3days
This commit is contained in:
parent
cfa9530198
commit
40155153f2
|
@ -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)
|
||||
|
|
Reference in New Issue