コード例 #1
0
ファイル: models.py プロジェクト: shychrdw/trondata
class Witness(Model):
    __tablename__ = 'witness'

    address = Column(db.String(255), primary_key=True)
    name = Column(db.String(255))
    address_b58c = Column(db.String(64))

    def __str__(self):
        return '(%s, %s, %s)' % (self.name, self.address_b58c, self.address)
コード例 #2
0
class Block(Model):
    __tablename__ = 'block'

    number = Column(db.Integer, primary_key=True)
    witness_address = Column(db.String(255))
    timestamp = Column(db.BigInteger)
    blockid = Column(db.String(255))
    parenthash = Column(db.String(255))
    version = Column(db.Integer)

    utc0time = db.Column(db.DateTime, default=func.from_unixtime(timestamp))
コード例 #3
0
ファイル: models.py プロジェクト: shychrdw/trondata
class WitnessSchedule(SurrogatePK, Model):
    __tablename__ = 'witness_schedule'

    timestamp_start = Column(db.Integer)
    timestamp_end = Column(db.Integer)
    witness_list = Column(db.String(4096))
    block_number_start = Column(db.Integer)
    block_number_end = Column(db.Integer)
コード例 #4
0
class TireModel(db.Model):
    __tablename__ = 'tire'

    tire_id = db.Column(UUID(as_uuid=True),
                        primary_key=True,
                        default=uuid.uuid4,
                        unique=True,
                        nullable=False)

    bike_id = db.Column(UUID(as_uuid=True),
                        db.ForeignKey('bike.bike_id'),
                        nullable=False)

    active = db.Column(db.Boolean, nullable=True, default=False)
    rim = db.Column(db.String(15), nullable=True)

    category = db.Column(db.String(5), nullable=False)
    manufacturer = db.Column(db.String(15), nullable=False)
    name = db.Column(db.String(25), nullable=True)
    compound = db.Column(db.String(10), nullable=True)
    axis = db.Column(db.String(5), nullable=False)
    dimension = db.Column(db.String(15), nullable=True)
    dot = db.Column(db.String(4), nullable=False)

    condition = db.Column(JSON,
                          nullable=False,
                          default={
                              "left_outer": 1.0,
                              "left_middle": 1.0,
                              "center": 1.0,
                              "right_middle": 1.0,
                              "right_outer": 1.0
                          })
    operating_hours = db.Column(db.Float, nullable=False)

    comment = db.Column(db.Text, nullable=True)

    datetime_created = db.Column(db.DateTime,
                                 nullable=False,
                                 default=db.utcnow)
    datetime_last_modified = db.Column(db.DateTime,
                                       nullable=False,
                                       default=db.utcnow,
                                       onupdate=db.utcnow)

    def __repr__(self):
        return f"Maintenance[" \
               f"'{self.maintenance_id}': (" \
               f"'{self.category}', " \
               f"'{self.name}', " \
               f"'{self.interval_amount}', " \
               f"'{self.interval_unit}', " \
               f"'{self.interval_type}'" \
               f")]"
コード例 #5
0
ファイル: session.py プロジェクト: SMEISEN/RidingCoachApp
class SessionModel(db.Model):
    __tablename__ = 'session'

    session_id = db.Column(UUID(as_uuid=True),
                           primary_key=True,
                           default=uuid.uuid4,
                           unique=True,
                           nullable=False)

    training_id = db.Column(UUID(as_uuid=True),
                            db.ForeignKey('training.training_id'),
                            nullable=False)
    setup_id = db.Column(UUID(as_uuid=True),
                         db.ForeignKey('setup.setup_id'),
                         nullable=True)
    bike_id = db.Column(UUID(as_uuid=True),
                        db.ForeignKey('bike.bike_id'),
                        nullable=True)

    application = db.Column(db.String(50), nullable=True)

    datetime_created = db.Column(db.DateTime,
                                 nullable=False,
                                 default=db.utcnow)
    datetime_last_modified = db.Column(db.DateTime,
                                       nullable=False,
                                       default=db.utcnow,
                                       onupdate=db.utcnow)
    datetime_display = db.Column(db.DateTime,
                                 nullable=False,
                                 default=db.utcnow)

    bike = db.relationship('BikeModel',
                           backref=db.backref(
                               'sessions',
                               order_by='SessionModel.datetime_display.asc()'))
    training = db.relationship(
        'TrainingModel',
        backref=db.backref('sessions',
                           order_by='SessionModel.datetime_display.asc()'))
    setup = db.relationship(
        'SetupModel',
        backref=db.backref('sessions',
                           order_by='SessionModel.datetime_display.asc()'))

    def __repr__(self):
        return f"Session[" \
               f"'{self.session_id}': (" \
               f"'{self.datetime_display}', " \
               f"training_id: '{self.training_id}', " \
               f"bike_id: '{self.bike_id}', " \
               f"setup_id: '{self.setup_id}', " \
               f")]"
コード例 #6
0
ファイル: maintenance.py プロジェクト: SMEISEN/RidingCoachApp
class MaintenanceModel(db.Model):
    __tablename__ = 'maintenance'

    maintenance_id = db.Column(UUID(as_uuid=True),
                               primary_key=True,
                               default=uuid.uuid4,
                               unique=True,
                               nullable=False)

    bike_id = db.Column(UUID(as_uuid=True),
                        db.ForeignKey('bike.bike_id'),
                        nullable=False)

    category = db.Column(db.String(20), nullable=False)
    name = db.Column(db.String(100), unique=True, nullable=False)
    interval_type = db.Column(db.String(25), nullable=False)
    interval_amount = db.Column(db.Float, nullable=True)
    interval_unit = db.Column(db.String(25), nullable=True)
    tags_default = db.Column(ARRAY(db.String), nullable=True)

    datetime_created = db.Column(db.DateTime,
                                 nullable=False,
                                 default=db.utcnow)
    datetime_last_modified = db.Column(db.DateTime,
                                       nullable=False,
                                       default=db.utcnow,
                                       onupdate=db.utcnow)

    def __repr__(self):
        return f"Maintenance[" \
               f"'{self.maintenance_id}': (" \
               f"'{self.category}', " \
               f"'{self.name}', " \
               f"'{self.interval_amount}', " \
               f"'{self.interval_unit}', " \
               f"'{self.interval_type}'" \
               f")]"
