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
Esempio n. 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
Esempio n. 3
0
class WhoOwesWhom(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    who = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    whom = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    group_id = db.Column(db.Integer,
                         db.ForeignKey('groups.id'),
                         nullable=False)
    debt_amount = db.Column(db.Integer)

    def __init__(self, who, whom, group_id):
        self.who = who
        self.whom = whom
        self.group_id = group_id
        self.debt_amount = 0

    @property
    def get_amount(self):
        return self.debt_amount

    def plus_amount(self, amount):

        self.debt_amount += amount

    def to_json(self):
        json_wow = {
            'who': url_for('api.get_user', id=self.who, _external=True),
            'whom': url_for('api.get_user', id=self.whom, _external=True),
            'group': url_for('api.get_group', id=self.group_id,
                             _external=True),
            'debt_amount': self.debt_amount
        }
        return json_wow
Esempio n. 4
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)
Esempio n. 5
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
Esempio n. 6
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)
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}')"
Esempio n. 8
0
class CostGroup(db.Model):

    __tablename__ = 'cost_groups'

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    group_id = db.Column(db.Integer,
                         db.ForeignKey('groups.id'),
                         nullable=False)
    group_member = db.relationship('User', backref='group', lazy=True)

    def __init__(self, user_id, group_id):
        self.user_id = user_id
        self.group_id = group_id

    def to_json(self):
        json_memberships = {'user_id': self.user_id, 'group_id': self.group_id}
        return json_memberships

    @staticmethod
    def from_json(memberships_json):
        try:
            user_id = memberships_json.get('user_id')
            group_id = memberships_json.get('group_id')
            if user_id is None or group_id is None:
                return None
            return CostGroup(user_id, group_id)
        except AttributeError:
            return None
Esempio n. 9
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",
    )
Esempio n. 10
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
Esempio n. 11
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")
Esempio n. 12
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
Esempio n. 13
0
class Association(db.Model, CRUDMixin):
    employee = db.Column(db.Integer,
                         db.ForeignKey('archive_employees.id',
                                       ondelete='cascade'),
                         primary_key=True)
    rating = db.Column(db.Integer,
                       db.ForeignKey('ratings.id', ondelete='cascade'),
                       primary_key=True)
Esempio n. 14
0
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)
Esempio n. 15
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)
Esempio n. 16
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}')"
Esempio n. 17
0
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)
Esempio n. 18
0
class UserRoles(db.Model):
    __tablename__ = "user_roles"
    id = db.Column(db.Integer(), primary_key=True)
    # Define foreign keys with Users and Role tables
    user_id = db.Column(db.Integer(),
                        db.ForeignKey("users.id", ondelete="CASCADE"))
    role_id = db.Column(db.Integer(),
                        db.ForeignKey("roles.id", ondelete="CASCADE"))
Esempio n. 19
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")
class Client(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), index=True)
    request = db.relationship('Request', backref='client', lazy='dynamic')

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

    def __repr__(self):
        return f"<Client(name='{self.name}')>"
Esempio n. 21
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)
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)
Esempio n. 23
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)
Esempio n. 24
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}')"
        )
Esempio n. 25
0
class Texts(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    from_username = db.Column(db.String, nullable=False)
    to_username = db.Column(db.String, nullable=False)
    text = db.Column(db.String, nullable=False)
    time = db.Column(db.DateTime, nullable=False, default=datetime.now)

    def __init__(self, from_username, to_username, text):
        self.from_username = from_username
        self.to_username = to_username
        self.text = text
Esempio n. 26
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    date_posted = db.Column(db.DateTime,
                            nullable=False,
                            default=datetime.utcnow)
    content = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return "Post('%s','%s')" % (self.title, self.date_posted)
Esempio n. 27
0
class Contest(db.Model):
    LANGS = [
        (u'python', u'Python'),
    ]
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(32))
    desc = db.Column(Text())
    unit_test = db.Column(Text())
    lang = db.Column(ChoiceType(LANGS))
    blocks = relationship("Block",
                          secondary=contest_block_rel,
                          back_populates="contests")
Esempio n. 28
0
class Food_Group(db.Model):
    """
    Class which accesses the DB table for food groups
    """
    __tablename__ = 'food_groups'
    fg_id = db.Column(db.Integer, primary_key=True)                     # Unique ID, autoincrement, primary key
    fg_name = db.Column(db.String(12), unique=True, nullable=False)     # Name of the food group, must be unique (there should only ever be 5)

    ingredients = db.relationship('Ingredient', backref='fg')           # Notate DB relationship b/w ingredients and food group

    def __repr__(self):
        return self.fg_name                         # What is printed when the class is queried (required)
Esempio n. 29
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()
Esempio n. 30
0
class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    default = db.Column(db.Boolean, default=False, index=True)
    permissions = db.Column(db.Integer)
    users = db.relationship('User', backref='role', lazy='dynamic')

    def __init__(self, **kwargs):
        super(Role, self).__init__(**kwargs)
        if self.permissions is None:
            self.permissions = 0

    @staticmethod
    def insert_roles():
        roles = {
            'User': [Permission.COST, Permission.WRITE],
            'Moderator':
            [Permission.COST, Permission.WRITE, Permission.MODERATE],
            'Administrator': [
                Permission.COST, Permission.WRITE, Permission.MODERATE,
                Permission.ADMIN
            ],
        }
        default_role = 'User'
        for r in roles:
            role = Role.query.filter_by(name=r).first()
            if role is None:
                role = Role(name=r)
            role.reset_permissions()
            for perm in roles[r]:
                role.add_permission(perm)
            role.default = (role.name == default_role)
            db.session.add(role)
        db.session.commit()

    def add_permission(self, perm):
        if not self.has_permission(perm):
            self.permissions += perm

    def remove_permission(self, perm):
        if self.has_permission(perm):
            self.permissions -= perm

    def reset_permissions(self):
        self.permissions = 0

    def has_permission(self, perm):
        return self.permissions & perm == perm

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