42 lines
2.3 KiB
Python
42 lines
2.3 KiB
Python
from sqlalchemy import Column, Integer, Unicode, Float, Enum, ForeignKey
|
|
from sqlalchemy.orm import relationship
|
|
|
|
from helix.constants.anchor_type import AnchorType
|
|
from helix.constants.module_type import ModuleType
|
|
from helix.constants.system_type import SystemType
|
|
from helix.models.sql.inverter_brands import InverterBrand
|
|
from helix.models.sql.power_monitors import PowerMonitor
|
|
from helix.models.sql.power_stations import PowerStation
|
|
from helix.models.sql.shared_sql_base import Base
|
|
from helix.models.sql.standalone_inverters import StandaloneInverter
|
|
|
|
|
|
class Site(Base):
|
|
__tablename__ = 'sites'
|
|
id = Column(Integer, primary_key=True)
|
|
user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
|
|
project_name = Column(Unicode, nullable=False)
|
|
building_height = Column(Float, nullable=False)
|
|
building_width = Column(Float, nullable=False)
|
|
building_length = Column(Float, nullable=False)
|
|
parapet_height = Column(Float, nullable=False)
|
|
wind_speed = Column(Integer, nullable=False)
|
|
exposure_category = Column(Unicode, nullable=False)
|
|
exposure_transition_distance = Column(Integer)
|
|
ballast_block_weight = Column(Integer, nullable=False)
|
|
max_psf = Column(Float, nullable=False)
|
|
system_type = Column(Enum(SystemType.singleTilt.value, SystemType.dualTilt.value, name='SystemType'), nullable=False)
|
|
module_type = Column(Enum(ModuleType.Cell96.value, ModuleType.Cell128.value, ModuleType.PSeries.value, name='ModuleType'), nullable=False)
|
|
anchor_type = Column(Enum(AnchorType.OMG_PowerGrip.value, AnchorType.OMG_PowerGrip_Plus.value, AnchorType.EcoFasten.value, name='AnchorType'), nullable=False)
|
|
spectral_response = Column(Float, nullable=False)
|
|
seismic_importance_factor = Column(Float, nullable=False)
|
|
cad_file = Column(Unicode)
|
|
cad_file_name = Column(Unicode)
|
|
dxf_file = Column(Unicode)
|
|
dxf_file_name = Column(Unicode)
|
|
|
|
inverter_brands = relationship(InverterBrand.__name__, backref="site", cascade="save-update, merge, delete")
|
|
power_stations = relationship(PowerStation.__name__, backref="site", cascade="save-update, merge, delete")
|
|
standalone_inverters = relationship(StandaloneInverter.__name__, backref="site", cascade="save-update, merge, delete")
|
|
power_monitors = relationship(PowerMonitor.__name__, backref="site", cascade="save-update, merge, delete")
|