def show_pins_before(pin_id): if g.user_id: time_tag = Pin.objects(id=pin_id).first().create_at user = User.objects(id=g.user_id).first() pins = Pin.objects(Q(create_at__lt=time_tag)&Q(owner=g.user_id))[:5].order_by('-create_at') res_data = pins_pack(pins, user) return (json.dumps(res_data), 200) return ('show_pins_before session timeout', 400)
def comment_pin(pin_id): if g.user_id: content = request.form['content'] user = User.objects(id=g.user_id).first() pin = Pin.objects(id=pin_id).first() comment = Comment(content=content, author=user, pin=pin, create_at=datetime.utcnow()) comment.save() if pin.comments_count == 0: pin.first_comment = content pin.first_comment_user = user pin.first_comment_create_at = datetime.utcnow() pin.save() elif pin.comments_count >= 1: pin.last_comment = content pin.last_comment_user = user pin.last_comment_create_at = datetime.utcnow() pin.save() pin.update(inc__comments_count=1) comment_item = {} comment_item['comment_id'] = str(comment.id) comment_item['content'] = comment.content comment_item['author_id'] = str(comment.author.id) comment_item['author_name'] = comment.author.nickname comment_item['avatar'] = comment.author.avatar comment_item['create_at'] = comment.create_at.strftime('%Y-%m-%d %H:%M:%S') return (json.dumps(comment_item), 200) return ('comment pin session timeout', 400)
def show_pins(): if g.user_id: user = User.objects(id=g.user_id).first() pins = Pin.objects(owner=g.user_id)[:5].order_by('-create_at') res_data = pins_pack(pins, user) return (json.dumps(res_data), 200) return ('show_pins session timeout', 400)
def unlike_pin(pin_id): if g.user_id: user = User.objects(id=g.user_id).first() pin = Pin.objects(id=pin_id).first() if user in pin.likes: pin.update(pull__likes=user, inc__likes_count=-1) return ('unlike success', 200) return ('not like this pin', 400) return ('unlike pin session timeout', 400)
def like_pin(pin_id): if g.user_id: user = User.objects(id=g.user_id).first() pin = Pin.objects(id=pin_id, likes__nin=[user]).first() if pin: pin.update(push__likes=user, inc__likes_count=1) return ('like success', 200) return ('already liked', 400) return ('like pin session timeout', 400)
def pin_detail(pin_id): if g.user_id: pin = Pin.objects(id=pin_id).first() user = User.objects(id=g.user_id).first() isliked = 1 if user in pin.likes else 0 pin_item = {} pin_item['pin_id'] = str(pin.id) pin_item['type'] = pin.type pin_item['content'] = pin.content pin_item['pic'] = pin.pic pin_item['avatar'] = pin.avatar pin_item['price'] = pin.price pin_item['currency'] = pin.currency pin_item['stamp'] = pin.stamp pin_item['comments_count'] = pin.comments_count pin_item['isliked'] = 1 if user in pin.likes else 0 if pin.comments_count == 0: pin_item['comments'] = [] elif pin.comments_count == 1: first_comment = { 'content':pin.first_comment, 'author_id':str(pin.first_comment_user.id), 'nickname':pin.first_comment_user.nickname, 'avatar':pin.first_comment_user.avatar, 'create_at':pin.first_comment_create_at.strftime('%Y-%m-%d %H:%M:%S'), } pin_item['comments'] = [first_comment] elif pin.comments_count >= 2: first_comment = { 'content':pin.first_comment, 'author_id':str(pin.first_comment_user.id), 'nickname':pin.first_comment_user.nickname, 'avatar':pin.first_comment_user.avatar, 'create_at':pin.first_comment_create_at.strftime('%Y-%m-%d %H:%M:%S'), } last_comment = { 'content':pin.last_comment, 'author_id':str(pin.last_comment_user.id), 'nickname':pin.last_comment_user.nickname, 'avatar':pin.last_comment_user.avatar, 'create_at':pin.last_comment_create_at.strftime('%Y-%m-%d %H:%M:%S'), } pin_item['comments'] = [first_comment, last_comment] pin_item['likes_count'] = pin.likes_count pin_item['create_at'] = pin.create_at.strftime('%Y-%m-%d %H:%M:%S') return (json.dumps(pin_item), 200) return ('pin detail timeout', 400)
def fav_pin(pin_id): if g.user_id: already_fav = Fav.objects(owner=g.user_id, pin=pin_id).first() if not already_fav: pin = Pin.objects(id=pin_id).first() user = User.objects(id=g.user_id).first() fav = Fav(owner=user, pin=pin, create_at=datetime.utcnow()) fav.save() return ('fav success', 200) return ('already fav', 400) return ('fav pin session timeout', 400)
def admin_del_user(user_id): if g.admin: user = User.objects(id=user_id).first() user.delete() pins = Pin.objects(owner=user_id) for pin in pins: pin.delete() timelines = Timeline.objects(owner=user_id) for timeline in timelines: timeline.delete() return redirect(url_for('admin.admin_user')) return redirect(url_for('admin.admin_login'))
def del_pin(pin_id): if g.user_id: if len(pin_id) == 24: pin = Pin.objects(id=pin_id).first() if pin: pin.delete() # delete pin from timeline timelines = Timeline.objects(pin=pin_id) for timeline in timelines: timeline.delete() return ('delete success', 200) return ('no this pin', 400) return ('need pin_id', 400) return ('del pin session timeout', 400)
def pin_likes(pin_id, page_num): if g.user_id: limit = 5 offset = (page_num - 1) * limit pin = Pin.objects(id=pin_id).fields(slice__likes=[offset, limit]).first() user = User.objects(id=g.user_id).first() like_list = [] for like in pin.likes: like_item = {} like_item['isfollowed'] = 1 if user in like.fans else 0 like_item['user_id'] = str(like.id) like_item['avatar'] = like.avatar like_item['nickname'] = like.nickname like_list.append(like_item) res_data = { 'total':len(like_list), 'items':like_list, } return (json.dumps(res_data), 200) return ('likes list session timeout', 400)