Example #1
0
def checkNonMatchingTrust(segment, gps_report):
    closest = {
        'match': None,
        'time_error': datetime.timedelta(days=1),
        'dist_error': 1000000
    }
    for match in segment.matching:
        if (match['trust'] is not None) and (match['gps'] is None):
            time_error = abs(
                match['trust']['event_time'] - gps_report['event_time'])
            dist_error = geo_distance.calculateDistance(
                match['trust']['tiploc'], gps_report['tiploc']
            )
            if dist_error < globals.tolerance['distance']\
                    and time_error < globals.tolerance['time']:
                if dist_error < closest['dist_error'] and\
                        time_error < closest['time_error']:
                    closest['match'] = match
                    closest['dist_error'] = dist_error
                    closest['time_error'] = time_error
    if closest['match'] is not None:
        closest['match']['gps'] = gps_report
        closest['match']['dist_error'] = dist_error
        if segment.gps_car_id is None:
           segment.gps_car_id = gps_report['gps_car_id']
           segment.isPlanned = db_queries.isPlanned(segment.gps_car_id, segment.headcode)
        socket_io.emitSegment('update', segment)
        return True
    return False
Example #2
0
def filterByGeniusAllocations(segments, trust):
    potential_segments = []
    for segment in segments:
        if segment.gps_car_id is not None:
            if segment.isPlanned or db_queries.isPlanned(segment.gps_car_id, trust['headcode']):
                potential_segments.append(segment)
    if len(potential_segments) > 0:
        return potential_segments
    return segments
Example #3
0
def getBestStop(segments1, trust, with_seq):
    segments = filter(lambda x: x['segment'].gps_car_id is not None, segments1)
    segments.sort(key=lambda x: isBetterSegment(x), reverse=True)
    for segment1 in segments:
        segment = segment1['segment']
        segment.matching.sort(key=lambda x: getTimeForMatching(x), reverse=True)
        matching = segment.matching[0: globals.backmatches]
        best = getBestStopHelper(matching, trust, True)
        if best is not None:
            best['match']['trust'] = trust
            best['match']['dist_error'] = best['dist_error']
            if segment.headcode is None:
                segment.headcode = trust['headcode']
                segment.cif_uid = db_queries.cif_uidFromHeadcode(trust['headcode'])
                segment.isPlanned = db_queries.isPlanned(segment.gps_car_id, trust['headcode'])
                segment.origin_location = trust['origin_location']
                segment.origin_departure = trust['origin_departure']
            socket_io.emitSegment('update', segment)
            return True
    return False
Example #4
0
 def test_isPlanned2(self):
     result = db_queries.isPlanned('BN30', '5A04')
     self.assertEqual(result, False)
Example #5
0
 def test_isPlanned1(self):
     result = db_queries.isPlanned('82215', '5D02')
     self.assertEqual(result, True)