diff --git a/ogn_python/backend/liveglidernet.py b/ogn_python/backend/liveglidernet.py index d23ee9e..726438c 100644 --- a/ogn_python/backend/liveglidernet.py +++ b/ogn_python/backend/liveglidernet.py @@ -4,6 +4,8 @@ from sqlalchemy import func, and_, between, case from ogn_python.model import AircraftBeacon, Device, Receiver +from ogn_python import db + def utc_to_local(utc_dt): return utc_dt.replace(tzinfo=timezone.utc).astimezone(tz=None) @@ -17,9 +19,9 @@ def decode(code): return code[2:9] -def rec(session): +def rec(): last_10_minutes = datetime.utcnow() - timedelta(minutes=10) - receiver_query = session.query(Receiver, + receiver_query = db.session.query(Receiver, case([(Receiver.lastseen > last_10_minutes, True)], else_=False).label('is_online')) \ .order_by(Receiver.name) @@ -38,14 +40,14 @@ def rec(session): return xml -def lxml(session, show_offline=False, lat_max=90, lat_min=-90, lon_max=180, lon_min=-180): +def lxml(show_offline=False, lat_max=90, lat_min=-90, lon_max=180, lon_min=-180): if show_offline: observation_start = date.today() else: observation_start = datetime.utcnow() - timedelta(minutes=5) - position_query = session.query(AircraftBeacon, Device) \ + position_query = db.session.query(AircraftBeacon, Device) \ .filter(and_(between(func.ST_Y(AircraftBeacon.location_wkt), lat_min, lat_max), between(func.ST_X(AircraftBeacon.location_wkt), lon_min, lon_max))) \ .filter(Device.lastseen > observation_start) \ diff --git a/ogn_python/backend/ognrange.py b/ogn_python/backend/ognrange.py index bf2732e..468e470 100644 --- a/ogn_python/backend/ognrange.py +++ b/ogn_python/backend/ognrange.py @@ -5,6 +5,8 @@ from sqlalchemy import func, case from sqlalchemy.sql.expression import label from ogn_python.model import Receiver +from ogn_python import db + def alchemyencoder(obj): """JSON encoder function for SQLAlchemy special classes.""" @@ -17,10 +19,10 @@ def alchemyencoder(obj): return float(obj) -def stations2_filtered_pl(session): +def stations2_filtered_pl(): last_10_minutes = datetime.utcnow() - timedelta(minutes=10) - query = session.query( + query = db.session.query( Receiver.name.label('s'), label('lt', func.round(func.ST_Y(Receiver.location_wkt) * 10000) / 10000), label('lg', func.round(func.ST_X(Receiver.location_wkt) * 10000) / 10000), @@ -30,7 +32,7 @@ def stations2_filtered_pl(session): label('v', Receiver.version + '.' + Receiver.platform)) \ .order_by(Receiver.lastseen) - res = session.execute(query) + res = db.session.execute(query) stations = json.dumps({'stations': [dict(r) for r in res]}, default=alchemyencoder) return stations diff --git a/tests/backend/test_backends.py b/tests/backend/test_backends.py index 329f36d..26284a1 100644 --- a/tests/backend/test_backends.py +++ b/tests/backend/test_backends.py @@ -51,7 +51,7 @@ class TestDB(TestBaseDB, XmlTestMixin): def test_rec(self, datetime_mock): datetime_mock.utcnow.return_value = datetime(2017, 12, 20, 10, 0) - data = rec(db.session).encode(encoding='utf-8') + data = rec().encode(encoding='utf-8') # Check the document root = self.assertXmlDocument(data) @@ -75,7 +75,7 @@ class TestDB(TestBaseDB, XmlTestMixin): def test_lxml(self, datetime_mock, utc_to_local_mock): datetime_mock.utcnow.return_value = datetime(2017, 12, 20, 10, 0, 5) - data = lxml(db.session).encode(encoding='utf-8') + data = lxml().encode(encoding='utf-8') # Check the complete document expected = """ @@ -91,7 +91,7 @@ class TestDB(TestBaseDB, XmlTestMixin): def test_stations2_filtered_pl(self, datetime_mock): datetime_mock.utcnow.return_value = datetime(2017, 12, 20, 10, 0) - result = stations2_filtered_pl(db.session) + result = stations2_filtered_pl() data = json.loads(result) diff --git a/tests/base.py b/tests/base.py index 784f322..9ee150e 100644 --- a/tests/base.py +++ b/tests/base.py @@ -23,6 +23,11 @@ class TestBaseDB(unittest.TestCase): DELETE FROM receiver_beacons; DELETE FROM takeoff_landings; DELETE FROM logbook; + DELETE FROM receiver_coverages; + DELETE FROM device_stats; + DELETE FROM receiver_stats; + DELETE FROM receivers; + DELETE FROM devices; """)