<commit_before># -*- coding: utf-8 -*-

from database.database_access import get_dao
from gtfslib.model import Route, StopTime, Shape
from gtfsplugins import decret_2015_1610
from database.database_access import get_dao
from services.check_urban import check_urban_category

def get_route(agency_id, routeId):
	dao = get_dao(agency_id)
	parsedRoute = dict()
	listPoints = list()

	route = dao.routes(fltr=Route.route_id == routeId)
	print(route)
	parsedRoute["id"] = route[0].route_id
	parsedRoute["name"] = route[0].route_long_name
	parsedRoute["category"] = check_urban_category(route[0].trips)
	# All trips have same trip_id so we may use only the first : route.trips[0]
	_get_route_shapepoints(dao, route[0].trips[0].shape_id, listPoints)
	_get_route_stops(dao, route[0].trips[0].trip_id, listPoints)
	parsedRoute['points'] = listPoints
			
	return parsedRoute

'''	Private methods '''

def _get_route_shapepoints(dao, shapeId, listPoints):
	countPoints = 0

	shape = dao.shape(shapeId)
	
	if shape is not None:
		for point in shape.points:
			countPoints += 1
			parsedPoint = dict()
			parsedPoint['id'] = str(point.feed_id)+str(point.shape_id)+str(point.shape_pt_sequence)
			parsedPoint['name'] = "no_name"
			parsedPoint['is_stop'] = False
			parsedPoint['lat'] = point.shape_pt_lat
			parsedPoint['lng'] = point.shape_pt_lon
			listPoints.append(parsedPoint)

	print('Nb shape points = '+str(countPoints))
	return

def _get_route_stops(dao, tripId, listPoints):
	countStops = 0

	stoptimes = dao.stoptimes(fltr=StopTime.trip_id == tripId)

	for stoptime in stoptimes:
		stop = dao.stop(stoptime.stop_id)

		if stop is not None:
			countStops += 1
			parsedStop = dict()
			parsedStop['id'] = stop.stop_id
			parsedStop['name'] = stop.stop_name
			parsedStop['is_stop'] = True
			parsedStop['lat'] = stop.stop_lat
			parsedStop['lng'] = stop.stop_lon
			if not _check_already_in(listPoints, parsedStop):
				listPoints.append(parsedStop)

	print('Nb stop points = '+str(countStops))
	return 


def _same_position(pointA, pointB):
	return pointA.get('lat') == pointB.get('lat') and pointA.get('lng') == pointB.get('lng')

def _set_is_stop(pointToModifiy, stop):
	pointToModifiy['is_stop'] = True
	pointToModifiy['name'] = "tralala"
	pointToModifiy['id'] = stop['id']

def _check_already_in(points, aPoint):
	for point in points:
		if _same_position(point, aPoint):
			_set_is_stop(point, aPoint)
			return True
	return False<commit_msg>Modify lat lng structure<commit_after># -*- coding: utf-8 -*-

from database.database_access import get_dao
from gtfslib.model import Route, StopTime, Shape
from gtfsplugins import decret_2015_1610
from database.database_access import get_dao
from services.check_urban import check_urban_category

def get_route(agency_id, routeId):
	dao = get_dao(agency_id)
	parsedRoute = dict()
	listPoints = list()

	route = dao.routes(fltr=Route.route_id == routeId)
	print(route)
	parsedRoute["id"] = route[0].route_id
	parsedRoute["name"] = route[0].route_long_name
	parsedRoute["category"] = check_urban_category(route[0].trips)
	# All trips have same trip_id so we may use only the first : route.trips[0]
	_get_route_shapepoints(dao, route[0].trips[0].shape_id, listPoints)
	_get_route_stops(dao, route[0].trips[0].trip_id, listPoints)
	parsedRoute['points'] = listPoints
			
	return parsedRoute


'''	Private methods '''

def _get_route_shapepoints(dao, shapeId, listPoints):
	countPoints = 0

	shape = dao.shape(shapeId)
	
	if shape is not None:
		for point in shape.points:
			countPoints += 1
			parsedPoint = dict()
			parsedPoint['id'] = str(point.feed_id)+str(point.shape_id)+str(point.shape_pt_sequence)
			parsedPoint['name'] = "no_name"
			parsedPoint['is_stop'] = False
			parsedPoint['location'] = {'lat': point.shape_pt_lat, 'lng': point.shape_pt_lon}
			listPoints.append(parsedPoint)

	print('Nb shape points = '+str(countPoints))
	return

def _get_route_stops(dao, tripId, listPoints):
	countStops = 0

	stoptimes = dao.stoptimes(fltr=StopTime.trip_id == tripId)

	for stoptime in stoptimes:
		stop = dao.stop(stoptime.stop_id)

		if stop is not None:
			countStops += 1
			parsedStop = dict()
			parsedStop['id'] = stop.stop_id
			parsedStop['name'] = stop.stop_name
			parsedStop['is_stop'] = True
			parsedStop['location'] = {'lat': stop.stop_lat, 'lng': stop.stop_lon}
			if not _check_already_in(listPoints, parsedStop):
				listPoints.append(parsedStop)

	print('Nb stop points = '+str(countStops))
	return 


def _same_position(pointA, pointB):
	return pointA['location'].get('lat') == pointB['location'].get('lat') and pointA['location'].get('lng') == pointB['location'].get('lng')

def _set_is_stop(pointToModifiy, stop):
	pointToModifiy['is_stop'] = True
	pointToModifiy['name'] = stop['name']
	pointToModifiy['id'] = stop['id']

def _check_already_in(points, aPoint):
	for point in points:
		if _same_position(point, aPoint):
			_set_is_stop(point, aPoint)
			return True
	return False
{'fraction_non_alphanumeric': 0.1293451899757478, 'fraction_numerical': 0.008488278092158448, 'mean_word_length': 5.469281045751634, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4515028', 'n_tokens_mistral': 1916, 'n_tokens_neox': 1808, 'n_words': 372}