36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
# SPDX-License-Identifier: WTFPL
|
|
|
|
from .dbrecord import DbRecord
|
|
|
|
class Vessel(DbRecord):
|
|
|
|
table = "vessel"
|
|
pk_field = "vid"
|
|
fields = ('vid', 'vtype', 'vesselname', 'model', 'shipyard', 'loa', 'lwl',
|
|
'beam', 'draught', 'draught_min', 'displacement', 'ballast',
|
|
'beltpos_aft', 'beltpos_bow', 'shapefile', 'sid_default', 'year_built',
|
|
'remarks')
|
|
|
|
def __init__(self, db, vid=None):
|
|
super().__init__(db, vid)
|
|
self.title = _("Vessel({})")
|
|
|
|
def create(self):
|
|
sql = (
|
|
"SELECT MIN(v1.vid+1) AS newid "
|
|
"FROM vessel AS v1 LEFT JOIN vessel AS v2 ON v2.vid=v1.vid+1 "
|
|
"WHERE v1.vid>=0 AND v2.vid IS NULL"
|
|
)
|
|
self.dcur.execute(sql)
|
|
row = self.cur.fetchone()
|
|
if row is None:
|
|
# vessel table empty: create first vessel
|
|
self.pk_value = 1
|
|
else:
|
|
# create additional vessel
|
|
self.pk_value = row['newid']
|
|
self.vesselname = f"Vessel #{self.pk_value}"
|
|
self.vtype = 1 # monohull
|
|
self._insert()
|
|
self.conn.commit()
|