def get_feed_posts(): # gets all of the follow instance where the user matches the followed_by field users_followers = Follow.select().where( Follow.followed_by == current_user.id) # iterate over all of the users that follow the current user and get all # of their posts users_feed = [] for user in users_followers: posts = Post.select().where(Post.user == user.followed, Post.soft_delete == False) # converts each post to a dictionary, removes the password and adds it to # users_feed list for post in posts: post_dict = model_to_dict(post, backrefs=True, recurse=True) del post_dict['user']['password'] users_feed.append(post_dict) # sorts all of the post in the users feed by most recent users_feed_sorted = sorted(users_feed, key=itemgetter('timestamp'), reverse=True) return jsonify(data=users_feed_sorted, status={ 'code': 200, 'message': 'Successfully got the users feed' })
def is_requesting(self, user): from models.follow import Follow result = Follow.select().where(Follow.follower_id == self.id, Follow.followed_id == user.id, Follow.approved== False) if len(result) > 0: return True else: return False
def index(): # # if 'user_id' in session: # # return redirect(url_for('index')) if current_user.is_authenticated: user_followings = Follow.select().where(Follow.follower_user_id == current_user.id, Follow.approved_status == True) followings_id = list(follow.followed_user_id for follow in user_followings) user_followings_images = Image.select().where(Image.user_id << followings_id).order_by(Image.created_at.desc()) # breakpoint() return render_template('users/home.html', user_followings_images=user_followings_images) else: return render_template('users/home.html')
def followers(self): from models.follow import Follow # followers = ( # User.select() # .join(Follow, on=(User.id == Follow.follower_id)) # .where( # Follow.following == self.id, # Follow.is_approved==True # )) followers = Follow.select().where(Follow.following == self.id, Follow.is_approved == True) followers_list = [] for follower in followers: followers_list.append(follower) return followers_list
def following_list(username): user = User.get_or_none(username=username) arr = [] followings = Follow.select().where(Follow.follower_id == user.id) if current_user.is_authenticated: for following in followings: following_details = User.get_or_none(id=following.followed_id) if Follow.get_or_none(Follow.follower == current_user.id, Follow.followed == following_details.id): arr.append({"profile": following_details, "status": True}) else: arr.append({"profile": following_details, "status": False}) else: return render_template('users/login_status.html') return render_template('users/following.html', followings=arr)
def get_all_followers(): # gets all of the users followers followers = Follow.select().where(Follow.followed == current_user.id) # iterate over all of the users followers to # convert each follower instance to a dictionary # and remove the users passwords followers_list = [] for follower in followers: follow_dict = model_to_dict(follower, backrefs=True, recurse=True) Follow.remove_passwords(follow_dict) followers_list.append(follow_dict) return jsonify(data=followers_list, status={ 'code': 200, 'message': 'Successfully got all the followers' })
def get_all_following(): # gets all the users the current user is followng following = Follow.select().where(Follow.followed_by == current_user.id) # iterate all of the users following the current user, convert # each following instance to a dictionary and remove the users # password following_list = [] for follow in following: following_dict = model_to_dict(follow.followed) del following_dict['password'] following_list.append(following_dict) return jsonify( data=following_list, status={ 'code': 200, 'message': 'Successfully got all of the users the current user is following' })
def follower_list(username): user = User.get_or_none(username=username) arr = [] followers = Follow.select().where(Follow.followed_id == user.id) # if current_user.is_authenticated: # for follower in followers: # follower_details = User.get_or_none(id = follower.follower_id) # if Follow.get_or_none(Follow.follower == current_user.id, Follow.followed == follower_details.id): # arr.append({ # "profile": follower_details, # "status": True # }) # else: # arr.append({ # "profile": follower_details, # "status": False # }) # else: # return render_template('users/login_status.html') # return render_template('users/follower.html', followers = arr) followers = user.followers() if current_user.is_authenticated: for follower in followers: if Follow.get_or_none(Follow.follower == current_user.id, Follow.followed == follower.id): arr.append({"profile": follower, "status": True}) else: arr.append({"profile": follower, "status": False}) else: return render_template('users/login_status.html') return render_template('users/follower.html', followers=arr)
def show(username): user = User.get(name=username) if user.description == "None": user.description = "No Info" image_all = Image.select().where(Image.user_id == user.id) requested = Requested.select().join( User, on=(User.id == Requested.fan_id)).where(Requested.idol_id == user.id) followers = Follow.select().join( User, on=(User.id == Follow.fan_id)).where(Follow.idol_id == user.id) if not current_user.is_authenticated: return render_template("users/profile.html", user=user, image_all=image_all, requested=requested, followers=followers) if user.name != current_user.name: is_requested = Requested.get_or_none(fan_id=current_user.id, idol_id=user.id) is_follower = Follow.get_or_none(fan_id=current_user.id, idol_id=user.id) return render_template("users/profile.html", user=user, image_all=image_all, is_requested=is_requested, is_follower=is_follower, followers=followers) else: return render_template("users/profile.html", user=user, image_all=image_all, requested=requested, followers=followers)
def follower_requests(self): from models.follow import Follow followers = Follow.select(Follow.follower).where( Follow.following == self.id, Follow.is_approved == False) return User.select().where(User.id.in_(followers))
def get_followings(self): from models.follow import Follow followings = Follow.select(Follow.following).where( Follow.follower == self.id, Follow.is_approved == True) return User.select().where(User.id.in_(followings))
def requests(self): from models.follow import Follow req = Follow.select().where((Follow.idol_id == current_user.id) & (Follow.authorized == False)) return req