+ def unlink_events(self, cr, uid, ids, context=None):
+ """
+ This function deletes event which are linked with the event with recurrent_uid
+ (Removes the events which refers to the same UID value)
+ """
+ if not context:
+ context = {}
+ for event_id in ids:
+ cr.execute('select id from %s where recurrent_uid=%s' % (self._table, event_id))
+ r_ids = map(lambda x: x[0], cr.fetchall())
+ self.unlink(cr, uid, r_ids, context=context)
+ return True
+
def _set_rrulestring(self, cr, uid, id, name, value, arg, context=None):
"""
Sets values of fields that defines event recurrence from the value of rrule string
def _set_rrulestring(self, cr, uid, id, name, value, arg, context=None):
"""
Sets values of fields that defines event recurrence from the value of rrule string
else:
result[event] = self.compute_rule_string(cr, uid, {'freq': datas.get('rrule_type').upper(), 'interval': 1}, context=context)
else:
result[event] = self.compute_rule_string(cr, uid, {'freq': datas.get('rrule_type').upper(), 'interval': 1}, context=context)
+ for id, myrule in result.items():
+ #Remove the events generated from recurrent event
+ if not myrule:
+ self.unlink_events(cr, uid, [id], context=context)
return result
_columns = {
return result
_columns = {
"""
res = False
for event_datas in self.read(cr, uid, ids, ['date', 'rrule', 'exdate'], context=context):
"""
res = False
for event_datas in self.read(cr, uid, ids, ['date', 'rrule', 'exdate'], context=context):
- if isinstance(event_datas['id'], (int, long)):
- res = super(calendar_event, self).unlink(cr, uid, event_datas['id'])
+ event_id = event_datas['id']
+ if isinstance(event_id, (int, long)):
+ res = super(calendar_event, self).unlink(cr, uid, event_id, context=context)
self.pool.get('res.alarm').do_alarm_unlink(cr, uid, [event_id], self._name)
self.pool.get('res.alarm').do_alarm_unlink(cr, uid, [event_id], self._name)
+ self.unlink_events(cr, uid, [event_id], context=context)
- event_id, date_new = event_datas['id'].split('-')
- event_id = [int(event_id)]
+ str_event, date_new = event_id.split('-')
+ event_id = int(str_event)
if event_datas['rrule']:
# Remove one of the recurrent event
date_new = time.strftime("%Y%m%dT%H%M%S", \
time.strptime(date_new, "%Y%m%d%H%M%S"))
exdate = (event_datas['exdate'] and (event_datas['exdate'] + ',') or '') + date_new
if event_datas['rrule']:
# Remove one of the recurrent event
date_new = time.strftime("%Y%m%dT%H%M%S", \
time.strptime(date_new, "%Y%m%d%H%M%S"))
exdate = (event_datas['exdate'] and (event_datas['exdate'] + ',') or '') + date_new
- res = self.write(cr, uid, event_id, {'exdate': exdate})
+ res = self.write(cr, uid, [event_id], {'exdate': exdate})
- res = super(calendar_event, self).unlink(cr, uid, event_id)
- self.pool.get('res.alarm').do_alarm_unlink(cr, uid, event_id, self._name)
+ res = super(calendar_event, self).unlink(cr, uid, [event_id], context=context)
+ self.pool.get('res.alarm').do_alarm_unlink(cr, uid, [event_id], self._name)
+ self.unlink_events(cr, uid, [event_id], context=context)
return res
def create(self, cr, uid, vals, context=None):
return res
def create(self, cr, uid, vals, context=None):