Exemplo n.º 1
0
class Task(db.Model):
    __tablename__ = 'tasks'

    id = db.Column(db.String(), primary_key=True, nullable=False)
    name = db.Column(db.String(), index=True, nullable=False)
    description = db.Column(db.String())
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.id', name='FK_users_tasks'))
    complete = db.Column(
        db.Boolean,
        default=False,
    )
    created = db.Column(db.DateTime(), default=db.func.now())
    updated = db.Column(db.DateTime(),
                        default=db.func.now(),
                        onupdate=db.func.now())

    def get_rq_job(self):
        try:
            rq_job = rq.job.Job.fetch(self.id, connection=current_app.redis)
        except (redis.exceptions.RedisError, rq.exceptions.NoSuchJobError):
            return None
        return rq_job

    def get_progress(self):
        job = self.get_rq_job()
        return job.meta.get('progress', 0) if job is not None else 100
Exemplo n.º 2
0
class Purpose(db.Model):
    __tablename__ = 'purposes'

    id = db.Column(INTEGER(unsigned=True), primary_key=True)
    record_id = db.Column(
        INTEGER(unsigned=True),
        db.ForeignKey('records.id', onupdate='CASCADE', ondelete='CASCADE'))
    purpose_id = db.Column(
        INTEGER(unsigned=True),
        db.ForeignKey('purpose_masters.id',
                      onupdate='CASCADE',
                      ondelete='CASCADE'))
    created_at = db.Column(db.DateTime, nullable=False, default=datetime.now)
    updated_at = db.Column(db.DateTime,
                           nullable=False,
                           default=datetime.now,
                           onupdate=datetime.now)
    created_by = db.Column(db.String(255), nullable=False)
    updated_by = db.Column(db.String(255), nullable=False)

    def __init__(self, record_id, purpose_id, created_by):
        self.record_id = record_id
        self.purpose_id = purpose_id
        self.created_by = created_by
        self.updated_by = created_by
Exemplo n.º 3
0
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(80), unique=True)
    password_hash = db.Column(db.String(240), unique=False)
    is_online = db.Column(db.Boolean, unique=False)

    def __init__(self, username, email, password, is_online=False):
        self.username = username
        self.email = email
        self.password_hash = hash_password(password)
        self.is_online = is_online

    def __repr__(self):
        return '<User %r>' % self.username

    def create(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()

    def update(self):
        db.session.add(self)
        db.session.commit()
Exemplo n.º 4
0
class Ad(db.Model):
    id = db.Column(db.String(80), primary_key=True)
    title = db.Column(db.String(160))
    type = db.Column(db.String(80))
    content = db.Column(db.String(1000))
    
    def __repr__(self):
        return '<Ad: {}>'.format(self.title)
Exemplo n.º 5
0
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80))
    password = db.Column(db.String(160))
    category = db.Column(db.String(80))

    # posts relationship
    posts = db.relationship('Post', back_populates='user')

    # represents the table
    def __repr__(self):
        return '<User {}>'.format(self.username)
Exemplo n.º 6
0
class BasePersonModel(PkModel):

    __abstract__ = True

    first_name = Column(db.String(100))
    last_name = Column(db.String(100))
    pronouns = Column(db.String(50))
    email = Column(db.String(100))
    mobile_phone = Column(db.String(15))
    address = Column(db.String(255))
    address2 = Column(db.String(255))
    city = Column(db.String(100))
    state = Column(db.String(50))
    zip_code = Column(db.String(20))
Exemplo n.º 7
0
class Image(db.Model):
    __tablename__ = 'images'

    id = db.Column(db.Integer,
                   primary_key=True,
                   autoincrement=True,
                   nullable=False)
    file_name = db.Column(db.String(), nullable=False, unique=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.id', name='FK_users_images'))
    url = db.Column(db.String(), nullable=False, unique=True)
    timestamp = db.Column(db.DateTime, index=True, default=db.func.now())

    def __repr__(self):
        return '<id {}:{}>'.format(self.id, self.file_name)
Exemplo n.º 8
0
class User(UserMixin, SurrogatePK, Model):
    """A user of the app."""

    __tablename__ = 'users'
    email = Column(db.String(80), unique=True, nullable=False)
    password = Column(db.LargeBinary(128), nullable=True)
    created_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow)
    active = Column(db.Boolean(), default=False)
    is_admin = Column(db.Boolean(), default=False)

    def __init__(self, email, password=None, **kwargs):
        """Create instance."""
        db.Model.__init__(self, email=email, **kwargs)
        if password:
            self.set_password(password)
        else:
            self.password = None

    def set_password(self, password):
        """Set password."""
        self.password = bcrypt.generate_password_hash(password)

    def check_password(self, value):
        """Check password."""
        return bcrypt.check_password_hash(self.password, value)

    def __repr__(self):
        """Represent instance as a unique string."""
        return '<User({email!r})>'.format(email=self.email)
