示例#1
0
class ReservationReq(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    requestor_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    owner_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    status_pending = db.Column(db.Boolean(), default=True)
    status_accepted = db.Column(db.Boolean(), default=False)
    seat_id = db.Column(db.Integer, db.ForeignKey("seat.id"))
    requestor = db.relationship("User", foreign_keys=[requestor_id])
    owner = db.relationship("User", foreign_keys=[owner_id])
    seat = db.relationship("Seat", foreign_keys=[seat_id])
示例#2
0
class Hobby(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('user.id'),
                        nullable=False,
                        server_default="")

    name = db.Column(db.String(32), index=True, nullable=False)
    sunday = db.Column(db.Boolean, default=False)
    monday = db.Column(db.Boolean, default=False)
    tuesday = db.Column(db.Boolean, default=False)
    wednesday = db.Column(db.Boolean, default=False)
    thursday = db.Column(db.Boolean, default=False)
    friday = db.Column(db.Boolean, default=False)
    saturday = db.Column(db.Boolean, default=False)
    color = db.Column(db.String(3), default="Red")
    #Need to check for null when displaying
    duration = db.Column(db.String(2), nullable=False)
    notes = db.Column(db.Text)
    goals = db.Column(db.Text)

    dates = db.relationship('Day',
                            secondary=days,
                            backref='hobbies',
                            lazy=True)

    def __repr__(self):
        return '<Hobby {}, Notes {}>'.format(self.name, self.notes)
示例#3
0
class Device(db.Model, SerialiseMixin):
    __tablename__ = 'device'

    id = Column(Integer, primary_key=True)
    created_at = Column(DateTime, index=True, nullable=False)
    device_type = Column(Integer, index=True)
    device_sub_type = Column(Integer, index=True)
    device_id = Column(String(20), nullable=False, unique=True)
    area_id = Column(Integer, ForeignKey('area.id'))

    area = db.relationship(
        "Area", backref=db.backref('devices'), lazy='joined', uselist=False)

    def __init__(self, device_type, device_sub_type, device_id, area=None):
        super().__init__()
        self.created_at = datetime.utcnow()
        self.device_type = device_type
        self.device_sub_type = device_sub_type
        self.device_id = device_id
        self.area = area

    @classmethod
    def get_or_create(cls, device_type, device_sub_type, device_id):
        return get_or_create(cls, device_type=device_type,
                             device_sub_type=device_sub_type,
                             device_id=device_id)

    def __repr__(self):
        return "Device(name=%s, ID=%r)" % (
            self.area, self.device_id)
示例#4
0
class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    owned_car = db.relationship("Car", backref="car_owner", lazy="dynamic")
    owned_camp = db.relationship("Camp", backref="camp_owner", lazy="dynamic")

    assigned_seat = db.Column(db.Integer, db.ForeignKey("seat.id"))

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    def __repr__(self):
        return "<Username: {}>".format(self.username)
示例#5
0
class Seat(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    available = db.Column(db.Boolean(), default=True)
    reserved = db.Column(db.Boolean(), default=False)
    taken = db.Column(db.Boolean(), default=False)

    related_car = db.Column(db.Integer, db.ForeignKey("car.id"))
    related_user = db.relationship("User", backref="user_id", lazy="dynamic")

    def __repr__(self):
        return "<Seat=> Related Car {} >".format(self.related_car)
示例#6
0
class Day(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    date = db.Column(db.Integer)
    month = db.Column(db.Integer)
    year = db.Column(db.Integer)
    #Has this date already past
    past = db.Column(db.Boolean)
    #Is date in current month
    curr = db.Column(db.Boolean)

    _hobbies = db.relationship('Hobby', secondary=days)
示例#7
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(50), unique=True, nullable=False)
    image_file = db.Column(db.String(20),
                           nullable=False,
                           default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)

    def __repr__(self):
        return f"User('{self.username}','{self.email}','{self.image_file}')"
示例#8
0
class Car(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    number_of_seats = db.Column(db.Integer)
    starting_location = db.Column(db.String(140))
    owner_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    seats = db.relationship("Seat", backref="seat_id", lazy="dynamic")

    linked_camp = db.Column(db.Integer, db.ForeignKey("camp.id"))

    def __repr__(self):
        return "<Car=> Owner:{} ".format(
            self.owner_id, self.number_of_seats) + "Seats:{} ".format(
                self.number_of_seats)
示例#9
0
class Camp(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    owner_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    name = db.Column(db.String(128), index=True)
    group = db.Column(db.String(64), index=True)
    location = db.Column(db.String(128), index=True)
    start_date = db.Column(db.DateTime, index=True, nullable=True)
    end_date = db.Column(db.DateTime, index=True, nullable=True)
    key = db.Column(db.String(8), index=True, unique=True)
    linked_car = db.relationship("Car", backref="car_id", lazy="dynamic")

    def __repr__(self):
        return "<CampName{} ".format(self.name) + " group:{} ".format(
            self.group) + " key:{}>".format(self.key)
示例#10
0
class DeviceSeries(db.Model, SerialiseMixin):
    __tablename__ = 'device_series'

    id = Column(Integer, primary_key=True)
    created_at = Column(DateTime, nullable=False, index=True)
    series_id = Column(Integer, ForeignKey('series.id'), nullable=False)
    device_id = Column(Integer, ForeignKey('device.id'), nullable=False)

    device = db.relationship(
        "Device", backref=db.backref('device_series'), lazy='joined')
    series = db.relationship(
        "Series", backref=db.backref('device_series'), lazy='joined')

    __table_args__ = (
        UniqueConstraint('series_id', 'device_id', name='_series_device_uc'),
    )

    def __init__(self, device, series):
        super().__init__()
        self.created_at = datetime.utcnow()
        self.series = series
        self.device = device

    @property
    def latest_reading(self):
        return DataPoint.query\
            .filter_by(device_series=self)\
            .order_by(DataPoint.created_at.desc())\
            .limit(1).first()

    @classmethod
    def get_or_create(cls, **kwargs):
        return get_or_create(cls, **kwargs)

    def __repr__(self):
        return "DeviceSeries(device_id=%s, series_id=%s)" % (
            self.device_id, self.series_id)
示例#11
0
class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(32),
                         index=True,
                         unique=True,
                         nullable=False)
    email = db.Column(db.String(128), index=True, unique=True, nullable=False)
    password_hash = db.Column(db.String(128))
    hobbies = db.relationship('Hobby', backref='user', lazy=True)

    def __repr__(self):
        return '<User {}>'.format(self.username)

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def get_password(self, password):
        return check_password_hash(self.password_hash, password)
示例#12
0
class DataPoint(db.Model, SerialiseMixin):
    __tablename__ = 'data_point'

    id = Column(Integer, primary_key=True)
    created_at = Column(DateTime, nullable=False, index=True)
    value = Column(Numeric, nullable=False, index=True)
    device_series_id = Column(Integer, ForeignKey('device_series.id'),
                              index=True, nullable=False)

    device_series = db.relationship(
        "DeviceSeries", order_by=created_at.desc(),
        backref=db.backref('data_points'))

    def __init__(self, device_series, value, created_at=None):
        self.created_at = datetime.utcnow()
        super().__init__()
        self.device_series = device_series
        self.value = value
        self.created_at = created_at

    def push_to_redis(self):

        ds = self.device_series
        key = "D-%s:S-%s" % (ds.device_id, ds.series_id)
        redis_series.push(key, self.value, self.created_at)

    @classmethod
    def record(cls, series, device, value, created_at=None):
        ds = DeviceSeries.get_or_create(device=device, series=series)
        data_point = DataPoint(device_series=ds, value=value)
        if created_at is None:
            data_point.created_at = datetime.utcnow()
        data_point.push_to_redis()
        db.session.add(data_point)
        return data_point

    def __repr__(self):
        return "<Data Point(%s, value=%s, created_at=%s)>" % (
            self.device_series, self.value, self.created_at)
示例#13
0
class Series(db.Model, SerialiseMixin):
    __tablename__ = 'series'

    id = Column(Integer, primary_key=True)
    created_at = Column(DateTime, index=True, nullable=False)
    name = Column(String(20), nullable=False, index=True, unique=True)
    graph_id = Column(Integer, ForeignKey('graph.id'))

    graph = db.relationship(
        "Graph", backref=db.backref('series'), lazy='joined', uselist=False)

    def __init__(self, name):
        super().__init__()
        self.created_at = datetime.utcnow()
        self.name = name

    @classmethod
    def get_or_create(cls, **kwargs):
        r = get_or_create(cls, **kwargs)
        return r

    def __repr__(self):
        return "Series(name=%r)" % (self.name)