コード例 #1
0
class BlacklistToken(db.Model):
    """
    Token Model for storing JWT tokens
    """
    __tablename__ = 'blacklist_tokens'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    token = db.Column(db.String(500), unique=True, nullable=False)
    blacklisted_on = db.Column(db.DateTime, nullable=False)

    def __init__(self, token):
        self.token = token
        self.blacklisted_on = datetime.datetime.now()

    def __repr__(self):
        return '<id: token: {}'.format(self.token)

    @staticmethod
    def check_blacklist(auth_token):
        # check whether auth token has been blacklisted
        res = BlacklistToken.query.filter_by(token=str(auth_token)).first()
        if res:
            return True
        else:
            return False
コード例 #2
0
class Item(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True, unique=True)
    associated_room = db.Column(
        db.Integer,
        db.ForeignKey('room.id',ondelete='CASCADE')
    )
    name = db.Column(db.Text, nullable=False)
    description = db.Column(db.Text)
    who_owns = db.Column(db.Text, nullable=False)
    who_has_current = db.Column(db.Text)
    how_long_can_borrow = db.Column(db.Text)
    due_back = db.Column(db.DateTime)
    date_posted = db.Column(db.DateTime, default=func.now(), nullable=False)
    active = db.Column(db.Boolean, default=True)
    history = db.relationship('BorrowHistory', cascade='all, delete-orphan')

    def __init__(self, room, name, who_owns):
        self.associated_room = room.id
        self.name = name
        self.who_owns = who_owns

    def get_info(self):
        d = {}
        for i in self.__table__.columns:
            d[i.name] = getattr(self, i.name)

        d['history'] = [j.get_history_info() for j in self.history]
        return d
