[IMP] calendar.event: _compute should be done in batch + consistent @multi attributes

This commit is contained in:
Olivier Dony 2014-08-05 17:49:47 +02:00
parent 6445ce7922
commit 4b2f2a1561
1 changed files with 13 additions and 13 deletions

View File

@ -748,23 +748,23 @@ class calendar_event(osv.Model):
res = {}
if not isinstance(fields, list):
fields = [fields]
for meeting_id in ids:
res[meeting_id] = {}
attendee = self._find_my_attendee(cr, uid, [meeting_id], context)
meeting = self.browse(cr, uid, [meeting_id], context=context)[0]
for meeting in self.browse(cr, uid, ids, context=context):
meeting_data = {}
res[meeting.id] = meeting_data
attendee = self._find_my_attendee(cr, uid, [meeting.id], context)
for field in fields:
if field == 'is_attendee':
res[meeting_id][field] = True if attendee else False
meeting_data[field] = bool(attendee)
elif field == 'attendee_status':
res[meeting_id][field] = attendee.state if attendee else 'needsAction'
meeting_data[field] = attendee.state if attendee else 'needsAction'
elif field == 'display_time':
res[meeting_id][field] = self._get_display_time(cr, uid, meeting.start, meeting.stop, meeting.duration, meeting.allday, context=context)
meeting_data[field] = self._get_display_time(cr, uid, meeting.start, meeting.stop, meeting.duration, meeting.allday, context=context)
elif field == "display_start":
res[meeting_id][field] = meeting.start_date if meeting.allday else meeting.start_datetime
meeting_data[field] = meeting.start_date if meeting.allday else meeting.start_datetime
elif field == 'start':
res[meeting_id][field] = meeting.start_date if meeting.allday else meeting.start_datetime
meeting_data[field] = meeting.start_date if meeting.allday else meeting.start_datetime
elif field == 'stop':
res[meeting_id][field] = meeting.stop_date if meeting.allday else meeting.stop_datetime
meeting_data[field] = meeting.stop_date if meeting.allday else meeting.stop_datetime
return res
def _get_rulestring(self, cr, uid, ids, name, arg, context=None):
@ -857,10 +857,10 @@ class calendar_event(osv.Model):
'is_attendee': fields.function(_compute, string='Attendee', type="boolean", multi='attendee'),
'attendee_status': fields.function(_compute, string='Attendee Status', type="selection", selection=calendar_attendee.STATE_SELECTION, multi='attendee'),
'display_time': fields.function(_compute, string='Event Time', type="char", multi='attendee'),
'display_start': fields.function(_compute, string='Date', type="char", multi='display_start', store=True),
'display_start': fields.function(_compute, string='Date', type="char", multi='attendee', store=True),
'allday': fields.boolean('All Day', states={'done': [('readonly', True)]}),
'start': fields.function(_compute, string='Calculated start', type="datetime", multi='start', store=True, required=True),
'stop': fields.function(_compute, string='Calculated stop', type="datetime", multi='stop', store=True, required=True),
'start': fields.function(_compute, string='Calculated start', type="datetime", multi='attendee', store=True, required=True),
'stop': fields.function(_compute, string='Calculated stop', type="datetime", multi='attendee', store=True, required=True),
'start_date': fields.date('Start Date', states={'done': [('readonly', True)]}, track_visibility='onchange'),
'start_datetime': fields.datetime('Start DateTime', states={'done': [('readonly', True)]}, track_visibility='onchange'),
'stop_date': fields.date('End Date', states={'done': [('readonly', True)]}, track_visibility='onchange'),