def track_mock_reports(self, reports, tracker_id):
     for i, report in enumerate(reports):
         add_report(report)
     trip_delays_ids_list_of_lists = load_by_key(
         get_train_tracker_trip_delays_ids_list_of_lists_key(tracker_id))
     trips = get_trusted_trips(trip_delays_ids_list_of_lists)
     return trips
def track_device(device_id,
                 do_print=False,
                 do_preload_reports=True,
                 set_reports_to_same_weekday_last_week=False,
                 report_limit=10000000):
    #device_coords, device_timestamps, device_accuracies_in_meters, device_accuracies_in_coords = get_location_info_from_device_id(device_id)
    now = ot_utils.get_localtime_now()
    reports_queryset = stop_detector_test.get_device_id_reports(device_id)
    assert reports_queryset.count() > 0, 'No device reports in db'
    tracker_id = device_id

    fps_period_start = time.clock()
    fps_period_length = 100
    if do_preload_reports:
        reports_queryset = list(reports_queryset)
    count = len(reports_queryset) if isinstance(
        reports_queryset, list) else reports_queryset.count()
    for i in xrange(count):
        if i > report_limit:
            break
        if i % fps_period_length == 0:
            elapsed = (time.clock() - fps_period_start)
            if elapsed > 0:
                logger.debug('%d\t%.1f qps' % (i, fps_period_length / elapsed))
            else:
                logger.debug(
                    'Elapsed time should be positive but is %d' % (elapsed))
            fps_period_start = time.clock()

        report = reports_queryset[i]

        if set_reports_to_same_weekday_last_week:
            # fix finding same weekday last week by http://stackoverflow.com/questions/6172782/find-the-friday-of-previous-last-week-in-python
            day_fix = (now.weekday() - report.timestamp.weekday()) % 7
            day = now + datetime.timedelta(days=-day_fix)
            # move day and correct for DST (daylight savings time)
            dst_before = report.get_timestamp_israel_time().dst()
            report.timestamp = report.timestamp.replace(
                year=day.year, month=day.month, day=day.day)
            dst_after = report.get_timestamp_israel_time().dst()
            report.timestamp -= dst_after - dst_before

        add_report(report)

    #tracker.print_tracked_stop_times()
    #tracker.print_possible_trips()
    trip_delays_ids_list_of_lists = load_by_key(
        get_train_tracker_trip_delays_ids_list_of_lists_key(tracker_id))
    trips = get_trusted_trips(trip_delays_ids_list_of_lists)
    return tracker_id, trips
 def track_mock_reports(self, reports, tracker_id):
     for i, report in enumerate(reports):
         add_report(report)
     trips, time_deviation_in_seconds = get_trips(tracker_id)
     trip = get_trusted_trip_or_none(trips, time_deviation_in_seconds)
     return trip