コード例 #3
0
class RoomProductivity(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    room_id = db.Column(db.Integer, db.ForeignKey('rooms.id'))
    count_usage = db.Column(db.Integer)
    standard_usage = db.Column(db.Integer)

    def __repr__(self):
        return '<RoomProductivity {}>'.format(self.id)
コード例 #4
0
class MedicalDeviceType(db.Model):
    __tablename__ = 'medical_devices_type'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    type_name = db.Column(db.String(120))
    type_desc = db.Column(db.String(240))
    devices = db.relationship('MedicalDevice',
                              backref='device_type',
                              lazy='dynamic')
コード例 #5
0
class RoomSecurity(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    room_id = db.Column(db.Integer, db.ForeignKey('rooms.id'))
    is_unauthorized = db.Column(db.Boolean)
    is_locked = db.Column(db.Boolean)
    is_pic_exist = db.Column(db.Boolean)

    def __repr__(self):
        return '<RoomSecurity {}>'.format(self.id)
コード例 #6
0
class BedSecurity(db.Model):
    __tablename__ = 'beds_security'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    bed_id = db.Column(db.Integer, db.ForeignKey('beds.id'))
    current_loc = db.Column(db.String(60))  # refer to a place
    current_pic = db.Column(db.String(60))  # refer to a staff

    def __repr__(self):
        return '<BedSecurity {}>'.format(self.security_bed.current_security)
コード例 #7
0
class User(db.Model):
    """ User Model for storing user related details """
    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    email = db.Column(db.String(255), unique=True, nullable=False)
    password = db.Column(db.String(255), nullable=False)
    registered_on = db.Column(db.DateTime, nullable=False)
    admin = db.Column(db.Boolean, nullable=False, default=False)

    def __init__(self, email, password, admin=False):
        self.email = email
        self.password = bcrypt.generate_password_hash(
            password, app.config.get('BCRYPT_LOG_ROUNDS')
        ).decode()
        self.registered_on = datetime.datetime.now()
        self.admin = admin

    def encode_auth_token(self, user_id):
        """
        Generates the Auth Token
        :return: string
        """
        try:
            payload = {
                'exp': datetime.datetime.utcnow() + datetime.timedelta(days=0, seconds=5),
                'iat': datetime.datetime.utcnow(),
                'sub': user_id
            }
            return jwt.encode(
                payload,
                app.config.get('SECRET_KEY'),
                algorithm='HS256'
            )
        except Exception as e:
            return e

    @staticmethod
    def decode_auth_token(auth_token):
        """
        Validates the auth token
        :param auth_token:
        :return: integer|string
        """
        try:
            payload = jwt.decode(auth_token, app.config.get('SECRET_KEY'))
            is_blacklisted_token = BlacklistToken.check_blacklist(auth_token)
            if is_blacklisted_token:
                return 'Token blacklisted. Please log in again.'
            else:
                return payload['sub']
        except jwt.ExpiredSignatureError:
            return 'Signature expired. Please log in again.'
        except jwt.InvalidTokenError:
            return 'Invalid token. Please log in again.'
コード例 #8
0
class MedicalDeviceProductivity(db.Model):
    __tablename__ = 'medical_devices_productivity'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    device_id = db.Column(db.Integer, db.ForeignKey('medical_devices.id'))
    count_usage = db.Column(db.Integer)
    standard_usage = db.Column(db.Integer)

    def __repr__(self):
        return '<DeviceProductivity {}>'.format(
            self.productivity_device.current_productivity)
コード例 #9
0
class Testcase(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    nodeid = db.Column(db.String(80), nullable=False)
    remark = db.Column(db.String(120))

    def as_dict(self):
        """
        返回一个标准的Python结构体
        :return:
        """
        return {'id': self.id, 'nodeid': self.nodeid, 'remark': self.remark}
コード例 #10
0
class MedicalDeviceSecurity(db.Model):
    __tablename__ = 'medical_devices_security'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    device_id = db.Column(db.Integer, db.ForeignKey('medical_devices.id'))
    current_loc = db.Column(db.String(60))  # refer to a place
    current_pic = db.Column(db.String(60))  # refer to a staff

    def __repr__(self):
        return '<DeviceSecurity {}>'.format(
            self.security_device.current_security)
コード例 #11
0
class Role(db.Model):
    __tablename__ = 'roles'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    scope = db.Column(db.String(60), nullable=False)
    state_id = db.Column(db.Integer, db.ForeignKey('states.id'))
    hospital_id = db.Column(db.Integer, db.ForeignKey('hospitals.id'))
    users = db.relationship('User', backref='user_role', lazy='dynamic')

    def __repr__(self):
        return '<Role: {}>'.format(self.scope)
コード例 #12
0
class BedProductivity(db.Model):
    __tablename__ = 'beds_productivity'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    bed_id = db.Column(db.Integer, db.ForeignKey('beds.id'))
    count_usage = db.Column(db.Integer)
    standard_usage = db.Column(db.Integer)
    turnover_usage = db.Column(db.Integer)

    def __repr__(self):
        return '<BedProductivity {}>'.format(
            self.productivity_bed.current_productivity)
コード例 #13
0
class RevokedToken(db.Model):
    __tablename__ = 'revoked_tokens'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    jti = db.Column(db.String(120), nullable=False)

    def __init__(self, jti):
        self.jti = jti

    @classmethod
    def is_token_revoked(cls, jti):
        query = cls.query.filter_by(jti = jti).first()
        return bool(query)
    
    def db_commit(self):
        db.session.add(self)
        db.session.commit()
コード例 #14
0
class Room(db.Model):
    __tablename__ = 'rooms'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    room_name = db.Column(db.String(60), nullable=False)
    room_pic = db.Column(db.String(60)) # refer to staff/person/etc.
    current_safety = db.Column(db.Integer)
    current_security = db.Column(db.Integer)
    current_productivity = db.Column(db.Integer)
    level_id = db.Column(db.Integer, db.ForeignKey('levels.id'))
    rooms_history = db.relationship('RoomHistory',
                                     backref='history_room',
                                     lazy='dynamic')
    rooms_safety = db.relationship('RoomSafety',
                                    backref='safety_room',
                                    lazy='dynamic')
    rooms_security = db.relationship('RoomSecurity',
                                      backref='security_room',
                                      lazy='dynamic')
    rooms_productivity = db.relationship('RoomProductivity',
                                          backref='productivity_room',
                                          lazy='dynamic')

    def __repr__(self):
        return '<Room {}>'.format(self.room_name)
コード例 #15
0
ファイル: task.py プロジェクト: yangwei211/HogwartsSDET18
class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    # 人物执行的相关数据信息
    remark = db.Column(db.String(120))
    report = db.Column(db.String(120))
    # 指定时间格式,默认值为当前时间
    create_at = db.Column(db.DateTime, default=datetime.datetime.now)

    def as_dict(self):
        """
        返回一个标准的Python结构体
        :return:
        """
        return {'id': self.id,
                'remark': self.remark,
                'report': self.report,
                # 强转为字符串的格式
                'create_at': str(self.create_at)
                }
コード例 #16
0
class Room(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True, unique=True)
    room_name = db.Column(db.Text, nullable=False)
    encoded_room_name = db.Column(db.Text, nullable=False)
    date_created = db.Column(db.DateTime, default=func.now(), nullable=False)
    private = db.Column(db.Boolean, default=False)
    password = db.Column(db.Text)
    items = db.relationship('Item', cascade='all, delete-orphan')


    def __init__(self, room_name):
        self.room_name = room_name
        self.encoded_room_name = self.encode_room(room_name)

    def encode_room(self, room_name):
        rooms_with_same_name = Room.query.filter_by(room_name=room_name)
        if rooms_with_same_name.count() >= 1:
            room_name = "".join([room_name, str(rooms_with_same_name.count())])
        hashed_room_name = hashlib.md5(room_name.encode()).digest()
        room_encoding = base64.urlsafe_b64encode(hashed_room_name).decode()
        return room_encoding.strip('=')

    def get_items(self):
        d = {}
        for i in self.__table__.columns:
            if i.name in ['encoded_room_name', 'password']:
                continue
            else:
                d[i.name] = getattr(self, i.name)
        d['items'] = [j.get_info() for j in self.items]
        return d
コード例 #17
0
class BedSafety(db.Model):
    __tablename__ = 'beds_safety'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    bed_id = db.Column(db.Integer, db.ForeignKey('beds.id'))
    bed_age = db.Column(db.Integer)
    last_maintenance_date = db.Column(db.DateTime)
    standar_maintenance = db.Column(db.Integer)
    is_reported = db.Column(db.Boolean)

    def __repr__(self):
        return '<BedSafety {}>'.format(self.safety_bed.current_safety)
コード例 #18
0
class BedHistory(db.Model):
    __tablename__ = 'beds_history'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    bed_id = db.Column(db.Integer, db.ForeignKey('beds.id'))
    date_time = db.Column(db.DateTime)
    record_safety = db.Column(db.Integer)
    record_security = db.Column(db.Integer)
    record_productivity = db.Column(db.Integer)

    def __repr__(self):
        return '<BedHistory {}>'.format(self.history_bed.bed_name)
コード例 #19
0
class StateHistory(db.Model):
    __tablename__ = 'states_history'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    state_id = db.Column(db.Integer, db.ForeignKey('states.id'))
    date_time = db.Column(db.DateTime)
    record_safety = db.Column(db.Integer)
    record_security = db.Column(db.Integer)
    record_productivity = db.Column(db.Integer)

    def __repr__(self):
        return '<StateHistory: {}>'.format(self.id)
コード例 #20
0
class Level(db.Model):
    __tablename__ = 'levels'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    level_name = db.Column(db.String(60), nullable=False)
    level_pic = db.Column(db.String(60),
                          nullable=True)  # refer to staff/person/etc.
    count_rooms = db.Column(db.Integer)
    current_safety = db.Column(db.Integer)
    current_security = db.Column(db.Integer)
    current_productivity = db.Column(db.Integer)
    building_id = db.Column(db.Integer, db.ForeignKey('buildings.id'))
    rooms = db.relationship('Room', backref='room_level', lazy='dynamic')
    levels_history = db.relationship('LevelHistory',
                                     backref='history_level',
                                     lazy='dynamic')

    def __repr__(self):
        return '<Level {}>'.format(self.level_name)
コード例 #21
0
class MedicalDeviceHistory(db.Model):
    __tablename__ = 'medical_devices_history'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    device_id = db.Column(db.Integer, db.ForeignKey('medical_devices.id'))
    date_time = db.Column(db.DateTime)
    record_safety = db.Column(db.Integer)
    record_security = db.Column(db.Integer)
    record_productivity = db.Column(db.Integer)

    def __repr__(self):
        return '<DeviceHistory {}>'.format(self.history_device.device_name)
コード例 #22
0
class MedicalDeviceSafety(db.Model):
    __tablename__ = 'medical_devices_safety'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    device_id = db.Column(db.Integer, db.ForeignKey('medical_devices.id'))
    device_age = db.Column(db.Integer)
    last_maintenance_date = db.Column(db.DateTime)
    standar_maintenance = db.Column(db.Integer)
    is_reported = db.Column(db.Boolean)

    def __repr__(self):
        return '<DeviceSafety {}>'.format(self.safety_device.current_safety)
コード例 #23
0
class Hospital(db.Model):
    __tablename__ = 'hospitals'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    hospital_name = db.Column(db.String(60), nullable=False)
    count_buildings = db.Column(db.Integer)
    count_rooms = db.Column(db.Integer)
    current_safety = db.Column(db.Integer)
    current_security = db.Column(db.Integer)
    current_productivity = db.Column(db.Integer)
    state_id = db.Column(db.Integer, db.ForeignKey('states.id'))
    roles = db.relationship('Role', backref='role_hospital', lazy='dynamic')
    buildings = db.relationship('Building',
                                backref='building_hospital',
                                lazy='dynamic')
    hospitals_history = db.relationship('HospitalHistory',
                                        backref='history_hospital',
                                        lazy='dynamic')

    def __repr__(self):
        return '<Hospital {}>'.format(self.hospital_name)
コード例 #24
0
class BorrowHistory(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    associated_item = db.Column(db.Integer,
        db.ForeignKey('item.id', ondelete='CASCADE'),
        nullable=False
    )
    who_borrowed = db.Column(db.Text, nullable=False)
    date_borrowed = db.Column(db.DateTime)
    due_back = db.Column(db.DateTime)
    returned = db.Column(db.Boolean, default=False)
    date_returned = db.Column(db.DateTime)
    notes = db.Column(db.Text)

    def __init__(self, associated, who_borrowed):
        self.associated_item = associated.id
        self.who_borrowed = who_borrowed

    def get_history_info(self):
        d = {}
        for i in self.__table__.columns:
            d[i.name] = getattr(self, i.name)
        return d
コード例 #25
0
class State(db.Model):
    __tablename__ = 'states'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    state_name = db.Column(db.String(60), nullable=False)
    count_hospitals = db.Column(db.Integer)
    current_safety = db.Column(db.Integer)
    current_security = db.Column(db.Integer)
    current_productivity = db.Column(db.Integer)
    roles = db.relationship('Role', backref='role_state', lazy='dynamic')
    hospitals = db.relationship('Hospital', backref='hospital_state', lazy='dynamic')
    states_history = db.relationship('StateHistory', backref='history_state', lazy='dynamic')

    def __repr__(self):
        return '<State: {}>'.format(self.state_name)
コード例 #26
0
class Bed(db.Model):
    __tablename__ = 'beds'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    bed_name = db.Column(db.String(60), nullable=False)
    bed_desc = db.Column(db.String(120))
    bed_loc = db.Column(
        db.String(60))  # refer to a place (room, level, or building)
    bed_pic = db.Column(db.String(60))  # refer to staff/person/etc.
    bed_status = db.Column(
        db.Boolean)  # refer to (used, unused, etc.) need to list more
    production_date = db.Column(db.DateTime)
    is_used = db.Column(db.Boolean)
    current_safety = db.Column(db.Integer)
    current_security = db.Column(db.Integer)
    current_productivity = db.Column(db.Integer)
    bed_history = db.relationship('BedHistory',
                                  backref='history_bed',
                                  lazy='dynamic')
    bed_safety = db.relationship('BedSafety',
                                 backref='safety_bed',
                                 lazy='dynamic')
    bed_security = db.relationship('BedSecurity',
                                   backref='security_bed',
                                   lazy='dynamic')
    bed_productivity = db.relationship('BedProductivity',
                                       backref='productivity_bed',
                                       lazy='dynamic')

    def __repr__(self):
        return '<Bed {}>'.format(self.bed_name)
コード例 #27
0
class MedicalDevice(db.Model):
    __tablename__ = 'medical_devices'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    device_name = db.Column(db.String(60), nullable=False)
    device_desc = db.Column(db.String(120))
    device_loc = db.Column(
        db.String(60))  # refer to a place (room, level, or building)
    device_pic = db.Column(db.String(60))  # refer to staff/person/etc.
    device_status = db.Column(
        db.Boolean)  # refer to (used, unused, etc.) need to list more
    production_date = db.Column(db.DateTime)
    is_on = db.Column(db.Boolean)
    current_safety = db.Column(db.Integer)
    current_security = db.Column(db.Integer)
    current_productivity = db.Column(db.Integer)
    device_type_id = db.Column(db.Integer,
                               db.ForeignKey('medical_devices_type.id'))
    device_history = db.relationship('MedicalDeviceHistory',
                                     backref='history_device',
                                     lazy='dynamic')
    device_safety = db.relationship('MedicalDeviceSafety',
                                    backref='safety_device',
                                    lazy='dynamic')
    device_security = db.relationship('MedicalDeviceSecurity',
                                      backref='security_device',
                                      lazy='dynamic')
    device_productivity = db.relationship('MedicalDeviceProductivity',
                                          backref='productivity_device',
                                          lazy='dynamic')

    def __repr__(self):
        return '<Device {}>'.format(self.device_name)
コード例 #28
0
class RoomSafety(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    room_id = db.Column(db.Integer, db.ForeignKey('rooms.id'))
    current_temperature = db.Column(db.Integer)
    current_humidity = db.Column(db.Integer)
    current_smoke = db.Column(db.Integer)
    current_co = db.Column(db.Integer)
    current_methane = db.Column(db.Integer)
    current_lpg = db.Column(db.Integer)
    current_light = db.Column(db.Integer)
    current_led = db.Column(db.Integer)
    current_freq = db.Column(db.Integer)

    def __repr__(self):
        return '<RoomSafety {}>'.format(self.id)