[FIX] calendar: set duration on either stop or start date updated
Not only when both are.
This commit is contained in:
parent
dd558c40b8
commit
faf45db0d2
|
@ -851,10 +851,11 @@ class calendar_event(osv.Model):
|
|||
if values.get('start_datetime') or values.get('start_date') or values.get('start') \
|
||||
or values.get('stop_datetime') or values.get('stop_date') or values.get('stop'):
|
||||
allday = values.get("allday", None)
|
||||
event = self.browse(cr, uid, id, context=context)
|
||||
|
||||
if allday is None:
|
||||
if id:
|
||||
allday = self.read(cr, uid, [id], ['allday'], context=context)[0].get('allday')
|
||||
allday = event.allday
|
||||
else:
|
||||
allday = False
|
||||
_logger.warning("Calendar - All day is not specified, arbitrarily set to False")
|
||||
|
@ -871,10 +872,16 @@ class calendar_event(osv.Model):
|
|||
values[fld] = values['%s_%s' % (fld, key)]
|
||||
|
||||
diff = False
|
||||
if allday and values.get('stop_date') and values.get('start_date'):
|
||||
diff = datetime.strptime(values['stop_date'].split(' ')[0], DEFAULT_SERVER_DATE_FORMAT) - datetime.strptime(values['start_date'].split(' ')[0], DEFAULT_SERVER_DATE_FORMAT)
|
||||
elif values.get('stop_datetime') and values.get('start_datetime'):
|
||||
diff = datetime.strptime(values['stop_datetime'].split('.')[0], DEFAULT_SERVER_DATETIME_FORMAT) - datetime.strptime(values['start_datetime'].split('.')[0], DEFAULT_SERVER_DATETIME_FORMAT)
|
||||
if allday and (values.get('stop_date') or values.get('start_date')):
|
||||
stop_date = values.get('stop_date') or event.stop_date
|
||||
start_date = values.get('start_date') or event.start_date
|
||||
if stop_date and start_date:
|
||||
diff = datetime.strptime(stop_date.split(' ')[0], DEFAULT_SERVER_DATE_FORMAT) - datetime.strptime(start_date.split(' ')[0], DEFAULT_SERVER_DATE_FORMAT)
|
||||
elif values.get('stop_datetime') or values.get('start_datetime'):
|
||||
stop_datetime = values.get('stop_datetime') or event.stop_datetime
|
||||
start_datetime = values.get('start_datetime') or event.start_datetime
|
||||
if stop_datetime and start_datetime:
|
||||
diff = datetime.strptime(stop_datetime.split('.')[0], DEFAULT_SERVER_DATETIME_FORMAT) - datetime.strptime(start_datetime.split('.')[0], DEFAULT_SERVER_DATETIME_FORMAT)
|
||||
if diff:
|
||||
duration = float(diff.days) * 24 + (float(diff.seconds) / 3600)
|
||||
values['duration'] = round(duration, 2)
|
||||
|
|
Loading…
Reference in New Issue