Install and database setup improvements
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from datetime import datetime
|
||||
import MySQLdb.cursors
|
||||
|
||||
class Vessel():
|
||||
|
||||
def __init__(self, dbconn, vessel_id=None):
|
||||
self.conn = dbconn
|
||||
self.dcur = dbconn.cursor(MySQLdb.cursors.DictCursor)
|
||||
self.fields = ('vid', 'vtype', 'vesselname', 'model', 'loa', 'lwl',
|
||||
'beam', 'draught', 'draught_min', 'displacement', 'ballast',
|
||||
'beltpos_aft', 'beltpos_bow', 'shapefile', 'remarks')
|
||||
if vessel_id:
|
||||
self.vid = long(vessel_id)
|
||||
self.load()
|
||||
else:
|
||||
self.vid = None
|
||||
self.vtype = None
|
||||
self.model = None
|
||||
self.loa = None
|
||||
self.lwl = None
|
||||
self.beam = None
|
||||
self.draught = None
|
||||
self.draught_min = None
|
||||
self.displacement = None
|
||||
self.ballast = None
|
||||
self.beltpos_aft = None
|
||||
self.beltpos_bow = None
|
||||
self.shapefile = None
|
||||
self.remarks = None
|
||||
self.data = {} # for old/new checks
|
||||
|
||||
def load(self):
|
||||
sql = (
|
||||
"SELECT {}".format(', '.join(self.fields))
|
||||
"FROM vessel "
|
||||
"WHERE vessel_id=%s"
|
||||
)
|
||||
self.dcur.execute(sql, (self.vid,))
|
||||
self.data = self.dcur.fetchone()
|
||||
# TODO
|
||||
self.parent_id = self.data['parent_id']
|
||||
|
||||
def save(self):
|
||||
last_row_id = None
|
||||
self.last_update = datetime.now()
|
||||
if self.vid:
|
||||
# record already available
|
||||
sqlfield = []
|
||||
values = []
|
||||
for field in self.fields:
|
||||
newdata = getattr(self, field)
|
||||
if self.data[field] != newdata:
|
||||
sqlfield.append("{}=%s".format(field))
|
||||
values.append(newdata)
|
||||
self.data[field] = newdata
|
||||
if values:
|
||||
# only save ich there are changes
|
||||
sql = (
|
||||
"UPDATE vessel SET " + ",".join(sqlfield) +
|
||||
" WHERE vidid=%s"
|
||||
)
|
||||
values.append(self.vid)
|
||||
self.dcur.execute(sql, values)
|
||||
# TODO check sql result
|
||||
last_row_id = self.vid
|
||||
else:
|
||||
# new record
|
||||
sql = (
|
||||
"INSERT INTO risk (" + ",".join(self.fields) +
|
||||
") VALUES (" + ",".join(["%s"] * len(self.fields)) + ")"
|
||||
)
|
||||
values = []
|
||||
for field in self.fields:
|
||||
newdata = getattr(self, field)
|
||||
values.append(newdata)
|
||||
self.data[field] = newdata
|
||||
self.dcur.execute(sql, values)
|
||||
last_row_id = self.dcur.lastrowid
|
||||
self.vid = last_row_id
|
||||
|
||||
def delete(self, vessel_id):
|
||||
sql = "DELETE FROM vessel WHERE vid=%s"
|
||||
self.cur.execute(sql, (self.vid,))
|
||||
|
||||
def __str__(self):
|
||||
out = "Vessel({})".format(self.vid)
|
||||
return out
|
||||
Reference in New Issue
Block a user