class EventLog(db.Model):
    __tablename__ = "eventlog"
    eventId = db.Column(db.Integer, primary_key=True)
    deviceId = db.Column(db.Integer, db.ForeignKey("device.deviceId"))
    date = db.Column(DateTime, index=True, nullable=False)
    state = db.Column(db.Enum('OPENDOOR',
                              'CLOSEDOOR',
                              'OPENWINDOW',
                              'CLOSEWINDOW',
                              'ON',
                              'OFF',
                              'OFFLINE',
                              'ERROR',
                              'INTTEMP',
                              'EXTTEMP',
                              name="device_event_state"),
                      default='OFF',
                      index=True,
                      nullable=False)
    temperature = db.Column(db.Integer)

    device = db.relationship("Device", back_populates="events")

    def __repr__(self):
        return f'<EventLog | DeviceId: {self.deviceId}>'

    def __init__(self, device, state, date, temperature):
        self.device = device
        self.state = state
        self.date = date
        self.temperature = temperature
class Model(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    date_created = db.Column(db.DateTime, default=db.func.current_timestamp())
    parameter = db.Column(db.Text, nullable=False)

    def __repr__(self):
        return f"Parameter model: {self.parameter}, created at {self.date_created}"
class Location(db.Model):
    __tablename__ = "location"
    locationId = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), unique=True, nullable=False)

    devices = db.relationship("Device", back_populates="location")

    def __repr__(self):
        return '<Location | Name: %r>' % self.name

    def __init__(self, name):
        self.name = name
Esempio n. 4
0
class TaskEntity(db.Model, SerializerMixin):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80), unique=True, nullable=False)
    description = db.Column(db.String(1024), unique=True, nullable=False)

    def __repr__(self):
        return '<TaskEntity %r>' % self.title

    @property
    def to_text(self):
        # Return object data in any text format
        return {'title': self.title, 'description': self.description}
Esempio n. 5
0
class Post(db.Model):
    __tablename__ = 'posts'

    id = db.Column(db.Integer, primary_key=True)
    created = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    modified = db.Column(db.DateTime)
    title = db.Column(db.Unicode(100))
    slug = db.Column(db.Unicode(100))
    text = db.Column(db.Text)
    html = db.Column(db.Text)
    tags = db.Column(db.Unicode(60), index=True)

    def __str__(self):
        return self.title

    @classmethod
    def before_commit(sender, app, changes):
        for model, change in changes:
            if isinstance(model, Post) and change in ('insert', 'update'):
                # onupdate for field is only called if field is in the SET
                # this makes sure it is always called
                model.modified = datetime.datetime.utcnow()

                # as we don't want the html to be edited manually
                # the html has to be generated for each row update
                model.html = mistune.markdown(model.text)
Esempio n. 6
0
class HVAC(Electric):
    __tablename__ = None
    __mapper_args__ = {'polymorphic_identity': 'hvac'}
    set_f = db.Column(db.INTEGER, default=0)
    high_f = db.Column(db.INTEGER, default=0)
    low_f = db.Column(db.INTEGER, default=0)
    ext_f = db.Column(db.INTEGER, default=0)
    int_f = db.Column(db.INTEGER, default=0)

    def __repr__(self):
        return f'<Device({self.__class__.__name__})  ' \
               f'| Name: {self.name}, ' \
               f'High({self.high_f}) ' \
               f'Low({self.low_f}) ' \
               f'Ext({self.ext_f}) ' \
               f'Int({self.int_f})>'
class Usage(db.Model):
    __tablename__ = "usage"
    usageId = db.Column(db.Integer, primary_key=True)
    deviceId = db.Column(db.Integer, db.ForeignKey("device.deviceId"))
    date = db.Column(DateTime, nullable=False)
    type = db.Column(db.Enum('water', 'electric', name="utility_type"), nullable=False)
    data = db.Column(db.Float)

    device = db.relationship("Device", back_populates="usages")

    def __repr__(self):
        return f'<Usage | Type: {self.type} | Date: {self.date}>'

    def __init__(self, device: 'Device', date: datetime, type: str, data: int):
        self.device = device
        self.date = date
        self.type = type
        self.data = data
Esempio n. 8
0
class Post(db.Model):
    __tablename__ = 'posts'

    id = db.Column(db.Integer, primary_key=True)
    created = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    modified = db.Column(db.DateTime, onupdate=datetime.datetime.utcnow)
    title = db.Column(db.Unicode(100))
    slug = db.Column(db.Unicode(100))
    text = db.Column(db.Text)
    html = db.Column(db.Text)
    tags = db.Column(db.Unicode(60), index=True)

    def __str__(self):  # noqa: D105
        return self.title
Esempio n. 9
0
class Electric(Device):
    __tablename__ = None
    __mapper_args__ = {'polymorphic_identity': 'electric'}
    wattage = db.Column(db.INTEGER)

    def __init__(self, location, x, y, name, wattage):
        self.x = x
        self.y = y
        self.name = name
        self.wattage = wattage
        self.location = location

    def __repr__(self):
        return f'<Device({self.__class__.__name__}) | Name: {self.name}, Wattage: {self.wattage}>'
Esempio n. 10
0
class Device(db.Model):
    __tablename__ = "device"
    deviceId = db.Column(db.Integer, primary_key=True)
    locationId = db.Column(db.Integer, db.ForeignKey("location.locationId"))
    name = db.Column(db.String(255), unique=True, nullable=False)
    type = db.Column(db.Enum('door',
                             'window',
                             'water',
                             'electric',
                             'light',
                             'hvac',
                             name="device_type"),
                     nullable=False)
    state = db.Column(db.Enum('ON',
                              'OFF',
                              'OFFLINE',
                              'ERROR',
                              name="device_state"),
                      default='OFF',
                      nullable=False)
    lastUpdated = db.Column(DateTime,
                            nullable=False,
                            server_default=db.text("CURRENT_TIMESTAMP"))
    x = db.Column(db.Integer)
    y = db.Column(db.Integer)

    location = db.relationship("Location", back_populates="devices")
    events = db.relationship("EventLog", back_populates="device")
    usages = db.relationship("Usage", back_populates="device")

    __mapper_args__ = {'polymorphic_on': type}

    def __init__(self, location, x, y, name):
        self.x = x
        self.y = y
        self.name = name
        self.location = location
Esempio n. 11
0
class Water(Device):
    __tablename__ = None
    __mapper_args__ = {'polymorphic_identity': 'water'}
    # Gallons Per Minute for water flow
    gpm = db.Column(db.INTEGER, default=0)