from datetime import datetime, timezone from flask import abort from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import synonym, relationship from . import db class Locations(db.Model): __tablename__ = 'Locations' id = db.Column(db.Integer, primary_key=True) LocationIdentifier = db.Column(db.String(255)) ServiceClass = db.Column(db.Integer) ParentLocation_ID = db.Column(db.Integer, db.ForeignKey('ParentLocations.id'), nullable=False) UnitIdentifier = db.Column(db.String(255)) StreetAddress = db.Column(db.String(255)) Suburb = db.Column(db.String(255)) State = db.Column(db.String(255)) Postcode = db.Column(db.String(255)) Country = db.Column(db.String(255)) Created = db.Column(db.DateTime, nullable=False, default=datetime.now(timezone.utc)) intOrder = db.Column(db.Integer) ONT = db.relationship('ONTs', cascade="all,delete", back_populates='Location') class ONTs(db.Model): __tablename__ = 'ONTs' id = db.Column(db.Integer, primary_key=True) ONTIdentifier = db.Column(db.String(255)) SerialNumber = db.Column(db.String(255)) MACAddress = db.Column(db.String(255)) OLTInterfacePartition_ID = db.Column(db.Integer, db.ForeignKey('OLTInterfacePartitions.id'), nullable=True) ONU_ID = db.Column(db.Integer) ONTModel_ID = db.Column(db.Integer, db.ForeignKey('ONTModels.id'), nullable=False) Location_ID = db.Column(db.Integer, db.ForeignKey('Locations.id'), nullable=False) Cached_RX = db.Column(db.Integer) Created = db.Column(db.DateTime, nullable=False, default=datetime.now(timezone.utc)) Commissioned_RX = db.Column(db.Integer) Commissioned_Date = db.Column(db.DateTime) Fibre_Distance = db.Column(db.Integer) Location = db.relationship('Locations', foreign_keys=Location_ID,cascade="all,delete", back_populates='ONT') class ParentLocations(db.Model): __tablename__ = 'ParentLocations' id = db.Column(db.Integer, primary_key=True) LegalName = db.Column(db.String(255)) Alias = db.Column(db.String(255)) StreetAddress = db.Column(db.String(255)) Suburb = db.Column(db.String(255)) State = db.Column(db.String(255)) Postcode = db.Column(db.String(255)) MaxONT_dB = db.Column(db.Integer) PlanGroup_ID = db.Column(db.Integer) Created = db.Column(db.DateTime, nullable=False, default=datetime.now(timezone.utc)) #Locations = db.relationship('Locations', cascade="all,delete", backref='Locations', lazy='dynamic') Locations = db.relationship('Locations', primaryjoin='ParentLocations.id == Locations.ParentLocation_ID', backref='Location_ID_link') class Plans(db.Model): __tablename__ = 'Plans' id = db.Column(db.Integer, primary_key=True) PlanIdentifier = db.Column(db.String(255)) Name = db.Column(db.String(255)) Cost = db.Column(db.Integer) UploadSpeed = db.Column(db.Integer) DownloadSpeed = db.Column(db.Integer) Description = db.Column(db.Text) class PlanGroups(db.Model): __tablename__ = 'PlanGroups' id = db.Column(db.Integer, primary_key=True) Name = db.Column(db.String(255)) ServiceClass_Override = db.Column(db.Integer) class Plans2Groups(db.Model): __tablename__ = 'Plans2Groups' id = db.Column(db.Integer, primary_key=True) PlanGroup_ID = db.Column(db.Integer) Plan_ID = db.Column(db.Integer) class WholesaleCustomers(db.Model): __tablename__ = 'WholesaleCustomers' id = db.Column(db.Integer, primary_key=True) Name = db.Column(db.String(255)) Outer_VLAN = db.Column(db.Integer) ServicePrefix = db.Column(db.String(5)) Created = db.Column(db.DateTime, nullable=False, default=datetime.now(timezone.utc))