kopia lustrzana https://github.com/glidernet/ogn-python
Refactoring
rodzic
0ea6a955e8
commit
6522bce14d
|
@ -1,6 +1,6 @@
|
||||||
from celery.utils.log import get_task_logger
|
from celery.utils.log import get_task_logger
|
||||||
|
|
||||||
from sqlalchemy import insert, distinct
|
from sqlalchemy import distinct
|
||||||
from sqlalchemy.sql import null, and_, func, not_, case
|
from sqlalchemy.sql import null, and_, func, not_, case
|
||||||
from sqlalchemy.dialects import postgresql
|
from sqlalchemy.dialects import postgresql
|
||||||
from sqlalchemy.dialects.postgresql import insert
|
from sqlalchemy.dialects.postgresql import insert
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
from celery.utils.log import get_task_logger
|
from celery.utils.log import get_task_logger
|
||||||
|
|
||||||
from sqlalchemy import String, Date
|
from sqlalchemy import Date
|
||||||
from sqlalchemy import and_, insert, update, exists, between
|
from sqlalchemy import and_, insert, update, exists, between
|
||||||
from sqlalchemy.sql import func, null
|
from sqlalchemy.sql import func, null
|
||||||
from sqlalchemy.sql.expression import literal_column
|
|
||||||
|
|
||||||
from ogn.collect.celery import app
|
from ogn.collect.celery import app
|
||||||
from ogn.model import AircraftBeacon, ReceiverCoverage
|
from ogn.model import AircraftBeacon, ReceiverCoverage
|
||||||
|
|
|
@ -41,7 +41,7 @@ class LogfileDbSaver():
|
||||||
def get_datestrs(self, no_index_only=False):
|
def get_datestrs(self, no_index_only=False):
|
||||||
"""Get the date strings from imported log files."""
|
"""Get the date strings from imported log files."""
|
||||||
|
|
||||||
index_clause = " AND hasindexes = FALSE" if no_index_only == True else ""
|
index_clause = " AND hasindexes = FALSE" if no_index_only else ""
|
||||||
|
|
||||||
self.cur.execute(("""
|
self.cur.execute(("""
|
||||||
SELECT DISTINCT(RIGHT(tablename, 10))
|
SELECT DISTINCT(RIGHT(tablename, 10))
|
||||||
|
@ -53,81 +53,13 @@ class LogfileDbSaver():
|
||||||
return [datestr[0].replace('_', '-') for datestr in self.cur.fetchall()]
|
return [datestr[0].replace('_', '-') for datestr in self.cur.fetchall()]
|
||||||
|
|
||||||
def create_tables(self):
|
def create_tables(self):
|
||||||
"""Create date dependant tables for log file import."""
|
"""Create date dependent tables for log file import."""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.cur.execute('CREATE EXTENSION IF NOT EXISTS postgis;')
|
self.cur.execute('CREATE EXTENSION IF NOT EXISTS postgis;')
|
||||||
self.cur.execute('CREATE EXTENSION IF NOT EXISTS btree_gist;')
|
self.cur.execute('CREATE EXTENSION IF NOT EXISTS btree_gist;')
|
||||||
self.cur.execute('DROP TABLE IF EXISTS "{}";'.format(self.aircraft_table))
|
self.cur.execute('DROP TABLE IF EXISTS "{}"; SELECT INTO {} FROM aircraft_beacons WHERE 1 = 2;'.format(self.aircraft_table))
|
||||||
self.cur.execute('DROP TABLE IF EXISTS "{}";'.format(self.receiver_table))
|
self.cur.execute('DROP TABLE IF EXISTS "{}"; SELECT INTO {} FROM receiver_beacons WHERE 1 = 2;'.format(self.receiver_table))
|
||||||
self.cur.execute("""
|
|
||||||
CREATE TABLE "{0}" (
|
|
||||||
location geometry,
|
|
||||||
altitude real,
|
|
||||||
name character varying,
|
|
||||||
dstcall character varying,
|
|
||||||
relay character varying,
|
|
||||||
receiver_name character varying(9),
|
|
||||||
"timestamp" timestamp without time zone,
|
|
||||||
track smallint,
|
|
||||||
ground_speed real,
|
|
||||||
|
|
||||||
address_type smallint,
|
|
||||||
aircraft_type smallint,
|
|
||||||
stealth boolean,
|
|
||||||
address character varying,
|
|
||||||
climb_rate real,
|
|
||||||
turn_rate real,
|
|
||||||
signal_quality real,
|
|
||||||
error_count smallint,
|
|
||||||
frequency_offset real,
|
|
||||||
gps_quality_horizontal smallint,
|
|
||||||
gps_quality_vertical smallint,
|
|
||||||
software_version real,
|
|
||||||
hardware_version smallint,
|
|
||||||
real_address character varying(6),
|
|
||||||
signal_power real,
|
|
||||||
|
|
||||||
distance real,
|
|
||||||
radial smallint,
|
|
||||||
quality real,
|
|
||||||
location_mgrs character varying(15),
|
|
||||||
location_mgrs_short character varying(9),
|
|
||||||
|
|
||||||
receiver_id int,
|
|
||||||
device_id int);
|
|
||||||
""".format(self.aircraft_table))
|
|
||||||
|
|
||||||
self.cur.execute("""
|
|
||||||
CREATE TABLE "{0}" (
|
|
||||||
location geometry,
|
|
||||||
altitude real,
|
|
||||||
name character varying,
|
|
||||||
receiver_name character varying(9),
|
|
||||||
dstcall character varying,
|
|
||||||
"timestamp" timestamp without time zone,
|
|
||||||
|
|
||||||
version character varying,
|
|
||||||
platform character varying,
|
|
||||||
cpu_load real,
|
|
||||||
free_ram real,
|
|
||||||
total_ram real,
|
|
||||||
ntp_error real,
|
|
||||||
rt_crystal_correction real,
|
|
||||||
voltage real,
|
|
||||||
amperage real,
|
|
||||||
cpu_temp real,
|
|
||||||
senders_visible integer,
|
|
||||||
senders_total integer,
|
|
||||||
rec_input_noise real,
|
|
||||||
senders_signal real,
|
|
||||||
senders_messages integer,
|
|
||||||
good_senders_signal real,
|
|
||||||
good_senders integer,
|
|
||||||
good_and_bad_senders integer,
|
|
||||||
|
|
||||||
receiver_id int);
|
|
||||||
""".format(self.receiver_table))
|
|
||||||
self.conn.commit()
|
self.conn.commit()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise Exception("I can't create the tables")
|
raise Exception("I can't create the tables")
|
||||||
|
|
|
@ -69,5 +69,3 @@ def process_raw_message(raw_message, reference_date=None, saver=saver):
|
||||||
logger.debug('Received message: {}'.format(raw_message))
|
logger.debug('Received message: {}'.format(raw_message))
|
||||||
message = string_to_message(raw_message, reference_date)
|
message = string_to_message(raw_message, reference_date)
|
||||||
saver.add_message(message)
|
saver.add_message(message)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
from geoalchemy2.shape import to_shape
|
from geoalchemy2.shape import to_shape
|
||||||
from geoalchemy2.types import Geometry
|
from geoalchemy2.types import Geometry
|
||||||
from sqlalchemy import Column, String, SmallInteger, Float, DateTime
|
from sqlalchemy import Column, String, SmallInteger, Float, DateTime
|
||||||
from sqlalchemy.sql import func
|
|
||||||
from sqlalchemy.ext.declarative import AbstractConcreteBase
|
from sqlalchemy.ext.declarative import AbstractConcreteBase
|
||||||
from sqlalchemy.ext.hybrid import hybrid_property
|
from sqlalchemy.ext.hybrid import hybrid_property
|
||||||
|
|
||||||
|
@ -30,8 +29,8 @@ class Beacon(AbstractConcreteBase, Base):
|
||||||
aprs_type = None
|
aprs_type = None
|
||||||
|
|
||||||
# Debug information
|
# Debug information
|
||||||
raw_message = None #Column(String)
|
raw_message = None
|
||||||
reference_timestamp = None #Column(DateTime, index=True)
|
reference_timestamp = None
|
||||||
|
|
||||||
@hybrid_property
|
@hybrid_property
|
||||||
def location(self):
|
def location(self):
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
from sqlalchemy import Column, String, Integer, SmallInteger, Float, Date, ForeignKey, Index
|
from sqlalchemy import Column, String, Integer, SmallInteger, Float, Date, ForeignKey, Index
|
||||||
from sqlalchemy.orm import relationship, backref
|
from sqlalchemy.orm import relationship, backref
|
||||||
from sqlalchemy.sql import func
|
|
||||||
|
|
||||||
|
|
||||||
from .base import Base
|
from .base import Base
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue