Skip to content
Snippets Groups Projects
Commit f5f6f4949416 authored by Patrice Journoud's avatar Patrice Journoud
Browse files

add user under transaction manager

taken into account pytsp_v2 changes
parent 0539513e2ff9
No related branches found
No related tags found
No related merge requests found
......@@ -64,5 +64,29 @@
this.update();
}
function get_icon(color) {
var iconUrl;
if (color == 'green') {
iconUrl = "assets/leaflet/images/marker-icon-green3.png";
}
else if (color == 'red') {
iconUrl = "assets/leaflet/images/marker-icon-red.png";
} else {
iconUrl = "assets/leaflet/images/marker-icon.png";
}
appIcon = L.Icon.Default.extend({
options: {
iconUrl: iconUrl,
shadowUrl: 'assets/leaflet/images/marker-shadow.png'
}
});
var icon = new appIcon();
return icon;
}
function addMarker(markerLocation, pointIndex) {
......@@ -67,19 +91,6 @@
function addMarker(markerLocation, pointIndex) {
var icon = L.icon({
iconUrl: 'assets/leaflet/images/marker-icon.png',
shadowUrl: 'assets/leaflet/images/marker-shadow.png'
});
appIcon = L.Icon.Default.extend({
options: {
iconUrl: 'assets/leaflet/images/marker-icon.png',
shadowUrl: 'assets/leaflet/images/marker-shadow.png'
}
});
var icon = new appIcon();
var icon = get_icon("blue");
var marker = new L.Marker(markerLocation,
{ icon: icon,
......@@ -185,7 +196,9 @@
type: 'POST',
url: '/tsp',
contentType: "application/json; charset=utf-8",
headers:{'X-Messaging-Token':'localhost:6544-0fd658f8-85ac-41ab-b279-6122598efb21'},
headers:{'X-Messaging-Token':'localhost:6544-b32de4d5-d979-4e84-bfe7-a7e52026016c',
'start': 0,
'end': latlng.length-1},
data: JSON.stringify(zlatlng)
}))
.done(function(response) {
......@@ -197,8 +210,5 @@
for(i=0;i<route.length;i++) {
pointi = route[i];
latlngs.push(L.latLng(pointi['0'], pointi['1']));
if (i == 0){
var markeri = markers[0];
markeri.valueOf()._icon.style.backgroundColor = 'green'
}
}
......@@ -204,2 +214,5 @@
var green_icon = get_icon("green");
var marker_start = markers[0];
marker_start.setIcon(green_icon);
......@@ -205,5 +218,7 @@
}
var red_icon = get_icon("red");
var marker_end = markers[markers.length-1];
marker_end.setIcon(red_icon);
var polyline = L.polyline(
latlngs,
......@@ -254,7 +269,7 @@
});
Window.map = new L.Map( 'map', {
center: L.latLng(43.38331, -0.41493),
center: L.latLng(48.856614, 2.3522219000000177),
zoom: 10,
layers: [
view_sat,
......
from pyramid.config import Configurator
from zope.sqlalchemy import ZopeTransactionExtension
from sqlalchemy.orm import (
scoped_session, sessionmaker,
)
from pytsprf.models import create_db
......@@ -3,3 +8,6 @@
from pytsprf.models import create_db
Session = scoped_session(sessionmaker(
extension=ZopeTransactionExtension()
))
......@@ -5,5 +13,2 @@
def cli(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
......@@ -9,5 +14,5 @@
create_db(settings)
def get_pytsprf_config(settings):
config = Configurator(settings=settings)
config.include('pyramid_chameleon')
......@@ -16,4 +21,22 @@
config.add_route('access', '/')
config.add_static_view(name='assets', path='assets', cache_max_age=3600)
config.scan()
return config
def cli(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
engine = create_db(settings)
config = get_pytsprf_config(settings)
# scoped session gives us thread safe session
Session.configure(bind=engine)
# make database session available in every request
config.add_request_method(
callable=lambda request: Session, name='dbsession', property=True)
return config.make_wsgi_app()
......@@ -30,6 +30,9 @@
print("Creating database")
Base.metadata.create_all(engine)
finally:
return engine
def create_db_session(settings=None):
......@@ -56,5 +59,5 @@
return settings # db_url
def get_db_users():
def get_db_users(session):
......@@ -60,7 +63,6 @@
session = create_db_session()
q = session.query(User)
if q.count() == 0:
users = None
else:
users = q.all()
......@@ -62,10 +64,8 @@
q = session.query(User)
if q.count() == 0:
users = None
else:
users = q.all()
# if is_new_session:
session.close()
return users
......@@ -69,5 +69,5 @@
return users
def get_db_user(allowed_domain):
def get_db_user(session, allowed_domain):
......@@ -73,8 +73,7 @@
session = create_db_session()
q = session.query(User).filter(User.allowed_domain == allowed_domain)
if q.count() == 0:
success = False
user = None
else:
user = q.one()
......@@ -75,12 +74,11 @@
q = session.query(User).filter(User.allowed_domain == allowed_domain)
if q.count() == 0:
success = False
user = None
else:
user = q.one()
session.close()
success = True
return success, user
......@@ -82,7 +80,7 @@
success = True
return success, user
def get_db_user_token(allowed_domain):
def get_db_user_token(session, allowed_domain):
......@@ -88,7 +86,6 @@
session = create_db_session()
q = session.query(User).filter(User.allowed_domain == allowed_domain)
if q.count() == 0:
token = None
else:
token = q.one().htoken
......@@ -90,9 +87,8 @@
q = session.query(User).filter(User.allowed_domain == allowed_domain)
if q.count() == 0:
token = None
else:
token = q.one().htoken
session.close()
return token
......@@ -96,5 +92,5 @@
return token
def delete_db_user(allowed_domain):
def delete_db_user(session, allowed_domain):
......@@ -100,5 +96,4 @@
session = create_db_session()
success, user = get_db_user(allowed_domain)
if success:
session.delete(user)
......@@ -102,8 +97,6 @@
success, user = get_db_user(allowed_domain)
if success:
session.delete(user)
session.commit()
session.close()
return success
......@@ -107,5 +100,5 @@
return success
def create_db_user(username, allowed_domain, allow_subdomains=False):
def create_db_user(session, username, allowed_domain, allow_sub_domains=False):
......@@ -111,6 +104,6 @@
is_found, user = get_db_user(allowed_domain)
is_found, user = get_db_user(session, allowed_domain)
if is_found:
creation = False
else:
......@@ -113,7 +106,6 @@
if is_found:
creation = False
else:
session = create_db_session()
new_user = User(username, allowed_domain, allow_subdomains)
new_user = User(username, allowed_domain, allow_sub_domains)
session.add(new_user)
......@@ -119,7 +111,5 @@
session.add(new_user)
session.commit()
creation, user = get_db_user(allowed_domain)
session.close()
creation, user = get_db_user(session, allowed_domain)
return creation, user
......@@ -148,5 +138,5 @@
creation_date = Column(DateTime)
expires = Column(DateTime)
allowed_domain = Column(String)
allow_subdomains = Column(Boolean)
allow_sub_domains = Column(Boolean)
......@@ -152,5 +142,5 @@
def __init__(self, name, allowed_domain, allow_subdomains):
def __init__(self, name, allowed_domain, allow_sub_domains):
self.htoken = _create_token()
self.name = name
self.allowed_domain = allowed_domain
......@@ -154,4 +144,4 @@
self.htoken = _create_token()
self.name = name
self.allowed_domain = allowed_domain
self.allow_subdomains = allow_subdomains
self.allow_sub_domains = allow_sub_domains
import unittest
import requests
from pyramid import testing
......@@ -3,9 +2,11 @@
from pyramid import testing
import json
from pytsp.tsp import TSP
from pytsp.distancegetter import DistanceGetter
from gpsdistance.main import distance as gps_distance
class ViewTests(unittest.TestCase):
def setUp(self):
self.config = testing.setUp()
......@@ -6,10 +7,19 @@
class ViewTests(unittest.TestCase):
def setUp(self):
self.config = testing.setUp()
self.scheme = 'http'
self.hostname = 'osrm.recette.xcg.global'
self.points = [
[48.856614, 2.3522219000000177],
[48.798404, 2.327198800000019],
[48.816363, 2.3173839999999473],
[48.847759, 2.4394968999999946]
]
def tearDown(self):
testing.tearDown()
......@@ -12,11 +22,8 @@
def tearDown(self):
testing.tearDown()
def test_unauthorized(self):
response = requests.post('http://localhost:6543/tsp')
txt = json.loads(response.text)
self.assertEqual(
(response.status_code, txt.get('message')), (401, 'Unauthorized')
)
def test_pytsp_mode_test_brute_force_tsp(self):
get_distance = gps_distance
......@@ -22,20 +29,10 @@
def test_create_user(self):
user = 'test_create_user:username'
response = requests.post(
'http://localhost:6543/users', json.dumps(user)
)
txt = json.loads(response.text)
if (response.status_code != 200):
errors = txt.get('errors')
d = errors[0]
self.assertEqual(
(response.status_code, txt.get('created')),
(200, True), d.get('description')
)
else:
self.assertEqual(
(response.status_code, txt.get('created')),
(200, True)
)
brute_force = True
solver = TSP(self.points,
get_distance,
brute_force=brute_force,
no_tsp=False)
solver.init()
indices = solver.compute()
self.assertEqual(indices, (0, 2, 1, 3, 0,))
......@@ -41,7 +38,5 @@
def test_delete_user(self):
user = 'test_delete_user:username'
response1 = requests.post(
u'http://localhost:6543/users', json.dumps(user)
)
def test_pytsp_mode_test_ortools_tsp(self):
distance_getter = DistanceGetter(self.hostname, scheme=self.scheme)
......@@ -47,10 +42,11 @@
if (response1.status_code == 200):
txt = json.loads(response1.text)
headers = {'X-Messaging-Token': txt.get('token')}
response2 = requests.delete(
'http://localhost:6543/users',
headers=headers
)
txt2 = json.loads(response2.text)
get_distance = distance_getter.get_distance
brute_force = False
solver = TSP(self.points,
get_distance,
brute_force=brute_force,
no_tsp=False)
solver.init()
indices = solver.compute()
self.assertEqual(indices, [0L, 2L, 1L, 3L, 0L])
......@@ -56,6 +52,3 @@
self.assertEqual(
(response2.status_code, txt2.get('deleted')),
(200, True)
)
def test_pytsp_mode_osrm_brute_force_tsp(self):
......@@ -61,3 +54,3 @@
def test_authorized(self):
distance_getter = DistanceGetter(self.hostname, scheme=self.scheme)
......@@ -63,8 +56,11 @@
user = 'test_authorized:username'
response1 = requests.post(
u'http://localhost:6543/users', json.dumps(user)
)
if (response1.status_code == 200):
get_distance = distance_getter.get_distance
brute_force = True
solver = TSP(self.points,
get_distance,
brute_force=brute_force,
no_tsp=False)
solver.init()
indices = solver.compute()
self.assertEqual(indices, (0, 2, 1, 3, 0,))
......@@ -70,17 +66,5 @@
txt1 = json.loads(response1.text)
headers = {'X-Messaging-Token': txt1.get('token')}
response2 = requests.get(
'http://localhost:6543/users', headers=headers
)
txt2 = json.loads(response2.text)
users = txt2.get('users')
self.assertIn(
user,
users,
(
"Newly created user [%s] expected "
"to be in DataBase but NOT FOUND" % (user,)
)
)
def test_pytsp_mode_osrm_ortools_tsp(self):
distance_getter = DistanceGetter(self.hostname, scheme=self.scheme)
......@@ -86,3 +70,9 @@
def test_tsp_access_authorized(self):
get_distance = distance_getter.get_distance
solver = TSP(self.points,
get_distance,
no_tsp=False)
solver.init()
indices = solver.compute()
self.assertEqual(indices, [0L, 2L, 1L, 3L, 0])
......@@ -88,6 +78,3 @@
user = 'test_tsp_access_authorized:username'
response1 = requests.post(
'http://localhost:6543/users', json.dumps(user)
)
def test_pytsp_mode_test_brute_force_no_tsp(self):
......@@ -93,6 +80,3 @@
if (response1.status_code == 200):
txt1 = json.loads(response1.text)
headers = {'X-Messaging-Token': txt1.get('token')}
get_distance = gps_distance
......@@ -98,17 +82,11 @@
latlon = [
{'lat': 43.83032, 'lng': 4.359950},
{'lat': 50.66554, 'lng': 3.104470},
{'lat': 50.31392, 'lng': 2.744560},
{'lat': 50.65272, 'lng': 3.025470},
{'lat': 43.70895, 'lng': 7.280680}
]
response2 = requests.post(
'http://localhost:6543/tsp',
json.dumps(latlon),
headers=headers
)
txt2 = json.loads(response2.text)
# TODO: WATTT?
txt2dict = eval(txt2)
brute_force = True
solver = TSP(self.points,
get_distance,
brute_force=brute_force,
no_tsp=True
)
solver.init()
indices = solver.compute()
self.assertEqual(indices, (0, 2, 1, 3,))
......@@ -114,5 +92,3 @@
requests.delete(
'http://localhost:6543/users', headers=headers
)
def test_pytsp_mode_test_ortools_no_tsp(self):
......@@ -118,5 +94,3 @@
self.assertEqual(txt2dict.get('route'), [0, 4, 1, 3, 2, 0])
def test_tsp_access_unauthorized(self):
distance_getter = DistanceGetter(self.hostname, scheme=self.scheme)
......@@ -122,10 +96,14 @@
headers = {'X-Messaging-Token': 'unknown token'}
latlon = [
[43.83032, 4.359950],
[50.66554, 3.104470],
[50.31392, 2.744560],
[50.65272, 3.025470],
[43.70895, 7.280680],
]
get_distance = distance_getter.get_distance
brute_force = False
solver = TSP(self.points,
get_distance,
brute_force=brute_force,
no_tsp=True,
start=1,
end=2
)
solver.init()
indices = solver.compute()
self.assertEqual(indices, [1L, 3L, 0L, 2L])
......@@ -131,11 +109,5 @@
response = requests.post(
'http://localhost:6543/tsp', json.dumps(latlon), headers=headers
)
txt = json.loads(response.text)
self.assertEqual(
response.status_code, 401
) and self.assertEqual(
txt.get('message'), 'Unauthorized'
)
def test_pytsp_mode_osrm_brute_force_no_tsp(self):
distance_getter = DistanceGetter(self.hostname, scheme=self.scheme)
......@@ -141,10 +113,11 @@
def test_create_same_user(self):
user = 'test_create_same_user:user'
response1 = requests.post(
u'http://localhost:6543/users', json.dumps(user)
)
if (response1.status_code == 200):
get_distance = distance_getter.get_distance
brute_force = True
solver = TSP(self.points,
get_distance,
brute_force=brute_force,
no_tsp=True)
solver.init()
indices = solver.compute()
self.assertEqual(indices, (0, 2, 1, 3,))
......@@ -150,13 +123,10 @@
response2 = requests.post(
'http://localhost:6543/users', json.dumps(user)
)
txt2 = json.loads(response2.text)
errors = txt2.get('errors')
d = errors[0]
self.assertEqual(
d.get('description'),
'Le Client possede deja une cle d''API active'
) and self.assertEqual(
txt2.get('name'), user
)
def test_pytsp_mode_osrm_ortools_no_tsp(self):
distance_getter = DistanceGetter(self.hostname, scheme=self.scheme)
get_distance = distance_getter.get_distance
solver = TSP(self.points, get_distance, no_tsp=True)
solver.init()
indices = solver.compute()
self.assertEqual(indices, [0L, 2L, 1L, 3L])
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, DateTime, Boolean
from sqlalchemy.orm import (
scoped_session, sessionmaker,
)
from pyramid.threadlocal import get_current_registry
from pytsprf.conf import get_engine
from pytsprf.conf import get_settings
import uuid
DBSession = scoped_session(sessionmaker())
Base = declarative_base()
def create_db(settings):
db_session = create_db_session(settings)
engine = get_engine(settings)
Base.metadata.bind = engine
# Fixme, find something more elegant
try:
db_session.query(User).all()
except Exception:
print("Creating database")
Base.metadata.create_all(engine)
def create_db_session(settings=None):
if settings is None:
settings = get_settings()
engine = get_engine(settings)
session = scoped_session(sessionmaker())
session.configure(bind=engine)
Base.metadata.bind = engine
return session
def _create_token():
return uuid.uuid4().__str__() # binascii.b2a_hex(os.urandom(20))
def get_pyramid_settings():
settings = get_current_registry().settings
return settings # db_url
def get_db_users():
session = create_db_session()
q = session.query(User)
if q.count() == 0:
users = None
else:
users = q.all()
# if is_new_session:
session.close()
return users
from pytsprf.models import create_db_user
import transaction
......@@ -70,14 +3,9 @@
def get_db_user(allowed_domain):
session = create_db_session()
q = session.query(User).filter(User.allowed_domain == allowed_domain)
if q.count() == 0:
success = False
user = None
else:
user = q.one()
session.close()
success = True
def task_create_db_user(
session,
username,
allowed_domain,
allow_sub_domains=False
):
......@@ -83,15 +11,3 @@
return success, user
def get_db_user_token(allowed_domain):
session = create_db_session()
q = session.query(User).filter(User.allowed_domain == allowed_domain)
if q.count() == 0:
token = None
else:
token = q.one().htoken
session.close()
return token
with transaction.manager:
......@@ -97,13 +13,7 @@
def delete_db_user(allowed_domain):
session = create_db_session()
success, user = get_db_user(allowed_domain)
if success:
session.delete(user)
session.commit()
session.close()
return success
creation, user = create_db_user(
session,
username,
allowed_domain,
allow_sub_domains=allow_sub_domains
......@@ -109,5 +19,3 @@
def create_db_user(username, allowed_domain, allow_subdomains=False):
is_found, user = get_db_user(allowed_domain)
)
......@@ -113,12 +21,4 @@
if is_found:
creation = False
else:
session = create_db_session()
new_user = User(username, allowed_domain, allow_subdomains)
session.add(new_user)
session.commit()
creation, user = get_db_user(allowed_domain)
session.close()
transaction.commit()
return creation, user
......@@ -123,35 +23,2 @@
return creation, user
def create(model, **kwargs):
try:
instance = model(**kwargs)
DBSession.add(instance)
DBSession.commit()
except:
DBSession.rollback()
raise
return instance
def delete(instance):
DBSession.delete(instance)
DBSession.commit()
class User(Base):
__tablename__ = 'users'
htoken = Column(String, primary_key=True)
name = Column(String)
creation_date = Column(DateTime)
expires = Column(DateTime)
allowed_domain = Column(String)
allow_subdomains = Column(Boolean)
def __init__(self, name, allowed_domain, allow_subdomains):
self.htoken = _create_token()
self.name = name
self.allowed_domain = allowed_domain
self.allow_subdomains = allow_subdomains
from pyramid.view import view_config
from pyramid.httpexceptions import HTTPUnauthorized
from pyramid.httpexceptions import HTTPServerError
import uuid
import json
......@@ -2,11 +5,10 @@
import uuid
import json
from webob import Response, exc
from cornice import Service
import logging
from pytsp.tsp import TSP
from pytsp.distancegetter import DistanceGetter
......@@ -7,11 +9,9 @@
from cornice import Service
import logging
from pytsp.tsp import TSP
from pytsp.distancegetter import DistanceGetter
from pytsprf.distance_getter_factory import DistanceGetterFactory
from pytsprf.route_solver_factory import RouteSolverFactory
from gpsdistance.main import distance as gps_distance
from pytsprf.models import get_db_user_token, get_db_user
......@@ -16,4 +16,6 @@
from pytsprf.models import get_db_user_token, get_db_user
from pytsprf.models import create_db_user, delete_db_user, get_db_users
from pytsprf.models import delete_db_user, get_db_users
from pytsprf.osrm.osrmviaroute import OsrmViaroute
......@@ -19,4 +21,3 @@
from pytsprf.osrm.osrmviaroute import OsrmViaroute
from pytsprf.exceptions import HttpError500, HttpError401
from pytsprf.conf import get as conf_get
......@@ -21,5 +22,6 @@
from pytsprf.conf import get as conf_get
from pytsprf.transactions import task_create_db_user
# ==================================================
# Service : Users authentication and autorization
......@@ -27,8 +29,6 @@
users = Service(name='users', path='/users', description="Users management")
_USERS = {}
def _create_token():
return uuid.uuid4().hex
......@@ -39,8 +39,8 @@
htoken = request.headers.get(header)
if htoken is None:
raise HttpError401()
raise HTTPUnauthorized()
try:
allowed_domain, token = htoken.split('-', 1)
except ValueError:
......@@ -43,6 +43,6 @@
try:
allowed_domain, token = htoken.split('-', 1)
except ValueError:
raise HttpError401()
raise HTTPUnauthorized()
......@@ -48,5 +48,5 @@
dbtoken = get_db_user_token(allowed_domain)
dbtoken = get_db_user_token(request.dbsession, allowed_domain)
valid = (dbtoken is not None) and (dbtoken == token)
if not valid:
......@@ -50,7 +50,7 @@
valid = (dbtoken is not None) and (dbtoken == token)
if not valid:
raise HttpError401()
raise HTTPUnauthorized()
request.validated['allowed_domain'] = allowed_domain
......@@ -83,7 +83,7 @@
"""Returns a list of all users."""
is_authorized = request.validated['is_authorized']
if (is_authorized):
users = get_db_users()
users = get_db_users(request.dbsession)
if users is not None:
allowed_domains = list()
for user in users:
......@@ -102,6 +102,6 @@
def create_token(request):
"""Adds a new token for requester."""
domain = request.validated['domain']
allowed_domain = request.validated['domain']
username = request.validated['username']
......@@ -106,5 +106,8 @@
username = request.validated['username']
is_new_user_created, user = create_db_user(username, domain)
is_new_user_created, user = task_create_db_user(request.dbsession,
username,
allowed_domain
)
if is_new_user_created:
......@@ -109,5 +112,6 @@
if is_new_user_created:
user = {'domain': domain, 'token': get_db_user_token(domain)}
user = {'allowed_domain': allowed_domain,
'token': get_db_user_token(request.dbsession, allowed_domain)}
request.validated['created'] = True
else:
......@@ -112,5 +116,5 @@
request.validated['created'] = True
else:
raise HttpError500()
raise HTTPServerError()
if is_new_user_created:
......@@ -115,4 +119,5 @@
if is_new_user_created:
response = {'created': is_new_user_created,
'token': '%s-%s'
......@@ -117,6 +122,6 @@
response = {'created': is_new_user_created,
'token': '%s-%s'
% (user.get('domain'), user.get('token'))}
% (user.get('allowed_domain'), user.get('token'))}
else:
response = {'created': is_new_user_created}
......@@ -127,8 +132,7 @@
def delete_user(request):
"""Removes the user."""
allowed_domain = request.validated['allowed_domain']
success = delete_db_user(allowed_domain)
success = delete_db_user(request.dbsession, allowed_domain)
return {'deleted': success}
......@@ -165,9 +169,9 @@
)
def get_response(points, route):
def get_response(points, route, start, end):
return {
'waypoints': points,
'route': route,
'api-description': u'XCG Consulting API : TSP solution',
......@@ -169,10 +173,10 @@
return {
'waypoints': points,
'route': route,
'api-description': u'XCG Consulting API : TSP solution',
'origin': points[0],
'destination': points[0]
'start': start,
'end': end
}
......@@ -187,8 +191,5 @@
return points
def get_viaroute(points):
oviaroute = OsrmViaroute()
viaroute = oviaroute.get_viaroute(points)
def get_route(points, start, end, is_test_mode=False):
......@@ -194,6 +195,7 @@
return viaroute
def get_route(points, is_test_mode=False):
if is_test_mode:
get_distance = gps_distance
else:
scheme = conf_get('osrm.scheme')
hostname = conf_get('osrm.hostname')
......@@ -199,7 +201,4 @@
#dgetterFactory = DistanceGetterFactory(is_test_mode)
#distance_getter = dgetterFactory.get_instance()
# solverFactory = RouteSolverFactory(points, distance_getter)
# solver = solverFactory.get_instance()
# indices = solver.get_route()
distance_getter = DistanceGetter(hostname, scheme=scheme)
get_distance = distance_getter.get_distance
......@@ -205,9 +204,9 @@
scheme = conf_get('osrm.scheme')
hostname = conf_get('osrm.hostname')
distance_getter = DistanceGetter(hostname, scheme=scheme)
get_distance = distance_getter.get_distance
solver = TSP(points, get_distance)
solver = TSP(points,
get_distance,
no_tsp=True,
start=start,
end=end
)
solver.init()
......@@ -212,7 +211,6 @@
solver.init()
indices = solver.compute()
ordered_points = [points[i] for i in indices]
......@@ -215,10 +213,12 @@
indices = solver.compute()
ordered_points = [points[i] for i in indices]
return get_viaroute(ordered_points)
viaroute = OsrmViaroute()
return viaroute.get_viaroute(ordered_points)
def connections_logging(request):
"""
......@@ -220,12 +220,13 @@
def connections_logging(request):
"""
This log allows to trace User connections for further statistical reports
This log allows to trace User connections for further
statistical reports
"""
logger = logging.getLogger('pytsprf')
allowed_domain = request.validated['allowed_domain']
......@@ -226,9 +227,9 @@
"""
logger = logging.getLogger('pytsprf')
allowed_domain = request.validated['allowed_domain']
is_found, user = get_db_user(allowed_domain)
is_found, user = get_db_user(request.dbsession, allowed_domain)
if is_found:
......@@ -233,6 +234,7 @@
if is_found:
logger.info('DOMAIN: %s, ACCOUNT: %s, API_KEY: %s' % (user.allowed_domain, user.name, user.htoken))
logger.info('DOMAIN: %s, ACCOUNT: %s, API_KEY: %s'
% (user.allowed_domain, user.name, user.htoken))
@tsp.post(validators=valid_token)
......@@ -245,4 +247,7 @@
requestDataDict = request.json
points = convert_to_points(requestDataDict)
start = int(request.headers.get('start'))
end = int(request.headers.get('end'))
route = get_route(
......@@ -248,4 +253,4 @@
route = get_route(
points, is_test_mode=False
points, start, end, is_test_mode=False
)
response = get_response(
......@@ -250,6 +255,6 @@
)
response = get_response(
requestDataDict, route
requestDataDict, route, start, end
)
return json.dumps(response)
......@@ -4,8 +4,8 @@
def create_user():
user = {'name': 'test_create_user:username1',
'domain': 'localhost:6544',
user = {'name': 'test_create_user:username2',
'domain': 'localhost:6545',
}
response = requests.post(
......
......@@ -31,7 +31,8 @@
'pyramid',
'pyramid_chameleon',
'pyramid_debugtoolbar',
'pyramid_tm',
'cornice',
'waitress',
'sqlalchemy',
'requests',
......@@ -34,7 +35,8 @@
'cornice',
'waitress',
'sqlalchemy',
'requests',
'zope.sqlalchemy',
],
tests_require=[
],
......
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