Skip to content
Snippets Groups Projects
Commit f5ee2e49 authored by vlorentz's avatar vlorentz
Browse files

Simplify lowest-timedelta search in get_origin_visit.

parent 1d0d63e6
No related branches found
No related tags found
1 merge request!140Simplify lowest-timedelta search in get_origin_visit.
......@@ -149,29 +149,18 @@ def get_origin_visit(origin_info, visit_ts=None, visit_id=None,
return v
return visits[-1]
parsed_visit_ts = math.floor(parse_timestamp(visit_ts).timestamp())
visit_idx = None
for i, visit in enumerate(visits):
ts = math.floor(parse_timestamp(visit['date']).timestamp())
if i == 0 and parsed_visit_ts <= ts:
return visit
elif i == len(visits) - 1:
if parsed_visit_ts >= ts:
return visit
else:
next_ts = math.floor(
parse_timestamp(visits[i+1]['date']).timestamp())
if parsed_visit_ts >= ts and parsed_visit_ts < next_ts:
if (parsed_visit_ts - ts) < (next_ts - parsed_visit_ts):
visit_idx = i
break
else:
visit_idx = i+1
break
target_visit_ts = math.floor(parse_timestamp(visit_ts).timestamp())
# Find the visit with date closest to the target (in absolute value)
(abs_time_delta, visit_idx) = min(
((math.floor(parse_timestamp(visit['date']).timestamp()), i)
for (i, visit) in enumerate(visits)),
key=lambda ts_and_i: abs(ts_and_i[0] - target_visit_ts))
if visit_idx is not None:
visit = visits[visit_idx]
# If multiple visits have the same date, select the one with
# the largest id.
while visit_idx < len(visits) - 1 and \
visit['date'] == visits[visit_idx+1]['date']:
visit_idx = visit_idx + 1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment