API for the Interphone website signup process
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.

92 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))
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))