You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
3.6 KiB
91 lines
3.6 KiB
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))
|
|
|
|
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))
|
|
|
|
|
|
|