Initial checkin

This commit is contained in:
2023-05-18 18:21:00 -04:00
commit 1c64f16aef
21 changed files with 1020 additions and 0 deletions

0
app/models/__init__.py Normal file
View File

View File

@@ -0,0 +1,16 @@
from app.extensions import db, ma
class BatteryChange(db.Model):
order = db.Column(db.Integer)
shift_id = db.Column(db.Integer, db.ForeignKey('shift.id'), primary_key=True, nullable=False)
vehicle_id = db.Column(db.Integer, db.ForeignKey('vehicle.id'), primary_key=True, nullable=False)
completed = db.Column(db.Boolean, nullable=False, default=False)
vehicle = db.relationship('Vehicle', backref='change_to_vehicle')
class BatteryChangeSchema(ma.Schema):
vehicle = ma.Nested('VehicleSchema', only=['license_plate', 'battery_level',
'in_use', 'model', 'location_lat',
'location_long', 'id'], many=False)
class Meta:
model=BatteryChange
fields = ('shift_id', 'vehicle_id', 'completed', 'vehicle')

19
app/models/shift.py Normal file
View File

@@ -0,0 +1,19 @@
from app.extensions import db, ma
from flask_marshmallow import fields
class Shift(db.Model):
id = db.Column(db.Integer, primary_key=True)
battery_changes = db.relationship('BatteryChange',
backref='battery_changes',
order_by='BatteryChange.order')
class ShiftSchema(ma.Schema):
battery_changes = ma.Nested('BatteryChangeSchema', many=True)
all_completed = fields.fields.Method('get_all_completed')
class Meta:
model=Shift
include_fk=True
fields = ("id", "battery_changes", "all_completed")
def get_all_completed(self, obj):
return all(change.completed == True for change in obj.battery_changes)

23
app/models/vehicle.py Normal file
View File

@@ -0,0 +1,23 @@
from app.extensions import db, ma
class Vehicle(db.Model):
__tablename__ = 'vehicle'
id = db.Column(db.Integer, primary_key=True)
license_plate = db.Column(db.String(80), unique=True, nullable=False)
battery_level = db.Column(db.Float, nullable=False)
in_use = db.Column(db.Boolean, nullable=False)
model = db.Column(db.String(10), nullable=False)
location_lat = db.Column(db.Float, nullable=False)
location_long = db.Column(db.Float, nullable=False)
battery_change_shifts = db.relationship('BatteryChange', backref='battery_change_shifts')
shifts = db.relationship('Shift', secondary="battery_change", backref='vehicles_to_shifts')
class VehicleSchema(ma.Schema):
battery_change_shifts = ma.Nested('BatteryChangeSchema', many=True)
shifts = ma.Nested('ShiftSchema', only=['id'], many=True)
class Meta:
# Fields to expose
model = Vehicle
fields = ("id", "license_plate", "battery_level", "model",
"in_use", "location_lat", "location_long", 'battery_change_shifts',
"shifts")