Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- followers = db.Table('followers',
- db.Column('follower_id', db.Integer, db.ForeignKey('user.id')),
- db.Column('followed_id', db.Integer, db.ForeignKey('user.id'))
- )
- likes = db.Table('likes',
- db.Column('userlikes', db.Integer, db.ForeignKey('user.id')),
- db.Column('artistliked', db.Integer, db.ForeignKey('artist.id'))
- )
- class User(db.Model):
- __searchable__ = ['nickname']
- id = db.Column(db.Integer, primary_key = True)
- nickname = db.Column(db.String(64), unique = True)
- lower = db.Column(db.String())
- email = db.Column(db.String(120), index = True, unique = True)
- role = db.Column(db.SmallInteger, default = ROLE_USER)
- posts = db.relationship('Post', backref = 'author', lazy = 'dynamic')
- about_me = db.Column(db.String(140))
- last_seen = db.Column(db.DateTime)
- 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')
- liked = db.relationship('Artist',
- secondary = likes,
- primaryjoin = (likes.c.userlikes == id),
- secondaryjoin = (likes.c.artistliked == id),
- backref = db.backref('likes', lazy = 'dynamic'),
- lazy = 'dynamic')
- def follow(self, user):
- if not self.is_following(user):
- self.followed.append(user)
- return self
- def like(self, artist):
- if not self.is_liking(artist):
- self.liked.append(artist)
- return self
- def unfollow(self, user):
- if self.is_following(user):
- self.followed.remove(user)
- return self
- def unlike(self, artist):
- if self.is_liking(artist):
- self.liked.remove(artist)
- return self
- def is_following(self, user):
- return self.followed.filter(followers.c.followed_id == user.id).count() > 0
- def is_liking(self, artist):
- return self.liked.filter(likes.c.artistliked == artist.id).count() > 0
- def followed_posts(self):
- return Post.query.join(followers, (followers.c.followed_id == Post.user_id)).filter(followers.c.follower_id == self.id).order_by(Post.timestamp.desc())
- def __repr__(self):
- return '<User %r>' % (self.nickname)
- class Artist(db.Model):
- id = db.Column(db.Integer, primary_key = True)
- name = db.Column(db.String(40))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement