Initial checkin
This commit is contained in:
0
app/models/__init__.py
Normal file
0
app/models/__init__.py
Normal file
16
app/models/battery_change.py
Normal file
16
app/models/battery_change.py
Normal 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
19
app/models/shift.py
Normal 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
23
app/models/vehicle.py
Normal 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")
|
||||
Reference in New Issue
Block a user