Exemplo n.º 9
0
class BlacklistedToken(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    jti = db.Column(db.String(36), nullable=False)
    user_identity = db.Column(db.String(50), nullable=False)
    expires = db.Column(db.DateTime, nullable=False)

    def as_json(self):
        """Get the JSON representation of a BlacklistedToken object.

        Returns:
            The JSON representation of a BlacklistedToken object.
        """
        return {
            'id': self.id,
            'jti': self.jti,
            'user': self.user_identity,
            'expires': self.expires
        }
Exemplo n.º 10
0
class PurposeMaster(db.Model):
    __tablename__ = 'purpose_masters'

    id = db.Column(INTEGER(unsigned=True), primary_key=True)
    content = db.Column(db.String(255), nullable=False)
    created_at = db.Column(db.DateTime, nullable=False, default=datetime.now)
    updated_at = db.Column(
        db.DateTime,
        nullable=False,
        default=datetime.now,
        onupdate=datetime.now)
    created_by = db.Column(db.String(255), nullable=False)
    updated_by = db.Column(db.String(255), nullable=False)

    def __init__(self, content, created_by):
        self.content = content
        self.created_by = created_by
        self.updated_by = created_by
Exemplo n.º 11
0
class Tags(Model):
    __tablename__ = 'tags'

    id = db.Column(db.Integer, primary_key=True)
    tagname = db.Column(db.String(100))

    def __init__(self, tagname):
        db.Model.__init__(self, tagname=tagname)

    def __repr__(self):
        return self.tagname
class User(db.Model):

    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), nullable=False)
    created_at = db.Column(db.DateTime, nullable=False, default=datetime.now)
    updated_at = db.Column(db.DateTime,
                           nullable=False,
                           default=datetime.now,
                           onupdate=datetime.now)
Exemplo n.º 13
0
class FootSize(SurrogatePK, Model):
    """The hair colors."""

    __tablename__ = 'foot_sizes'
    size = Column(db.String(3), nullable=True)

    def __init__(self, size, **kwargs):
        """Create instance."""
        db.Model.__init__(self, size=size, **kwargs)

    def __repr__(self):
        return '<FootSize({size})>'.format(size=self.size)
Exemplo n.º 14
0
class DrivingLicense(SurrogatePK, Model):
    """The driving license."""

    __tablename__ = 'driving_licenses_types'
    type = Column(db.String(4), nullable=True)

    def __init__(self, type, **kwargs):
        """Create instance."""
        db.Model.__init__(self, type=type, **kwargs)

    def __repr__(self):
        return '<DivingLicense({type})>'.format(type=self.type)
Exemplo n.º 15
0
class EyeColor(SurrogatePK, Model):
    """The hair colors."""

    __tablename__ = 'eye_colors'
    name = Column(db.String(80), nullable=True)

    def __init__(self, name, **kwargs):
        """Create instance."""
        db.Model.__init__(self, name=name, **kwargs)

    def __repr__(self):
        return '<EyeColor({name})>'.format(name=self.name)
Exemplo n.º 16
0
class Province(SurrogatePK, Model):
    """The provinces."""

    __tablename__ = 'provinces'
    name = Column(db.String(80), nullable=False)

    def __init__(self, name, **kwargs):
        """Create instance."""
        db.Model.__init__(self, name=name, **kwargs)

    def __repr__(self):
        return '<Province({name})>'.format(name=self.name)
