Example #1
0
class User(db.Model, UserMixin, CRUDMixin):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(30), unique=True, index=True)
    password_hash = db.Column(db.String(128))
    cs = db.relationship('CS', backref='user', lazy=True, cascade="all,delete")
    rating = db.relationship('Rating',
                             backref='user',
                             lazy=True,
                             cascade="all,delete")

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

    @property
    def password(self):
        raise AttributeError('password is not a readable attribute')

    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    def verify_password(self, password):
        return check_password_hash(self.password_hash, password)
Example #2
0
class User(db.Model, UserMixin):
    """用户"""
    __tablename__ = 'user'  #对应mysql数据库表
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))
    pwd = db.Column(db.String(64))

    def __init__(self, name, pwd):
        self.name = name
        self.pwd = pwd

    def get_id(self):
        return str(self.id)

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

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False
class Message(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    minister = db.Column(db.String(50))
    title = db.Column(db.String(100), nullable=False)
    tag = db.Column(db.String(100))
    date = db.Column(db.DateTime, default=datetime.utcnow)
    message = db.Column(db.Text, nullable=False)
    audio = db.Column(db.String(100))

    def __str__(self):
        return f"Message('{self.minister}', '{self.title}')"

    @classmethod
    def find_by_title(cls, title: str):
        return cls.query.filter_by(title=title).first()

    @classmethod
    def find_by_id(cls, id: int):
        return cls.query.filter_by(id=id).first()

    @classmethod
    def find_by_minister(cls, minister: str):
        return cls.query.filter_by(minister=minister).first()

    def save_to_database(self) -> None:
        db.session.add(self)
        db.session.commit()

    def remove_from_database(self) -> None:
        db.session.delete(self)
        db.session.commit()
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(120), 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)

    #   generating the password reseting roken
    def get_reset_token(self, expires_sec=1800):
        s = Serializer(current_app.config['SECRET_KEY'], expires_sec)
        return s.dumps({'user_id': self.id}).decode('utf-8')

    #  verify the token if the token has exprired or invalid
    @staticmethod
    def verify_reset_token(token):
        s = Serializer(current_app.config['SECRET_KEY'])
        try:
            user_id = s.loads(token)['user_id']
        except:
            return None
        return User.query.get(user_id)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"
Example #5
0
class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(32))
    second_name = db.Column(db.String(32))
    email = db.Column(db.String(32), index=True, unique=True)
    password_hash = db.Column(db.String(128))

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

    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)

    roles = relationship(
        "Role",
        secondary=user_role_rel,
        back_populates="users",
    )

    student_teams = relationship(
        "Team",
        secondary=team_student_rel,
        back_populates="students",
    )

    mentor_teams = relationship(
        "Team",
        secondary=team_mentor_rel,
        back_populates="mentors",
    )
class Employee(UserMixin, db.Model):
    _tablename_ = 'employees'

    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(60), index=True, unique=True)
    username = db.Column(db.String(60), index=True, unique=True)
    first_name = db.Column(db.String(60), index=True)
    last_name = db.Column(db.String(60), index=True)
    password_hash = db.Column(db.String(128))
    department_id = db.Column(db.Integer, db.ForeignKey('departments.id'))
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
    is_admin = db.Column(db.Boolean, default=False)

    @property
    def password(self):
        """
        Prevent pasword from being accessed
        """
        raise AttributeError('password is not a readable attribute.')

    @password.setter
    def password(self, password):
        """
        Set password to a hashed password
        """
        self.password_hash = generate_password_hash(password)

    def verify_password(self, password):
        """
        Check if hashed password matches actual password
        """
        return check_password_hash(self.password_hash, password)

    def __repr__(self):
        return '<Employee: {}>'.format(self.username)
Example #7
0
class DatasetManager(db.Model):
    __tablename__ = "DatasetManager"
    id = db.Column(db.Integer, primary_key=True)
    datasetName = db.Column(db.String(255), unique=True, nullable=False)
    datasetSqlName = db.Column(db.String(255), unique=True, nullable=False)
    comment = db.Column(db.String(255), nullable=True)
    createDateTime = db.Column(db.DateTime, nullable=True, default=datetime.utcnow)
Example #8
0
class ResearchInfo(db.Model):
    __tablename__ = "ResearchInfo"
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(255), nullable=False)
    weblink = db.Column(db.String(500))
    description = db.Column(db.Text, nullable=True)
    tags = db.Column(db.String(500))
    createDateTime = db.Column(db.DateTime, nullable=True, default=datetime.utcnow)
Example #9
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(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}')"
class User(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))

    def __repr__(self):
        return '<User {}>'.format(self.username)
