Native gui: implement data lists for all modules
This commit is contained in:
+13
-1
@@ -18,6 +18,7 @@ class DbRecord:
|
||||
raise TypeError("DbRecord subclass must define 'fields'")
|
||||
|
||||
self.db = db
|
||||
self.cur = db.cur
|
||||
self.dcur = db.dcur
|
||||
self.conn = db.conn
|
||||
self.last_update = None
|
||||
@@ -32,9 +33,10 @@ class DbRecord:
|
||||
self.clear()
|
||||
|
||||
def clear(self):
|
||||
self.data = {} # for old/new checks
|
||||
for field in self.fields:
|
||||
setattr(self, field, None)
|
||||
self.data = {} # for old/new checks
|
||||
self.data[field] = None
|
||||
|
||||
def load(self, record_id=None):
|
||||
if record_id is not None:
|
||||
@@ -47,6 +49,8 @@ class DbRecord:
|
||||
self.dcur.execute(sql, (self.pk_value,))
|
||||
self.data = self.dcur.fetchone()
|
||||
except Exception as e:
|
||||
print(e)
|
||||
print(sql)
|
||||
self.db.error = e
|
||||
self.clear()
|
||||
return False
|
||||
@@ -83,6 +87,9 @@ class DbRecord:
|
||||
try:
|
||||
self.dcur.execute(sql, values)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
print(sql)
|
||||
print(values)
|
||||
self.db.error = e
|
||||
return False
|
||||
for field in self.fields:
|
||||
@@ -106,6 +113,9 @@ class DbRecord:
|
||||
try:
|
||||
self.dcur.execute(sql, values)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
print(sql)
|
||||
print(values)
|
||||
self.db.error = e
|
||||
return False
|
||||
self.pk_value = self.dcur.lastrowid
|
||||
@@ -120,6 +130,8 @@ class DbRecord:
|
||||
try:
|
||||
self.dcur.execute(sql, (record_id,))
|
||||
except Exception as e:
|
||||
print(e)
|
||||
print(sql)
|
||||
self.db.error = e
|
||||
return False
|
||||
if self.dcur.rowcount != 1:
|
||||
|
||||
@@ -10,6 +10,6 @@ class Document(DbRecord):
|
||||
'hash', 'docsize', 'doctime', 'docdate', 'title', 'pages', 'remarks',
|
||||
'roleaccess')
|
||||
|
||||
def __init__(self, db, dicid=None):
|
||||
def __init__(self, db, docid=None):
|
||||
super().__init__(db, docid)
|
||||
self.title = _("Document({})")
|
||||
|
||||
+21
-1
@@ -8,8 +8,28 @@ class Vessel(DbRecord):
|
||||
pk_field = "vid"
|
||||
fields = ('vid', 'vtype', 'vesselname', 'model', 'shipyard', 'loa', 'lwl',
|
||||
'beam', 'draught', 'draught_min', 'displacement', 'ballast',
|
||||
'beltpos_aft', 'beltpos_bow', 'shapefile', 'sid_default', 'remarks')
|
||||
'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()
|
||||
|
||||
Reference in New Issue
Block a user