Exemplo n.º 17
0
class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(INTEGER(unsigned=True),
                   primary_key=True,
                   autoincrement=True)
    name = db.Column(db.String(255), nullable=False)
    nfc_id = db.Column(db.String(16), nullable=False, unique=True)
    created_at = db.Column(db.DateTime, nullable=False, default=datetime.now)
    updated_at = db.Column(db.DateTime,
                           nullable=False,
                           default=datetime.now,
                           onupdate=datetime.now)
    created_by = db.Column(db.String(255), nullable=False)
    updated_by = db.Column(db.String(255), nullable=False)
    records = db.relationship("Record", backref="user")

    def __init__(self, name, nfc_id, created_by):
        self.name = name
        self.nfc_id = nfc_id
        self.created_by = created_by
        self.updated_by = created_by
Exemplo n.º 18
0
class User(SurrogatePK, Model):

    __tablename__ = 'users'
    username = Column(db.String(80), unique=True, nullable=False)
    email = Column(db.String(100), unique=True, nullable=False)
    password = Column(db.Binary(128), nullable=True)
    created_at = Column(db.DateTime,
                        nullable=False,
                        default=dt.datetime.utcnow)
    updated_at = Column(db.DateTime,
                        nullable=False,
                        default=dt.datetime.utcnow)
    bio = Column(db.String(300), nullable=True)
    image = Column(db.String(120), nullable=True)

    def __init__(self, username, email, password=None, **kwargs):
        """Create instance."""
        db.Model.__init__(self, username=username, email=email, **kwargs)
        if password:
            self.set_password(password)
        else:
            self.password = None

    def set_password(self, password):
        """Set password."""
        self.password = bcrypt.generate_password_hash(password)

    def check_password(self, value):
        """Check password."""
        return bcrypt.check_password_hash(self.password, value)

    @property
    def token(self):
        return _default_jwt_encode_handler(self).decode('utf-8')

    def __repr__(self):
        """Represent instance as a unique string."""
        return '<User({username!r})>'.format(username=self.username)
Exemplo n.º 19
0
class Locality(SurrogatePK, Model):
    """The localities."""

    __tablename__ = 'localities'
    name = Column(db.String(80), nullable=False)
    postal_code = Column(db.Integer(), nullable=False)
    province_id = reference_col('provinces', nullable=False)
    province = relationship('Province', backref='localities')

    def __init__(self, name, **kwargs):
        """Create instance."""
        db.Model.__init__(self, name=name, **kwargs)

    def __repr__(self):
        return '<Locality({name})>'.format(name=self.name)
Exemplo n.º 20
0
class Bike(PkModel):

    __tablename__ = 'bike'

    name = Column(db.String(150))
    color = Column(db.String(100))
    size_chart_to_use = Column(db.String(50))
    bottom_tube_length = Column(db.Integer)
    brakes = Column(db.String(50))
    shifters = Column(db.String(50))
    water_bottle = Column(db.Boolean)
    lights = Column(db.Boolean)
    bell = Column(db.Boolean)
    rack = Column(db.Boolean)
    pannier = Column(db.Boolean)
    kickstand = Column(db.Boolean)
    notes = Column(db.Text)
    intake_date = Column(db.DateTime)
    bike_tech_review_date = Column(db.DateTime)
    drop_off_date = Column(db.DateTime)
    mechanic_id = reference_col('mechanic', nullable=True)
    mechanic = relationship('Mechanic', backref='bike')
    donor_id = reference_col('donor', nullable=True)
    donor = relationship('Donor', backref='bike')
Exemplo n.º 21
0
class NotaFiscal(db.Model):
    __tablename__ = 'nfe'

    id = db.Column(db.Integer, primary_key=True)
    access_key = db.Column(db.String(120),
                           unique=True,
                           index=True,
                           nullable=False,
                           server_default='')
    total_value = db.Column(db.Float, nullable=False, default=0)

    def __repr__(self):
        return f'Nfe: {self.access_key} {self.total_value}'

    def to_dict(self):
        return {'access_key': self.access_key, 'total_value': self.total_value}
Exemplo n.º 22
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(160))
    slug = db.Column(db.String(160))
    body = db.Column(db.String(3000))
    dateCreated = db.Column(db.String(80))
    category = db.Column(db.String(80))
    image = db.Column(db.String(160))

    # user relationship
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user = db.relationship('User', back_populates='posts')

    # defines the init function
    def __init__(self, *args, **kwargs):
        # creates the slug
        if not 'slug' in kwargs:
            kwargs['slug'] = slugify(kwargs.get('title', ''))
        super().__init__(*args, **kwargs)

    # represents the table
    def __repr__(self):
        return '<Post {}>'.format(self.title)
