Esempio n. 1
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), nullable=False, default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)

    def __repr__(self):
        return str(self.id) + str(self.username) + str(self.email) + str(
            self.password)
Esempio n. 2
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    twitter_handler = db.Column(db.String(50), unique=True, nullable=False)
    email = db.Column(db.String(100), unique=True, nullable=False)
    password = db.Column(db.String(70), nullable=False)
    access_token = db.Column(db.String(100), unique=True, nullable=True)
    access_token_secret = db.Column(db.String(100), unique=True, nullable=True)
    friends = db.relationship('FriendsHandler', lazy=True)

    def __repr__(self):
        return f"User('{self.username}', '{self.email})"
Esempio n. 3
0
class User(UserMixin, db.Model):
    """ User Database"""
    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))
    posts = db.relationship('Post', backref='author', 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)
Esempio n. 4
0
class Travel(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.Text, nullable=False)
    date_posted = db.Column(db.DateTime,
                            nullable=False,
                            default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    start_date = db.Column(db.DateTime, nullable=False)
    end_date = db.Column(db.DateTime, nullable=False)
    country = db.Column(db.Text, nullable=False)
    city = db.Column(db.Text, nullable=False)
    latitude = db.Column(db.Integer, nullable=False)
    longitude = db.Column(db.Integer, nullable=False)
    content = db.Column(db.Text, nullable=False)
    subscribers = db.relationship('Subscriptions',
                                  backref='subscribers',
                                  lazy='dynamic',
                                  cascade='all, delete-orphan')

    def __repr__(self):
        return f"Travel('{self.date_posted}')"
Esempio n. 5
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    first_name = db.Column(db.String(20))
    last_name = db.Column(db.String(20))
    gender = db.Column(db.String(20), nullable=False)
    birth_date = db.Column(db.Date())
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    image_file = db.Column(db.String(20),
                           nullable=False,
                           default='default.jpg')
    travels = db.relationship('Travel', backref='traveler', lazy='dynamic')
    followed = db.relationship('Follow',
                               foreign_keys=[Follow.follower_id],
                               backref=db.backref('follower', lazy='joined'),
                               lazy='dynamic',
                               cascade='all, delete-orphan')
    followers = db.relationship('Follow',
                                foreign_keys=[Follow.followed_id],
                                backref=db.backref('followed', lazy='joined'),
                                lazy='dynamic',
                                cascade='all, delete-orphan')
    subcribed_posts = db.relationship('Subscriptions',
                                      backref='subcribed_posts',
                                      lazy='dynamic',
                                      cascade='all, delete-orphan')
    notifications = db.relationship('Notifications',
                                    backref='notifications',
                                    lazy='dynamic',
                                    cascade='all, delete-orphan')

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"

    def follow(self, user):
        if not self.is_following(user):
            f = Follow(follower=self, followed=user)
            db.session.add(f)

    def unfollow(self, user):
        f = self.followed.filter_by(followed_id=user.id).first()
        if f:
            db.session.delete(f)

    def is_following(self, user):
        if user.id is None:
            return False

        return self.followed.filter_by(followed_id=user.id).first() is not None

    def is_followed_by(self, user):
        if user.id is None:
            return False
        return self.followers.filter_by(
            follower_id=user.id).first() is not None

    def is_subscribed(self, post):
        if post.id is None:
            return False
        return self.subcribed_posts.filter_by(
            post_id=post.id).first() is not None

    def subscribe(self, post):
        if not self.is_subscribed(post):
            f = Subscriptions(user_id=self.id, post_id=post.id)
            db.session.add(f)

    def unsubscribe(self, post):
        found_post = self.subcribed_posts.filter_by(post_id=post.id).first()
        if found_post:
            db.session.delete(found_post)

    '''
    def show_notification(self, notification):
        found_notification = self.notifications.filter_by(
            notification_id = notification.notification_id).first()
        if found_notification.showed:
            Notifications.update().where(
                notification_id == found_notification.notification_id).values(showed=True)
    '''

    def delete_notification(self, notification):
        found_notification = self.notifications.filter_by(
            notification_id=notification.notification_id).first()
        if found_notification:
            db.session.delete(found_notification)
Esempio n. 6
0
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(120), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    posts = db.relationship('Post', backref='author',
                            lazy='dynamic')  #dont think i use
    about_me = db.Column(db.String(140))
    last_seen = db.Column(db.DateTime, default=datetime.utcnow)
    name = db.Column(db.String(64), default='New User')
    height = db.Column(db.Float(64), default=0)
    starting_weight = db.Column(db.Float(64), default=0)
    current_weight = db.Column(db.Float(64), default=0)
    goal_weight = db.Column(db.Float(64), default=0)
    starting_bf_percentage = db.Column(db.Float(64), default=0)
    current_bf_percentage = db.Column(db.Float(64), default=0)
    goal_bf_percentage = db.Column(db.Float(64), default=0)
    total_weight_lost = db.Column(db.Float(64), default=0)
    total_weight_gained = db.Column(db.Float(64), default=0)
    starting_fat_pounds = db.Column(db.Float(64), default=0)
    current_fat_pounds = db.Column(db.Float(64), default=0)
    goal_fat_pounds = db.Column(db.Float(64), default=0)
    fat_lost = db.Column(db.Float(64), default=0)
    starting_lean_bodymass = db.Column(db.Float(64), default=0)
    current_lean_bodymass = db.Column(db.Float(64), default=0)
    goal_lean_bodymass = db.Column(db.Float(64), default=0)
    bmi = db.Column(db.Float(64), default=0)
    nonfat_lost = db.Column(db.Float(64), default=0)
    goal_fat_loss = db.Column(db.Float(64), default=0)
    goal_weight_auto = db.Column(db.Float(64), default=0)
    goal_fat_loss_auto = db.Column(db.Float(64), default=0)
    goal_muscle_gain = db.Column(db.Float(64), default=0)

    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 get_reset_password_token(self, expires_in=600):
        return jwt.encode(
            {
                'reset_password': self.id,
                'exp': time() + expires_in
            },
            app.config['SECRET_KEY'],
            algorithm='HS256').decode('utf-8')

    @staticmethod
    def verify_reset_password_token(token):
        try:
            id = jwt.decode(token,
                            app.config['SECRET_KEY'],
                            algorithms=['HS256'])['reset_password']
        except:
            return
        return User.query.get(id)