コード例 #7
0
class CoachModel(db.Model):
    __tablename__ = 'coach'

    coach_id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, unique=True, nullable=False)

    category = db.Column(db.String(6), nullable=False)
    symptom = db.Column(db.JSON, nullable=False)
    notes = db.Column(db.Text, nullable=True)
    questions = db.Column(ARRAY(db.String), nullable=True, default=[])
    advice = db.Column(JSON, nullable=False)

    datetime_created = db.Column(db.DateTime, nullable=False, default=db.utcnow)
    datetime_last_modified = db.Column(db.DateTime, nullable=False, default=db.utcnow, onupdate=db.utcnow)

    def __repr__(self):
        return f"Coach[" \
               f"'{self.coach_id}': (" \
               f"'{self.category}', " \
               f"'{self.symptom}'" \
               f")]"
コード例 #8
0
ファイル: bike.py プロジェクト: SMEISEN/RidingCoachApp
class BikeModel(db.Model):
    __tablename__ = 'bike'

    bike_id = db.Column(UUID(as_uuid=True),
                        primary_key=True,
                        default=uuid.uuid4,
                        unique=True,
                        nullable=False)

    operating_hours = db.Column(db.Float, nullable=False)

    manufacturer = db.Column(db.String(15), nullable=False)
    model = db.Column(db.String(15), nullable=False)
    year = db.Column(db.Integer, nullable=False)
    ccm = db.Column(db.Float, nullable=True)
    stroke = db.Column(db.Float, nullable=True)
    piston = db.Column(db.Float, nullable=True)
    slick_front_name = db.Column(db.String(50), nullable=True)
    slick_front_notes = db.Column(db.Text, nullable=True)
    slick_front_pressure = db.Column(JSON, default=[], nullable=False)
    slick_rear_name = db.Column(db.String(50), nullable=True)
    slick_rear_notes = db.Column(db.Text, nullable=True)
    slick_rear_pressure = db.Column(JSON, default=[], nullable=False)
    rain_front_name = db.Column(db.String(50), nullable=True)
    rain_front_notes = db.Column(db.Text, nullable=True)
    rain_front_pressure = db.Column(JSON, default=[], nullable=False)
    rain_rear_name = db.Column(db.String(50), nullable=True)
    rain_rear_notes = db.Column(db.Text, nullable=True)
    rain_rear_pressure = db.Column(JSON, default=[], nullable=False)
    setup = db.Column(JSON, default=[], nullable=False)

    datetime_created = db.Column(db.DateTime,
                                 nullable=False,
                                 default=db.utcnow)
    datetime_last_modified = db.Column(db.DateTime,
                                       nullable=False,
                                       default=db.utcnow,
                                       onupdate=db.utcnow)

    def __repr__(self):
        return f"Bike[" \
               f"'{self.bike_id}': (" \
               f"'{self.manufacturer}', " \
               f"'{self.model}', " \
               f"'{self.year}', " \
               f"'{self.operating_hours}'h" \
               f")]"
コード例 #9
0
class User(db.Model):
    __tablename__ = 'user'

    id = db.Column(UUIDType(), primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    hash = db.Column(db.BINARY(256), nullable=False)
    salt = db.Column(db.BINARY(256), nullable=False)
    role = db.Column(db.String(10), nullable=False)

    @staticmethod
    def new_user(username, password, role) -> 'User':
        if not role in roles:
            raise ValueError(f"Invalid role '{role}'")

        hash, salt = User.create_hash(password)
        return User(
            id = uuid4(),
            username = username, 
            hash = hash, 
            salt = salt,
            role = role
        )

    @staticmethod
    def create_hash(password, salt=None) -> (bytes, bytes):
        if salt == None:
            salt = os.urandom(32)

        hash = hashlib.pbkdf2_hmac(
            'sha256', 
            password.encode('utf-8'), 
            salt, 
            100000
        )
        return hash, salt
    
    @staticmethod
    def username_available(username) -> bool:
        result = User.query.filter_by(username = username).all()
        return len(result) == 0

    def check_password(self, password) -> bool:
        input_hash, salt = User.create_hash(password, self.salt)
        return self.hash == input_hash
        
    def json(self) -> dict:
        return {
            "id": str(self.id),
            "username": self.username,
            "role": self.role
        }
    
    @staticmethod
    def get_by_id(id) -> 'User':
        if type(id) != UUID:
            try:
                id = UUID(id)
            except:
                raise AttributeError("Invalid UUID")

        query = User.query.filter_by(id=id)

        if query.count() == 0:
            raise ValueError(f"User {str(id)} not found.")

        return query.first()
    
    @staticmethod
    def get_by_username(username) -> 'User':
        query = User.query.filter_by(username=username)

        if query.count() == 0:
            raise ValueError(f"User '{username}' not found.")

        return query.first()
コード例 #10
0
ファイル: models.py プロジェクト: shychrdw/trondata
class Account(Model):
    __tablename__ = 'account'

    address = Column(db.String(255), primary_key=True)
    balance = Column(db.Integer)
コード例 #11
0
ファイル: version.py プロジェクト: icerchou/Admin_test_
class VersionModel(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    version = db.Column(db.String(10))