def follow(username): user = MongoClient().blog.User.find_one({'username': username}) if user is None: flash('此用户不存在.') return redirect(url_for('.index')) very = False temp = MongoClient().blog.User.find_one({ 'username': current_user.username }).get('following') for i in range(temp.__len__()): if temp[i][0] == username: very = True break if very: flash('您已经关注过了他,不能重复关注.') return redirect(url_for('.user', username=username)) followers = user.get('followers') time = datetime.utcnow() follow = [current_user.username, time] followers.append(follow) MongoClient().blog.User.update({'username': username}, {'$set': { 'followers': followers }}) post2 = MongoClient().blog.User.find_one( {'username': current_user.username}) following = post2.get('following') follow = [user.get('username'), time] following.append(follow) MongoClient().blog.User.update({'username': current_user.username}, {'$set': { 'following': following }}) flash('您成功关注了 %s.' % username) return redirect(url_for('.user', username=username))
def __init__(self, page, id): posts = MongoClient().blog.Aritical.find_one({ '_id': ObjectId(id) }).get('comments') self.total = posts.__len__() self.pages = int(self.total / 20) if self.total % 20 != 0: self.pages += 1 if page == -1: self.page = self.pages else: self.page = page if self.page == 1: self.has_prev = False else: self.has_prev = True if self.page == self.pages: self.has_next = False else: self.has_next = True self.next_num = self.page + 1 self.per_page = 20 self.prev_num = self.page - 1 self.current_num = self.total - (20 * (self.page - 1)) if self.current_num > 20: self.current_num = 20 self.items = [] for i in range(self.current_num): self.items.append({ 'body': posts[self.prev_num * 20 + i][0], 'username': posts[self.prev_num * 20 + i][1], 'timestamp': posts[self.prev_num * 20 + i][2] }) self.items.reverse()
def __init__(self, page, username): posts = MongoClient().blog.User.find_one({ 'username': username }).get('following') self.total = posts.__len__() self.pages = int(self.total / 20) if self.total % 20 != 0: self.pages += 1 if page == 1: self.has_prev = False else: self.has_prev = True if page == self.pages: self.has_next = False else: self.has_next = True self.next_num = page + 1 self.page = page self.per_page = 20 self.prev_num = page - 1 self.current_num = self.total - (20 * (page - 1)) if self.current_num > 20: self.current_num = 20 self.item = [] for i in range(self.current_num): self.item.append({ 'username': posts[self.prev_num * 20 + i][0], 'timestamp': posts[self.prev_num * 20 + i][1] })
def is_following(self, user): temp = MongoClient().blog.User.find_one({ 'username': self.username }).get('following') for i in range(temp.__len__()): if temp[i][0] == user.username: return True return False
def __init__(self, page, show_follow): if show_follow == 0: posts = MongoClient().blog.Aritical.find().sort( 'issuing_time', DESCENDING) self.total = posts.count() self.posts = posts if show_follow == 1: self.posts = [] following = MongoClient().blog.User.find_one({ 'username': current_user.username }).get('following') artical = MongoClient().blog.Aritical.find().sort( 'issuing_time', DESCENDING) # following.append([current_user.username, 'date']) for i in range(following.__len__()): for x in range(artical.count()): if following[i][0] == artical[x].get('username'): self.posts.append(artical[x]) self.posts.sort(key=lambda x: x.get('issuing_time'), reverse=True) self.total = self.posts.__len__() self.pages = int(self.total / 20) if self.total % 20 != 0: self.pages += 1 if page == 1: self.has_prev = False else: self.has_prev = True if page == self.pages: self.has_next = False else: self.has_next = True self.next_num = page + 1 self.page = page self.per_page = 20 self.prev_num = page - 1 self.current_num = self.total - (20 * (page - 1)) if self.current_num > 20: self.current_num = 20 self.item = [] for i in range(self.current_num): self.item.append(self.posts[self.prev_num * 20 + i])
def unfollow(username): user = MongoClient().blog.User.find_one({'username': username}) if user is None: flash('此用户不存在.') return redirect(url_for('.index')) very = False temp = MongoClient().blog.User.find_one({ 'username': current_user.username }).get('following') for i in range(temp.__len__()): if temp[i][0] == username: very = True break if not very: flash('您没有关注这个用户.') return redirect(url_for('.user', username=username)) followers = user.get('followers') for i in range(followers.__len__()): if followers[i][0] == current_user.username: followers.remove(followers[i]) break MongoClient().blog.User.update({'username': username}, {'$set': { 'followers': followers }}) post2 = MongoClient().blog.User.find_one( {'username': current_user.username}) following = post2.get('following') for i in range(following.__len__()): if following[i][0] == username: following.remove(following[i]) break MongoClient().blog.User.update({'username': current_user.username}, {'$set': { 'following': following }}) flash('您取消关注了 %s.' % username) return redirect(url_for('.user', username=username))