Exemplo n.º 23
0
class Article(SurrogatePK, Model):
    __tablename__ = 'article'

    id = db.Column(db.Integer, primary_key=True)
    slug = Column(db.Text, unique=True)
    title = Column(db.String(100), nullable=False)
    description = Column(db.Text, nullable=False)
    body = Column(db.Text)
    createdAt = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow)
    updatedAt = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow)
    author_id = reference_col('userprofile', nullable=False)
    author = relationship('UserProfile', backref=db.backref('articles'))
    favoriters = relationship('UserProfile',
                              secondary=favoriter_assoc,
                              backref='favorites',
                              lazy='dynamic')

    tagList = relationship('Tags', secondary=tag_assoc, backref='articles')

    comments = relationship('Comment',
                            backref=db.backref('article'),
                            lazy='dynamic')

    def __init__(self, author, title, body, description, slug=None, **kwargs):
        db.Model.__init__(self,
                          author=author,
                          title=title,
                          description=description,
                          body=body,
                          slug=slug or slugify(title),
                          **kwargs)

    def favourite(self, profile):
        if not self.is_favourite(profile):
            self.favoriters.append(profile)
            return True
        return False

    def unfavourite(self, profile):
        if self.is_favourite(profile):
            self.favoriters.remove(profile)
            return True
        return False

    def is_favourite(self, profile):
        return bool(
            self.query.filter(
                favoriter_assoc.c.favoriter == profile.id).count())

    def add_tag(self, tag):
        if tag not in self.tagList:
            self.tagList.append(tag)
            return True
        return False

    def remove_tag(self, tag):
        if tag in self.tagList:
            self.tagList.remove(tag)
            return True
        return False

    @property
    def favoritesCount(self):
        return len(self.favoriters.all())

    @property
    def favorited(self):
        if current_identity:
            profile = current_identity.profile
            return self.query.join(Article.favoriters).filter(
                UserProfile.id == profile.id).count() == 1
        return False
Exemplo n.º 24
0
class Accessory(PkModel):

    __tablename__ = 'accessory'
    item_name = Column(db.String(200))
    donor_id = reference_col('donor')
    donor = relationship('Donor', backref='accessory')
Exemplo n.º 25
0
class Donor(BasePersonModel):

    __tablename__ = 'donor'
    pickup_date = Column(db.DateTime)
    platform = Column(db.String(100))
Exemplo n.º 26
0
class User(SurrogatePK, Model):
    """A user of the app."""

    __tablename__ = 'users'
    email = Column(db.String(80), unique=True, nullable=False)
    password = Column(db.String(255), nullable=True)
    created_at = Column(db.DateTime, nullable=False,
                        default=dt.datetime.utcnow)
    is_admin = Column(db.Boolean(), default=False)

    def __init__(self, email, password=None, **kwargs):
        """Create instance."""
        db.Model.__init__(self, email=email, **kwargs)
        if password:
            self.set_password(password)
        else:
            self.password = None

    def set_password(self, password):
        """Set password."""
        self.password = bcrypt.generate_password_hash(
            password, current_app.config.get('BCRYPT_LOG_ROUNDS')
        ).decode()

    def check_password(self, value):
        """Check password."""
        return bcrypt.check_password_hash(self.password, value)

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

    @staticmethod
    def decode_auth_token(token):
        """
        Validates the auth token
        :param token:
        :return: integer|string
        """
        try:
            payload = jwt.decode(token, current_app.config.get('SECRET_KEY'))
            return payload['sub']
        except jwt.ExpiredSignatureError:
            return 'Signature expired. Please log in again.'
        except jwt.InvalidTokenError:
            return 'Invalid token. Please log in again.'

    @property
    def serialize(self):
        """Return object data in easily serializeable format"""
        return {
            'id': self.id,
            'email': self.email,
            'created_at': self.created_at,
            'active': self.active,
            'is_admin': self.is_admin
        }
