'Detach a virtual recurring event by duplicating the original and change reccurent values
:param values : dict of value to override on the detached event'

@api.multi
def detach_recurring_event(self, values=None):

    if (not values):
        values = {}
    real_id = calendar_id2real_id(self.id)
    meeting_origin = self.browse(real_id)
    data = self.read(['allday', 'start', 'stop', 'rrule', 'duration'])[0]
    data[('start_date' if data['allday'] else 'start_datetime')] = data['start']
    data[('stop_date' if data['allday'] else 'stop_datetime')] = data['stop']
    if data.get('rrule'):
        data.update(values, recurrent_id=real_id, recurrent_id_date=data.get('start'), rrule_type=False, rrule='', recurrency=False, final_date=(datetime.strptime(data.get('start'), (DEFAULT_SERVER_DATETIME_FORMAT if data['allday'] else DEFAULT_SERVER_DATETIME_FORMAT)) + timedelta(hours=(values.get('duration', False) or data.get('duration')))))
        if data.get('id'):
            del data['id']
        return meeting_origin.copy(default=data)
