dashboard/model/models.py
from flask_sqlalchemy import SQLAlchemy from flask_marshmallow import Marshmallowfrom flask import Flaskimport os app = Flask(__name__)app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///"+os.getcwd()+"/Database.db"app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Falsedb = SQLAlchemy(app)ma = Marshmallow(app) class ChannelOutput(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, unique=True, nullable=False) input_min_val = db.Column(db.Integer) input_max_val = db.Column(db.Integer) output_min_val = db.Column(db.Integer, nullable=False) output_max_val = db.Column(db.Integer, nullable=False) channel_input_id = db.Column(db.Integer, db.ForeignKey('channel_input.id'), nullable=False) channel_input = db.relationship('ChannelInput') measure_id = db.Column(db.Integer, db.ForeignKey('measure.id')) measure = db.relationship('Measure') class ChannelOutputSchema(ma.Schema): class Meta: model = ChannelOutput fields = ("id","name", "input_max_val", "measure_id") class ChannelInput(db.Model): id = db.Column(db.Integer, primary_key=True) analog_input_id = db.Column(db.Integer, db.ForeignKey('analog_input.id')) analog_input = db.relationship('AnalogInput') obd_input_id = db.Column(db.Integer, db.ForeignKey('obd_input.id')) obd_input = db.relationship('ObdInput') nissan_input_id = db.Column(db.Integer, db.ForeignKey('nissan_input.id')) nissan_input = db.relationship('NissanInput') class ChannelInputSchema(ma.Schema): class Meta: model = ChannelInput fields = ("id", "analog_input_id", "obd_input_id", 'nissan_input_id') class Obd(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, unique=True, nullable=False) command = db.Column(db.String, unique=True, nullable=False) description = db.Column(db.String, nullable=False) measure = db.relationship('Measure') measure_id = db.Column(db.Integer, db.ForeignKey('measure.id')) class ObdSchema(ma.Schema): class Meta: model = Obd fields = ("id", "name", "description") Similar blocks of code found in 2 locations. Consider refactoring.class ObdInput(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, unique=True, nullable=False) obd_id = db.Column(db.Integer, db.ForeignKey('obd.id'), nullable=False) obd = db.relationship('Obd') class ObdInputSchema(ma.Schema): class Meta: model = ChannelInput fields = ("id", "name", "description", "obd_id") class Consult(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, unique=True, nullable=False) command = db.Column(db.String, unique=False, nullable=False) description = db.Column(db.String, unique=False, nullable=False) class ConsultSchema(ma.Schema): class Meta: model = ChannelInput fields = ("id", "name", "command", "description") Similar blocks of code found in 2 locations. Consider refactoring.class NissanInput(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, unique=True, nullable=False) consult_id = db.Column(db.Integer, db.ForeignKey('consult.id'), nullable=False) consult = db.relationship('Consult') class NissanInputSchema(ma.Schema): class Meta: model = ChannelInput fields = ("id", "name", "description", "consult_id") Similar blocks of code found in 2 locations. Consider refactoring.class AnalogInput(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) pin = db.Column(db.String, nullable=False) voltage_resistance = db.Column(db.Boolean, nullable=False) class AnalogInputSchema(ma.Schema): class Meta: model = ChannelInput fields = ("id", "name", "pin","analog_channel_id") class Measure(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) formula = db.Column(db.String, nullable=False) undo_formula = db.Column(db.String, nullable=False) explanation = db.Column(db.String, nullable=False) measure_group_id = db.Column(db.Integer, db.ForeignKey('measure_group.id')) measure = db.relationship('MeasureGroup') class MeasureSchema(ma.Schema): class Meta: model = Measure fields = ("id", "name") Similar blocks of code found in 2 locations. Consider refactoring.class MeasureGroup(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) class MeasureGroupSchema(ma.Schema): class Meta: model = ChannelInput fields = ("id", "name") Similar blocks of code found in 2 locations. Consider refactoring.class Dashboard(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) red_line = db.Column(db.String, nullable=False) yellow_line = db.Column(db.String, nullable=False) class DashboardSchema(ma.Schema): class Meta: model = ChannelInput fields = ("id", "name", "red_line", "yellow_line") class DashboardOutput(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) dashboard_id = db.Column(db.Integer, db.ForeignKey('dashboard.id')) dashboard = db.relationship('Dashboard') channel_output_id = db.Column(db.Integer,db.ForeignKey('channel_output.id')) channel_output = db.relationship('ChannelOutput') class DashboardOutputSchema(ma.Schema): class Meta: model = ChannelInput fields = ("id", "name", "dashboard_id", "channel_output_id") class Alarm(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) description = db.Column(db.String, nullable=False) life_second = db.Column(db.Integer, nullable=False) alarm_type_id = db.Column(db.Integer,db.ForeignKey('alarm_type.id')) alarm_type = db.relationship('AlarmType') class AlarmSchema(ma.Schema): class Meta: model = ChannelInput fields = ("id", "name", "description", "alarm_type_id", "life_second") Similar blocks of code found in 2 locations. Consider refactoring.class AlarmType(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) class AlarmTypeSchema(ma.Schema): class Meta: model = AlarmType fields = ("id", "name") Similar blocks of code found in 2 locations. Consider refactoring.class Condition(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) condition = db.Column(db.String, nullable=False) class ConditionSchema(ma.Schema): class Meta: model = AlarmType fields = ("id", "name", "condition") class AlarmOutput(db.Model): id = db.Column(db.Integer, primary_key=True) value = db.Column(db.String, nullable=False) channel_output_id = db.Column(db.Integer,db.ForeignKey('channel_output.id')) channel_output = db.relationship('ChannelOutput') alarm_id = db.Column(db.Integer,db.ForeignKey('alarm.id')) alarm = db.relationship('Alarm') condition_id = db.Column(db.Integer,db.ForeignKey('condition.id')) condition = db.relationship('Condition') class AlarmOutputSchema(ma.Schema): class Meta: model = AlarmOutput fields = ("id", "value", "channel_output_id", "alarm_id", "condition_id") class Color(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) hexadecimal = db.Column(db.Integer) rgb = db.Column(db.Integer) class ColorSchema(ma.Schema): class Meta: model = Color fields = ("id", "name", "hexadecimal", "rgb") class Led(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) brightness = db.Column(db.Integer) priority = db.Column(db.Integer) channel_output_id = db.Column(db.Integer,db.ForeignKey('channel_output.id')) channel_output = db.relationship('ChannelOutput') class LedSchema(ma.Schema): class Meta: model = Led fields = ("id", "name", "brightness", "priority", "channel_output_id") class LedOutput(db.Model): id = db.Column(db.Integer, primary_key=True) led_start = db.Column(db.Integer, nullable=False) color_start_id = db.Column(db.Integer, db.ForeignKey(Color.id)) color_start = db.relationship("Color", backref="color", uselist=False, foreign_keys=[color_start_id]) value_start = db.Column(db.String) led_end = db.Column(db.Integer, nullable=False) color_end_id = db.Column(db.Integer, db.ForeignKey(Color.id)) color_end = db.relationship("Color", backref="reference", uselist=False, foreign_keys=[color_end_id]) value_end = db.Column(db.String) led_id = db.Column(db.Integer,db.ForeignKey('led.id')) led = db.relationship('Led') class LedOutputSchema(ma.Schema): class Meta: model = ChannelInput fields = ("id", "led_start", "led_end", "color_start_id", "color_end_id", "value_start", "value_end", "led_id" ) Similar blocks of code found in 2 locations. Consider refactoring.class VarConfig(db.Model): id = db.Column(db.Integer, primary_key=True) var_key = db.Column(db.String, nullable=False) var_value = db.Column(db.String, nullable=False) class VarConfigSchema(ma.Schema): class Meta: model = VarConfig fields = ("id", "var_key", "var_value")db.create_all()db.session.commit()