Exemple #1
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    user_profile_id = db.Column(
        db.Integer(), db.ForeignKey('user_profile.id', ondelete='CASCADE'))

    # User authentication information
    username = db.Column(db.String(50), nullable=False, unique=True)
    password = db.Column(db.String(255), nullable=False, server_default='')
    reset_password_token = db.Column(db.String(100),
                                     nullable=False,
                                     server_default='')
    is_active = db.Column('is_active',
                          db.Boolean(),
                          nullable=False,
                          server_default='0')

    # User email information
    email = db.Column(db.String(255), nullable=False, unique=True)
    confirmed_at = db.Column(db.DateTime())

    # Relationships
    user_profile = db.relationship('UserProfile',
                                   uselist=False,
                                   foreign_keys=[user_profile_id])

    def __repr__(self):
        return '<id: {}, user_profile_id: {}, username: {}, is_active: {}, email: {}' \
            .format(self.id, self.user_profile_id, self.username, self.is_active, self.email)
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(255), unique=True)
    name = db.Column(db.String(255), nullable=False)
    phone_number = db.Column(db.String(255))
    photo = db.Column(db.String(255))
    about = db.Column(db.String(1000))
    why = db.Column(db.String(1000))
    password = db.Column(db.String(255))
    active = db.Column(db.Boolean(), default=False)
    approved = db.Column(db.Boolean(), default=False)
    confirmed_at = db.Column(db.DateTime())
    roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic'))
    registered_at = db.Column(db.DateTime, default=datetime.now)

    @property
    def is_logged_in(self):
        return False if self.is_anonymous() else True

    @property
    def is_admin(self):
        return self.roles and self.roles[0].name == 'admin'

    def __repr__(self):
        return self.name

    @property
    def admin_url(self):
        return "%s/%s/%s" % (app.config['ADMIN_URL'], 'user', self.id)

    @property
    def url(self):
        return "%s/%s/" % ('profiles', self.name)
Exemple #3
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    input = db.Column(db.String(200), nullable=False)
    date_posted = db.Column(db.DateTime(),
                            nullable=False,
                            default=datetime.utcnow())
    generated = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
Exemple #4
0
class Event(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(1000))
    type = db.Column(db.String(10))
    # date = db.Column(db.DateTime(100)) # might be DateTime.date or DateTime.datetime
    location = db.Column(db.String(100))
    creator = db.Column(db.String(1000))
    # time = db.Column(db.Integer(100)) # maybe improve using date time later
    description = db.Column(db.String())
    datetime = db.Column(db.DateTime())
Exemple #5
0
class User(UserMixin, db.Model):
    __bind_key__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    date_created = db.Column(db.DateTime, default=db.func.current_timestamp())
    date_modified = db.Column(db.DateTime,
                              default=db.func.current_timestamp(),
                              onupdate=db.func.current_timestamp())

    email = db.Column(db.String(255))
    username = db.Column(db.String(80), unique=True)
    password = db.Column(db.String(100))

    fname = db.Column(db.String(50))
    lname = db.Column(db.String(50))
    interests = db.Column(db.String(500))
    education = db.Column(db.String(100))

    user_since = db.Column(db.DateTime(), default=db.func.current_timestamp())
    verified = db.Column(db.Boolean(), default=False)

    def set_password(self, password):
        self.password = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password, password)

    def is_verified(self):
        return self.verified

    def get_name(self):
        return self.username

    def get_email(self):
        return self.email

    def get_education(self):
        return self.education

    def get_date_created(self):
        return self.date_created

    def get_date_modified(self):
        return self.date_modified

    def get_interests(self):
        return self.interests

    def get_interests_list(self):
        return self.interests.split(",")
class Note(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    data = db.Column(db.String(10000))
    date = db.Column(db.DateTime(timezone=True), default=func.now())
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
Exemple #7
0
class User(UserMixin,db.Model):
    __tablename__='users'
    id=db.Column(db.Integer,primary_key=True)
    email=db.Column(db.String(64),unique=True,index=True)
    username=db.Column(db.String(64),unique=True,index=True)
    password_hash=db.Column(db.String(128))
    #建立关系表
    role_id=db.Column(db.Integer,db.ForeignKey('roles.id'))
    confirmed=db.Column(db.Boolean,default=False)
    #跟goal建立关联
    goals=db.relationship('Goal',backref='user',lazy='dynamic')
    #用户信息字段 
    name=db.Column(db.String(64))
    location=db.Column(db.String(64))
    about_me=db.Column(db.Text())
    member_since=db.Column(db.Datetime(),default=datetime.utcnow)
    last_seen=db.Column(db.DateTime(),default=datetime.utcnow())
    #增加用户头像数据
    avatar_hash=db.Column(db.String(32))

    def __repr__(self):
        return '<User %r>'%self.username
    def __init__(self,**kwargs):
        super(User,self).__init__(**kwargs)
        #初始化使用缓存的MD5散列值生成Gravatar URL
        if self.email is not None and self.avatar_hash is None:
            self.avatar_hash=hashlib.md5(self.email.encode('utf-8')).hexdigest()
    
    @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)
    def generate_confirmation_token(self,expiration=3600):
        s=Serializer(current_app.config['SECRET_KEY'],expiration)
        return s.dumps({'confirm':self.id})
    def confirm(self,token):
        s=Serializer(current_app.config['SECRET_KEY'])
        try:
            data=s.loads(token)
        except:
            return False
        if data.get('confirm')!=self.id:
            return False
        self.confirmed=True
        db.session.add(self)
        return True
    #刷新用户的最后访问时间
    def ping(self):
        self.last_seen=datetime.utcnow()
        db.session.add(self)
        
    #定义默认的用户角色
    if self.role is None:
        if self.email==current_app.config['FLASKY_ADMIN']:
            self.role=Role.query.filter_by(permissions=0xff).first()
        if self.role is None:
            self.role=Role.query.filter_by(default=True).first()
    #检查用户是否有指定权限
    def can(self,permissions):
        return self.role is not None and\
               (self.role.permission & permissions)==permissions
    def is_administrator(self):
        return self.can(Permission.ADMINISTER)
    #生成用户头像
    def gravatar(self,size=100,default='identicon',rating='g'):
        if request.is_secure:
            url='http://secure.gravatar.com/avatar'
        else:
            url='http://www.gravatar.com/avatar'
        hash=hashlib.md5(self.email.encode('utf-8')).hexdigest()
        return '{url}/{hash}?s={size}&d={default}&r={rating}'.format(
            url=url,hash=hash,size=size,default=default,rating=rating)
    def change_email(self,token):
        self.email=new_email
        self.avatar_hash=hashlib.md5(self.email.encode('utf-8')).hexdigest()
        db.session.add(self)
        return True
    def gravatar(self,size=100,default='identicon',rating='g'):
        if request.is_secure:
            url='http://secure.gravatar.com/avatar'
        else:
            url='http://www.gravatar.com/avatar'
        hash=self.avatar_hash or hashlib.md5(self.email.encode('utf-8')).hexdigest()
        return '{url}/{hash}?s={size}&d={default}&r={rating}'.format(url=url,hash=hash,size=size,default=default,rating=rating)
Exemple #8
0
class Payment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    currency = db.Column(db.String(3))
    payment_amount = db.Column(db.Integer)
    date = db.Column(db.DateTime(timezone=True), default=func.now())
    note = db.Column(db.String)