In openerp It will first clean the leave intervals, to have an ordered list of not-overlapping intervals and initiate the current interval to be the base interval then before finishing skip the current interval and go to next beginning after the current interval: skip and get out of the loop because we are outside range.
Use this code in your own module in .py file,
def remove_leaves(self, cr, uid, interval, leave_intervals, context=None):
if not interval:
return interval
if leave_intervals is None:
leave_intervals = []
intervals = []
leave_intervals = self.interval_clean(leave_intervals)
current_interval = [interval[0], interval[1]]
for leave in leave_intervals:
if leave[1] <= current_interval[0]:
continue
if leave[0] >= current_interval[1]:
break
if current_interval[0] < leave[0] < current_interval[1]:
current_interval[1] = leave[0]
intervals.append((current_interval[0], current_interval[1]))
current_interval = [leave[1], interval[1]]
# if current_interval[0] <= leave[1] <= current_interval[1]:
if current_interval[0] <= leave[1]:
current_interval[0] = leave[1]
if current_interval and current_interval[0] < interval[1]:
intervals.append((current_interval[0], current_interval[1]))
return intervals
0 Comment(s)