|
@@ -0,0 +1,209 @@
|
|
|
+#!/usr/bin/env python3
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+"""
|
|
|
+Created on Thu May 22 20:04:38 2020
|
|
|
+Used to create the initial database layout.
|
|
|
+@author: Felix Turowsky
|
|
|
+/*
|
|
|
+ *openPilot Log - A FOSS Pilot Logbook Application
|
|
|
+ *Copyright (C) 2020 Felix Turowsky
|
|
|
+ *
|
|
|
+ *This program is free software: you can redistribute it and/or modify
|
|
|
+ *it under the terms of the GNU General Public License as published by
|
|
|
+ *the Free Software Foundation, either version 3 of the License, or
|
|
|
+ *(at your option) any later version.
|
|
|
+ *
|
|
|
+ *This program is distributed in the hope that it will be useful,
|
|
|
+ *but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
+ *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
+ *GNU General Public License for more details.
|
|
|
+ *
|
|
|
+ *You should have received a copy of the GNU General Public License
|
|
|
+ *along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+"""
|
|
|
+This set of functions is used to initialise or reset the database.
|
|
|
+"""
|
|
|
+
|
|
|
+import sqlite3
|
|
|
+import os
|
|
|
+
|
|
|
+
|
|
|
+def initialisedb(): # For first run only, creates all databases.
|
|
|
+ createdbairports()
|
|
|
+ createdbflights()
|
|
|
+
|
|
|
+
|
|
|
+def createdbflights(): #this database will hold flight information
|
|
|
+ conn = sqlite3.connect(os.path.join('./resources', 'flog.db'))
|
|
|
+ c = conn.cursor()
|
|
|
+ c.execute('''create table flights (
|
|
|
+ id integer primary key,
|
|
|
+ doft numeric not null,
|
|
|
+ dept text not null,
|
|
|
+ tofb integer not null,
|
|
|
+ dest text not null,
|
|
|
+ tonb integer not null,
|
|
|
+ tblk integer,
|
|
|
+ pic integer,
|
|
|
+ acft integer,
|
|
|
+ foreign key (pic) references pilots (pilot_id)
|
|
|
+ foreign key (acft) references tails (tail_id)
|
|
|
+ )
|
|
|
+ ''')
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+
|
|
|
+def deletedbflights(): # deletes flights database. Use with caution!
|
|
|
+ conn = sqlite3.connect(os.path.join('./resources', 'flog.db'))
|
|
|
+ c = conn.cursor()
|
|
|
+ c.execute("DROP TABLE flights")
|
|
|
+ print('Table flights has been deleted')
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+
|
|
|
+def createdbairports(): # this database will hold airport information
|
|
|
+ conn = sqlite3.connect(os.path.join('./resources', 'flog.db'))
|
|
|
+ c = conn.cursor()
|
|
|
+ c.execute('''create table airports(
|
|
|
+ airport_id integer primary key,
|
|
|
+ icao text not null,
|
|
|
+ iata text,
|
|
|
+ name text,
|
|
|
+ lat real,
|
|
|
+ long real,
|
|
|
+ country text,
|
|
|
+ alt integer,
|
|
|
+ utcoffset integer,
|
|
|
+ tzolson text)''')
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+
|
|
|
+def deletedbairports(): # deletes flights database. Use with caution!
|
|
|
+ conn = sqlite3.connect(os.path.join('./csv', 'flog.db'))
|
|
|
+ c = conn.cursor()
|
|
|
+ c.execute("DROP TABLE airports")
|
|
|
+ print('Table airports has been deleted')
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+
|
|
|
+def createdbpilots(): # this database will hold Pilot names
|
|
|
+ conn = sqlite3.connect(os.path.join('./csv', 'flog.db'))
|
|
|
+ c = conn.cursor()
|
|
|
+ c.execute('''create table pilots(
|
|
|
+ pilot_id integer primary key,
|
|
|
+ picfirstname text,
|
|
|
+ piclastname text not null,
|
|
|
+ alias text)''')
|
|
|
+ firstname = input('Please enter your First name: ')
|
|
|
+ lastname = input('Please enter your Last name: ')
|
|
|
+ todb = (firstname,lastname,'self')
|
|
|
+ c.execute("INSERT INTO pilots (\
|
|
|
+ picfirstname,\
|
|
|
+ piclastname,\
|
|
|
+ alias) \
|
|
|
+ VALUES (?,?,?)", todb)
|
|
|
+ conn.commit()
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+
|
|
|
+def deletedbpilots(): # deletes flights database. Use with caution!
|
|
|
+ conn = sqlite3.connect(os.path.join('./csv', 'flog.db'))
|
|
|
+ c = conn.cursor()
|
|
|
+ c.execute("DROP TABLE pilots")
|
|
|
+ print('Table pilots has been deleted')
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+
|
|
|
+def createdbaircraft():
|
|
|
+ """
|
|
|
+ This database will hold AC information. Some triggers
|
|
|
+ like multiengine or heavy (above 5.7t) should be
|
|
|
+ Boolean but sqlite does not have a seperate type
|
|
|
+ definition so 1=True, 0=False. Seperate table needs
|
|
|
+ to be created for Registrations (Tails)
|
|
|
+ """
|
|
|
+ conn = sqlite3.connect(os.path.join('./csv', 'flog.db'))
|
|
|
+ c = conn.cursor()
|
|
|
+ c.execute('''create table aircraft(
|
|
|
+ aircraft_id integer primary key,
|
|
|
+ Name text,
|
|
|
+ iata text,
|
|
|
+ icao text,
|
|
|
+ multipilot integer,
|
|
|
+ multiengine integer,
|
|
|
+ jet integer,
|
|
|
+ heavy integer)''') #heavy as in above 5.7t
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+
|
|
|
+def deletedbaircraft(): # deletes aircraft database. Use with caution!
|
|
|
+ conn = sqlite3.connect(os.path.join('./csv', 'flog.db'))
|
|
|
+ c = conn.cursor()
|
|
|
+ c.execute("DROP TABLE aircraft")
|
|
|
+ print('Table aircraft has been deleted')
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+
|
|
|
+def createdbtails():
|
|
|
+ """
|
|
|
+ This table links individual aircraft to an aircraft
|
|
|
+ type specified in the aircraft table.
|
|
|
+ """
|
|
|
+ conn = sqlite3.connect(os.path.join('./csv', 'flog.db'))
|
|
|
+ c = conn.cursor()
|
|
|
+ c.execute('''create table tails(
|
|
|
+ tail_id integer primary key,
|
|
|
+ Registration text not null,
|
|
|
+ aircraft_id integer not null,
|
|
|
+ Company Text,
|
|
|
+ foreign key (aircraft_id) references aircraft (aircraft_id)
|
|
|
+ )''') #heavy as in above 5.7t
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+
|
|
|
+def deletedbtails(): # deletes extras database. Use with caution!
|
|
|
+ conn = sqlite3.connect(os.path.join('./csv', 'flog.db'))
|
|
|
+ c = conn.cursor()
|
|
|
+ c.execute("DROP TABLE tails")
|
|
|
+ print('Table tails has been deleted')
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+
|
|
|
+def createdbextras():
|
|
|
+ """
|
|
|
+ This database will hold additional information like function
|
|
|
+ times, operational condition time, night flying
|
|
|
+ time...
|
|
|
+ """
|
|
|
+ conn = sqlite3.connect(os.path.join('./csv', 'flog.db'))
|
|
|
+ c = conn.cursor()
|
|
|
+ c.execute('''create table extras(
|
|
|
+ extras_id integer primary key,
|
|
|
+ PilotFlying integer,
|
|
|
+ TOday integer,
|
|
|
+ TOnight integer,
|
|
|
+ LDGday integer,
|
|
|
+ LDGnight integer,
|
|
|
+ autoland integer,
|
|
|
+ tNight integer,
|
|
|
+ tIFR integer,
|
|
|
+ tPIC integer,
|
|
|
+ tSIC integer,
|
|
|
+ tDual integer,
|
|
|
+ tInstructor integer,
|
|
|
+ tSIM integer,
|
|
|
+ ApproachType text,
|
|
|
+ FlightNumber text,
|
|
|
+ Remarks text)''')
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+
|
|
|
+def deletedbextras(): # deletes extras database. Use with caution!
|
|
|
+ conn = sqlite3.connect(os.path.join('./csv', 'flog.db'))
|
|
|
+ c = conn.cursor()
|
|
|
+ c.execute("DROP TABLE extras")
|
|
|
+ print('Table extras has been deleted')
|
|
|
+ conn.close()
|