Example #11
0
class TestLog(db.Model):
    __tablename__ = "TestLog"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), unique=True, nullable=True)
    value = db.Column(db.String(255), nullable=True)
    createDateTime = db.Column(db.DateTime,
                               nullable=True,
                               default=datetime.utcnow)
Example #12
0
class Papers(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(400), index=True)
    url = db.Column(db.String(200), index=True)
    doi = db.Column(db.String(100), index=True)
    proposer_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    schedule = db.relationship('Schedules', backref='paper', lazy='dynamic')

    def __repr__(self):
        return '<Paper {}>'.format(self.title)
Example #13
0
class WebContent(db.Model):
    __tablename__ = "WebContent"
    id = db.Column(db.Integer, primary_key=True)
    sectionName = db.Column(db.String(255), nullable=True)
    contentName = db.Column(db.String(255), nullable=True)
    webContent = db.Column(db.Text, nullable=True)

    def __repr__(self):
        return (
            f"WebContent('{self.sectionName}','{self.contentName}','{self.webContent}')"
        )
Example #14
0
class Users(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), index=True)
    surname = db.Column(db.String(64), index=True)
    email = db.Column(db.String(120), index=True, unique=True)
    is_admin = db.Column(db.Boolean(), default=False)
    paper = db.relationship('Papers', backref='proposer', lazy='dynamic')
    schedule = db.relationship('Schedules', backref='speaker', lazy='dynamic')

    def __repr__(self):
        return '<User {}>'.format(self.surname)
Example #15
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), nullable=False)
    password = db.Column(db.String(50), nullable=False)

    def save_to_database(self) -> None:
        db.session.add(self)
        db.session.commit()

    def remove_from_database(self) -> None:
        db.session.delete(self)
        db.session.commit()
Example #16
0
class Contact(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100))
    email = db.Column(db.String(100))
    message = db.Column(db.Text)

    def save_to_database(self) -> None:
        db.session.add(self)
        db.session.commit()

    def remove_from_database(self) -> None:
        db.session.delete(self)
        db.session.commit()
Example #17
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(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20),
                           default='default.jpeg',
                           nullable=False)
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)

    def __repr__(self):
        return "User('%s','%s','%s')" % (self.username, self.email,
                                         self.image_file)
class Role(db.Model):
    """
    Create a Role table
    """

    __tablename__ = 'roles'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(60), unique=True)
    description = db.Column(db.String(200))
    employees = db.relationship('Employee', backref='role', lazy='dynamic')

    def __repr__(self):
        return '<Role: {}>'.format(self.name)
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(128), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    posts = db.relationship('Post', backref='author', lazy='dynamic')
    about_me = db.Column(db.String(140))
    last_seen = db.Column(db.DateTime, default=datetime.utcnow)

    followed = db.relationship('User',
                               secondary=followers,
                               primaryjoin=(followers.c.follower_id == id),
                               secondaryjoin=(followers.c.followed_id == id),
                               backref=db.backref('followers', lazy='dynamic'),
                               lazy='dynamic')

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

    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 avatar(self, size):
        digest = md5(self.email.lower().encode('utf-8')).hexdigest()
        return 'https://www.gravatar.com/avatar/{}?d=identicon&s={}'.format(
            digest, size)

    def follow(self, user):
        if not self.is_following(user):
            self.followed.append(user)

    def unfollow(self, user):
        if self.is_following(user):
            self.followed.remove(user)

    def is_following(self, user):
        return self.followed.filter(
            followers.c.followed_id == user.id).count() > 0

    def followed_posts(self):
        followed = Post.query.join(
            followers, (followers.c.followed_id == Post.user_id)).filter(
                followers.c.follower_id == self.id)
        own = Post.query.filter_by(user_id=self.id)
        return followed.union(own).order_by(Post.timestamp.desc())
class DeprecatedToken(db.Model):
    """
    Token Model for storing JWT tokens
    """
    __tablename__ = 'deprecated_tokens'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    token = db.Column(db.String(500), unique=True, nullable=False)
    deprecated_on = db.Column(db.DateTime,
                              nullable=False,
                              default=datetime.now())

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

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

    @staticmethod
    def check_deprecated(token):
        is_deprecated = DeprecatedToken.query.filter(token=token).first()
        if is_deprecated:
            return True
        else:
            return False
Example #21
0
class Person(db.Model):
    name = db.Column(db.String(20), primary_key=True)
    age = db.Column(db.SmallInteger(), default="0", nullable=False)

    def __init__(self, name, age):
        self.name = name
        self.age = age