Exemplo n.º 27
0
class Extra(SurrogatePK, Model):
    """A extra profile."""

    __tablename__ = 'extras'
    user_id = reference_col('users', nullable=True)
    user = relationship('User', backref='extras')
    name = Column(db.String(80), nullable=True)
    last_name = Column(db.String(255), nullable=True)
    birthday = Column(db.DateTime(), nullable=True)
    phone = Column(db.Integer(), nullable=True)
    genre = Column(db.String(6), nullable=True)
    address = Column(db.String(200), nullable=True)
    province_id = reference_col('provinces', nullable=True)
    province = relationship('Province', backref='extras')
    locality_id = reference_col('localities', nullable=True)
    locality = relationship('Locality', backref='extras')
    nationality = Column(db.String(20), nullable=True)
    vat_number = Column(db.String(11), unique=True, nullable=True)
    insurance_number = Column(db.BigInteger(), unique=True, nullable=True)
    height = Column(db.Integer(), nullable=True)
    weight = Column(db.Integer(), nullable=True)
    tshirt_size_id = reference_col('tshirt_sizes', nullable=True)
    tshirt_size = relationship('TshirtSize', backref='extras')
    trouser_size_id = reference_col('trouser_sizes', nullable=True)
    trouser_size = relationship('TrouserSize', backref='extras')
    foot_size_id = reference_col('foot_sizes', nullable=True)
    foot_size = relationship('FootSize', backref='extras')
    eye_color_id = reference_col('eye_colors', nullable=True)
    eye_color = relationship('EyeColor', backref='extras')
    hair_color_id = reference_col('hair_colors', nullable=True)
    hair_color = relationship('HairColor', backref='extras')
    profession = Column(db.String(80), nullable=True)
    availability = Column(db.String(255), nullable=True)
    driving_license = Column(db.Boolean(), nullable=True)
    driving_license_type_id = reference_col('driving_licenses_types',
                                            nullable=True)
    driving_license_type = relationship('DrivingLicense', backref='extras')
    hobbies = Column(db.String(200), nullable=True)
    extra_experience = Column(db.Boolean(), nullable=True)
    dance_experience = Column(db.Boolean(), nullable=True)
    singing_experience = Column(db.Boolean(), nullable=True)
    sea_experience = Column(db.Boolean(), nullable=True)
    waiter_experience = Column(db.Boolean(), nullable=True)
    other_experience = Column(db.String(80), nullable=True)
    face_image = Column(db.String(255), nullable=True)
    body_image = Column(db.String(255), nullable=True)
    created_at = Column(db.DateTime(),
                        nullable=True,
                        default=dt.datetime.utcnow)

    def __init__(self, vat_number, **kwargs):
        """Create instance."""
        db.Model.__init__(self, vat_number=vat_number, **kwargs)

    def __repr__(self):
        return '<Extra({vat_number})>'.format(vat_number=self.vat_number)
Exemplo n.º 28
0
class User(UserMixin, db.Model):
    __tablename__ = 'users'

    id = db.Column(
            db.Integer,
            primary_key=True,
            autoincrement=True,
            nullable=False
            )
    username = db.Column(
            db.String(),
            index=True,
            unique=True,
            nullable=False
            )
    email = db.Column(
            db.String(),
            index=True,
            unique=True,
            nullable=False
            )
    password_hash = db.Column(
            db.String(),
            nullable=False,
            )
    tasks = db.relationship(
            'Task',
            backref='user',
            lazy='dynamic'
            )
    images = db.relationship(
            'Image',
            backref='user',
            lazy='dynamic'
            )

    @staticmethod
    def verify_reset_password_token(token):
        try:
            decoded = jwt.decode(
                    token,
                    current_app.config['SECRET_KEY'],
                    algorithms=['HS256']
                    )
            id = decoded['reset_password']
        except:  # noqa: E722 TODO: figure out excepction thrown and catch it
            return
        return User.query.get(id)

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

    def get_reset_password_token(self, expires_in=3000):
        return jwt.encode(
                {'reset_password': self.id, 'exp': time() + expires_in},
                current_app.config['SECRET_KEY'],
                algorithm='HS256'
                ).decode('utf-8')

    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 add_image(self, file_name):
        im = Image(file_name=file_name, user_id=self.id)
        db.session.add(im)
        return im

    def get_images(self):
        return Image.query.filter_by(user_id=self.id)

    def launch_task(self, task, params, name, description, priority, *args, **kwargs):
        rq_job = current_app.task_queues[priority].enqueue_call(func=task, args=params, *args, **kwargs)
        task = Task(id=rq_job.get_id(), name=name, description=description, user_id=self.id)
        db.session.add(task)
        return task

    def get_tasks_in_progress(self, name):
        return Task.query.filter_by(name=name, user_id=self.id, complete=False).all()