pull/68/head
Konstantin Gründger 2019-01-30 20:29:56 +01:00
rodzic 0ea6a955e8
commit 6522bce14d
9 zmienionych plików z 14 dodań i 88 usunięć

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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")

Wyświetl plik

@ -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)

Wyświetl plik

@ -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):

Wyświetl plik

@ -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