Example #22
0
class Groups(db.Model):

    __tablename__ = 'groups'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), nullable=False, unique=True)
    cost_group = db.relationship('CostGroup', backref='cost_group', lazy=True)

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

    def to_json(self):
        json_group = {
            'url': url_for('api.get_group', id=self.id, _external=True),
            'name': self.name,
            'costs': url_for('api.group_costs', id=self.id, _external=True),
            'debt_table': url_for('api.debt_table', id=self.id, _external=True)
        }
        return json_group

    @staticmethod
    def from_json(group_json):
        try:
            name = group_json.get('name')
            if name is None:
                return None
            return Groups(name)
        except AttributeError:
            return None
Example #23
0
class Recipe(db.Model):
    __tablename__ = 'recipes'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(16), unique=True, nullable=False)
    default = db.Column(
        db.Boolean
    )  # initialize this to 1 if you're adding a default meal to the database, custom meals will be 0

    ingredients = db.relationship('Ingredient', secondary=ing_rec_assc)

    def cumulative_neg_attributes(self):
        """
        Total number of negative attributes across all ingredients
        """
        count = 0
        for ing in self.ingredients:
            for att in ing.attributes:
                if not att:
                    count += 1
        return count

    def cumulative_pos_attributes(self):
        """
        Total number of negative attributes across all ingredients
        """
        count = 0
        for ing in self.ingredients:
            for att in ing.attributes:
                if att:
                    count += 1
        return count
Example #24
0
class Track(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(32))
    desc = db.Column(Text())
    blocks = relationship("Block",
                          secondary=track_block_rel,
                          back_populates="tracks")
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(140))
    timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __repr__(self):
        return "<Post {}>".format(self.body)
Example #26
0
class Announcement(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    annouce = db.Column(db.String(50))
    image = db.Column(db.String(50), default="default.jpg")
    content = db.Column(db.Text, nullable=False)

    @classmethod
    def find_by_id(cls, id: int):
        return cls.query.filter_by(id=id).first()

    def save_to_database(self) -> None:
        db.session.add(self)
        db.session.commit()

    def remove_from_database(self) -> None:
        db.session.delete(self)
        db.session.commit()
Example #27
0
class Gallery(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    tag = db.Column(db.String(50), nullable=False)
    image = db.Column(db.String(50), default="default.jpg")
    org_img = db.Column(db.String(50), default="default.jpg")
    date = db.Column(db.DateTime, default=datetime.utcnow)

    @classmethod
    def find_by_id(cls, id: int):
        return cls.query.filter_by(id=id).first()

    def save_to_database(self) -> None:
        db.session.add(self)
        db.session.commit()

    def remove_from_database(self) -> None:
        db.session.delete(self)
        db.session.commit()
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    social_id = db.Column(db.String(64), nullable=True, unique=True)
    email = db.Column(db.String(255), unique=True, nullable=False)
    password = db.Column(db.String(255), nullable=True)
    registration_date = db.Column(db.DateTime,
                                  nullable=False,
                                  default=datetime.now())
    admin = db.Column(db.Boolean, nullable=False, default=False)

    def __int__(self, email, password, admin=False):
        self.email = email
        self.password = bcrypt.generate_password_hash(
            password, app.config["BCRYPT_ROUND"]).decode()
        self.admin = admin

    @staticmethod
    def encode_auth_token(user_id):
        try:
            payload = {
                'exp': datetime.now() + timedelta(days=1),
                'iat': datetime.now(),
                'sub': user_id
            }
            return jwt.encode(payload=payload,
                              key=Config.SECRET_KEY,
                              algorithm='HS256')
        except Exception as error:
            return error

    @staticmethod
    def decode_auth_token(auth_token):
        try:
            payload = jwt.decode(auth_token, Config.SECRET_KEY)
            is_deprecated = DeprecatedToken.check_deprecated(auth_token)
            if is_deprecated:
                return 'Token deprecated. Please log in again.'
            else:
                return payload['sub']
        except jwt.ExpiredSignatureError:
            return 'Signature expired. Please login again'
        except jwt.InvalidTokenError:
            return 'Invalid token. Please log in again.'
Example #29
0
class Team(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(32))
    students = relationship("User",
                            secondary=team_student_rel,
                            back_populates="student_teams")

    mentors = relationship("User",
                           secondary=team_mentor_rel,
                           back_populates="mentor_teams")
Example #30
0
class Service(db.Model):
    __tablename__ = 'services'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), index=True, unique=True)
    base_url = db.Column(db.String(64), index=True, unique=True)
    description = db.Column(db.String(256))
    internal = db.Column(db.Boolean, default=True, nullable=False)

    @property
    def help_url(self):
        return self.base_url + "/help"

    @property
    def demo_url(self):
        return self.base_url + "/demo"

    @property
    def get_params_url(self):
        return self.base_url + "/params"