Files
old-krovovi-kalkulator/helix/models/sql/inverters.py
2017-11-07 09:23:57 +01:00

30 lines
1.2 KiB
Python

from sqlalchemy import Column, Integer, Enum, Boolean, ForeignKey, CheckConstraint
from helix.constants.inverter_type import InverterType
from helix.models.sql.shared_sql_base import Base
class Inverter(Base):
__tablename__ = 'inverters'
id = Column(Integer, primary_key=True)
model = Column(Enum(*map(lambda x: str(x.value), InverterType.all()), name='invertertype'), nullable=False)
strings_per_inverter = Column(Integer, nullable=False)
sunshade = Column(Boolean)
dc_switch = Column(Boolean)
splice_box = Column(Boolean)
power_station_id = Column(Integer, ForeignKey('power_stations.id'))
standalone_inverter_id = Column(Integer, ForeignKey('standalone_inverters.id', ondelete='CASCADE'))
__table_args__ = (
CheckConstraint('(power_station_id IS NULL != standalone_inverter_id IS NULL)'),
)
def to_json(self):
inverter_type = InverterType.SMA if int(self.model) in InverterType.SMA.all() else InverterType.DELTA
return {
'model': inverter_type(int(self.model)),
'strings_per_inverter': self.strings_per_inverter,
'sunshade': self.sunshade,
'dc_switch': self.dc_switch,
'splice_box': self.splice_box,
}