def delete(self, post_id): username = self.current_user f = yield gen.maybe_future(Favorite.get_by_user_post(username, post_id)) if f: yield gen.maybe_future(f.delete()) count = yield gen.maybe_future(Favorite.count_by_post(post_id)) # Update gold. update_gold.apply_async(("cancel_post_be_favorite", post_id)) raise gen.Return({"count": count}) else: raise exceptions.PostHasNotBeenFavorited()
def post(self, post_id): username = self.current_user f = yield gen.maybe_future(Favorite.get_by_user_post(username, post_id)) if f: raise exceptions.PostAlreadyFavorited() else: yield gen.maybe_future(Favorite.create(username, post_id)) count = yield gen.maybe_future(Favorite.count_by_post(post_id)) # Update gold. update_gold.apply_async(("post_be_favorite", post_id)) raise gen.Return({"count": count})
def add_favorite(): form = FavoriteForm() form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): fav = Favorite(user_id=form.user_id.data, listing_id=form.listing_id.data) db.session.add(fav) db.session.commit() return fav.to_dict() else: return {"errors": "invalid favorite submission"}
def fav_drink(id, drink_id): if request.method == 'POST': # Create, add, and return new favorite new_favorite = Favorite(user_id=id, drink_id=drink_id) db.session.add(new_favorite) db.session.commit() return {'new_favorite_id': new_favorite.to_dict()['drink_id']} if request.method == 'DELETE': # Find and remove targeted favorite favorite_to_delete = Favorite.query.filter( and_(Favorite.user_id == id, Favorite.drink_id == drink_id)).one() db.session.delete(favorite_to_delete) db.session.commit() return {}
def add_movie_to_favorite(user_id, movie_id): movie = Movie.query.get(movie_id) user = User.query.get(user_id) if movie is None or user is None: return create_response(400, "Invalid request") favorite = Favorite.query.filter_by( user_id=user_id, movie_id=movie.id).first() if favorite is None: f = Favorite(user_id=user_id, movie_id=movie.id) db.session.add(f) logger = Logger(user_id=user_id, action_type_id=8, movie_id=movie_id) logger.create_log() else: db.session.delete(favorite) logger = Logger(user_id=user_id, action_type_id=9, movie_id=movie_id) logger.create_log() db.session.commit() return create_response(200, "Success")
def test_favorite_follows(self): u1 = User.create(email='*****@*****.**', password='******') u2 = User.create(email='*****@*****.**', password='******') favor = Favorite.create(title='美术', user=u2) db.session.add_all([u1, u2, favor]) db.session.commit() self.assertFalse(u1.is_following_favorite(favor)) self.assertFalse(favor.is_followed_by(u1)) timestamp_before = datetime.datetime.utcnow() u1.follow(favor) db.session.add(u1) db.session.commit() timestamp_after = datetime.datetime.utcnow() self.assertTrue(u1.is_following_favorite(favor)) self.assertTrue(favor.is_followed_by(u1)) self.assertTrue(u1.followed_favorites.count() == 1) self.assertTrue(favor.followers.count() == 1) f = u1.followed_favorites.all()[0] self.assertTrue(f.followed == favor) self.assertTrue(timestamp_before <= f.timestamp <= timestamp_after) u1.unfollow(favor) db.session.add(u1) db.session.commit() self.assertFalse(u1.is_following_favorite(favor)) self.assertFalse(favor.is_followed_by(u1)) self.assertTrue(u1.followed_favorites.count() == 0) self.assertTrue(favor.followers.count() == 0) self.assertTrue(FollowFavorite.query.count() == 0)
def post(self): """收藏电影(需登录)""" mid = request.form.get('movieId', '') movie = Movie.query.get(mid) if movie is None: return {'message': '电影不存在'}, 233 movie = current_user.favorites.filter_by(movieId=mid).first() if movie is not None: return {'message': '不能重复收藏同部电影'}, 233 favorite = Favorite() favorite.id = UUID() favorite.username = current_user.id favorite.movieId = mid db.session.add(favorite) db.session.commit() return {'message': '收藏成功', 'id': favorite.id}, 200
def create_favorite(username): s = search() if s: return s user = User.query.filter_by(username=username).first() if current_user != user and not current_user.can(Permission.ADMINISTER): flash('没有权限') return redirect(url_for('.user', username=user.username)) form = FavoriteForm() if form.validate_on_submit(): Favorite.create(title=form.title.data, description=form.description.data, public=form.public.data, user=current_user._get_current_object()) flash('新建了{}收藏夹'.format(form.title.data), category='info') return redirect(url_for('.user', username=user.username)) return render_template('favorite/create_favorite.html', form=form) # 渲染表单
def post(self): request_data = request.get_json() favorites = self.schema.load(request_data, many=True).data db.session.query(Favorite).filter_by(user_id=g.user.id).delete() for f in favorites: db.session.add(Favorite(user_id=g.user.id, resource_id=f.resource_id)) db.session.commit() return self.get()
def favorite(id): favorited = Favorite.query.filter_by(listing_id=id, user_id=current_user.id).first() if not favorited: fav = Favorite(listing_id=id, user_id=current_user.id) db.session.add(fav) db.session.commit() flash('Added to favorites') else: flash('Already in your favorites') return redirect(url_for('listing', id=id))
def AddFavByCatID(): intCatID = request.form['intCatID'] strFavoriteTitle = request.form['strFavoriteTitle'] strDescription = request.form['strDescription'] intRanking = request.form['intRanking'] objCategory = Categories_Lookup.query.filter_by(id=intCatID).first() if not objCategory is None: objFavorite = Favorite.query.filter( Favorite.category_id == intCatID, Favorite.title == strFavoriteTitle).first() if objFavorite is None: objSameRankItem = Favorite.query.filter_by( category_id=intCatID, ranking=intRanking).first() if objSameRankItem: rankReorder(intCatID, intRanking) fav = Favorite(title=strFavoriteTitle, description=strDescription, ranking=intRanking, cteated_date=datetime.now(), modified_date=datetime.now(), Category=objCategory) db.session.add(fav) db.session.commit() response = success(fav.as_dict()) objLogs = Audit_Log( description="Add New Favorite (%s) for (%s) Category" % (strFavoriteTitle, objCategory.title), log_date=datetime.now()) db.session.add(objLogs) db.session.commit() else: response = failure("Favorite Name Must be Unique") else: response = failure("This Category is not exists") return jsonify(response)
def get(self, post_id): post = yield gen.maybe_future(Post.get(post_id)) if not post: raise HTTPError(404) author = yield gen.maybe_future(User.get(post.author_id)) favorites = yield gen.maybe_future(Favorite.count_by_post(post_id)) up_votes = yield gen.maybe_future(PostUpVote.count_by_post(post_id)) down_votes = yield gen.maybe_future(PostDownVote.count_by_post(post_id)) username = self.current_user favorited, up_voted, down_voted = False, False, False if username: up_voted = bool((yield gen.maybe_future( PostUpVote.get_by_user_post(username, post_id)))) down_voted = bool((yield gen.maybe_future( PostDownVote.get_by_user_post(username, post_id)))) favorited = bool((yield gen.maybe_future( Favorite.get_by_user_post(username, post_id)))) self.render( 'post.html', title=post.title, keywords=post.keywords, description=post.title, topic_id=post.topic_id, post_id=post_id, author=author.username, avatar=author.profile.avatar, date=post.created_date, content=post.content, up_votes=up_votes, down_votes=down_votes, favorites=favorites, favorited=int(favorited), up_voted=int(up_voted), down_voted=int(down_voted), keep_silent=post.keep_silent, )
def test_collect_question(self): q = Question.create(title='wdffd') f = Favorite.create(title='数学') self.assertListEqual(f.questions.all(), []) self.assertTrue(f.questions.count() == 0) self.assertTrue(q.favorites.count() == 0) f.collect(q) self.assertListEqual([i.question for i in f.questions.all()], [q]) self.assertTrue(f.questions.count() == 1) self.assertTrue(q.favorites.count() == 1) self.assertTrue(f.has_collect_question(q)) f.uncollect(q) self.assertTrue(f.questions.count() == 0) self.assertTrue(q.favorites.count() == 0) self.assertFalse(f.has_collect_question(q))
def test_collect_post(self): p = Post.create(title='haha') f = Favorite.create(title='数学') self.assertListEqual(f.posts.all(), []) self.assertTrue(f.posts.count() == 0) self.assertTrue(p.favorites.count() == 0) f.collect(p) self.assertListEqual([i.post for i in f.posts.all()], [p]) self.assertTrue(f.posts.count() == 1) self.assertTrue(p.favorites.count() == 1) self.assertTrue(f.has_collect_post(p)) f.uncollect(p) self.assertTrue(f.posts.count() == 0) self.assertTrue(p.favorites.count() == 0) self.assertFalse(f.has_collect_post(p))
def test_collect_answer(self): q = Question.create(title='dwwf') a = Answer.create(body='dwwdf', question=q) f = Favorite.create(title='数学') self.assertListEqual(f.answers.all(), []) self.assertTrue(f.answers.count() == 0) self.assertTrue(a.favorites.count() == 0) f.collect(a) self.assertListEqual([i.answer for i in f.answers.all()], [a]) self.assertTrue(f.answers.count() == 1) self.assertTrue(a.favorites.count() == 1) self.assertTrue(f.has_collect_answer(a)) f.uncollect(a) self.assertTrue(f.answers.count() == 0) self.assertTrue(a.favorites.count() == 0) self.assertFalse(f.has_collect_answer(a))
def favorite_vocab(vocab_id): is_vocab = Vocabulary.query.filter( Vocabulary.id == vocab_id).first_or_404() if is_vocab: is_fav = Favorite.query.filter( Favorite.vocabulary_id == vocab_id).all() if is_fav: text = '{} has been removed from favorites.' Favorite.query.filter(Favorite.vocabulary_id == vocab_id).delete() else: text = '{} has been added to favorites.' f = Favorite(vocabulary_id=vocab_id, favorite=True) db.session.add(f) db.session.commit() return text.format(vocab_id) else: return redirect(url_for('index'))
def load_user_favorites(self): with open(self.user_favorite_file, newline='') as csvfile: reader = csv.reader(csvfile, delimiter=csv.excel.delimiter, quotechar=csv.excel.quotechar) next(reader, None) # use headers to set availability for row in reader: for i in range(1, 7): if not row[i]: continue user_id = eval(row[0]) resource_id = eval(row[i]) user_favorite = Favorite(user_id=user_id, resource_id=resource_id) db.session.add(user_favorite) db.session.commit() print( "Favorites Loaded. There are now %i links between users and resources in the database." % db.session.query(Favorite).count())
def _post_info(post): info = post.to_dict() favorites = Favorite.count_by_post(post.id) up_votes = PostUpVote.count_by_post(post.id) down_votes = PostDownVote.count_by_post(post.id) latest_comment = Comment.latest_by_post(post.id) comment_count = Comment.count_by_post(post.id) if latest_comment: latest_comment_user = User.get(latest_comment.author_id).username latest_comment_date = latest_comment.date else: latest_comment_user = None latest_comment_date = None info.update({ 'up_votes': up_votes, 'down_votes': down_votes, 'favorites': favorites, 'latest_comment_user': latest_comment_user, 'latest_comment_date': latest_comment_date, 'comment_count': comment_count, }) return info
def add_favorite(self, user_id, corpora_ids): for corpus_id in corpora_ids: db.session.add(Favorite(user_id=user_id, corpus_id=corpus_id)) db.session.commit() self.driver.refresh()
def seed_favorites(): favorite1 = Favorite(user_id=1, listing_id=1) favorite2 = Favorite(user_id=2, listing_id=2) favorite3 = Favorite(user_id=3, listing_id=23) favorite4 = Favorite(user_id=4, listing_id=4) favorite5 = Favorite(user_id=5, listing_id=5) favorite6 = Favorite(user_id=6, listing_id=6) favorite7 = Favorite(user_id=7, listing_id=7) favorite8 = Favorite(user_id=8, listing_id=8) favorite9 = Favorite(user_id=9, listing_id=9) favorite10 = Favorite(user_id=10, listing_id=10) favorite11 = Favorite(user_id=11, listing_id=11) favorite12 = Favorite(user_id=12, listing_id=12) favorite13 = Favorite(user_id=13, listing_id=13) favorite14 = Favorite(user_id=14, listing_id=14) favorite15 = Favorite(user_id=15, listing_id=15) favorite16 = Favorite(user_id=16, listing_id=16) favorite17 = Favorite(user_id=17, listing_id=17) favorite18 = Favorite(user_id=18, listing_id=18) favorite19 = Favorite(user_id=19, listing_id=19) favorite20 = Favorite(user_id=20, listing_id=20) favorite21 = Favorite(user_id=20, listing_id=21) favorite22 = Favorite(user_id=19, listing_id=22) favorite23 = Favorite(user_id=18, listing_id=23) favorite24 = Favorite(user_id=17, listing_id=24) favorite25 = Favorite(user_id=16, listing_id=25) favorite26 = Favorite(user_id=15, listing_id=26) favorite27 = Favorite(user_id=14, listing_id=27) favorite28 = Favorite(user_id=13, listing_id=28) favorite29 = Favorite(user_id=12, listing_id=29) favorite30 = Favorite(user_id=11, listing_id=30) favorite31 = Favorite(user_id=10, listing_id=31) favorite32 = Favorite(user_id=9, listing_id=32) favorite33 = Favorite(user_id=8, listing_id=33) favorite34 = Favorite(user_id=7, listing_id=34) favorite35 = Favorite(user_id=6, listing_id=35) favorite36 = Favorite(user_id=5, listing_id=36) favorite37 = Favorite(user_id=4, listing_id=37) favorite38 = Favorite(user_id=3, listing_id=38) favorite39 = Favorite(user_id=2, listing_id=39) favorite40 = Favorite(user_id=1, listing_id=40) favorite41 = Favorite(user_id=1, listing_id=41) favorite42 = Favorite(user_id=2, listing_id=42) favorite43 = Favorite(user_id=3, listing_id=43) favorite44 = Favorite(user_id=4, listing_id=44) favorite45 = Favorite(user_id=5, listing_id=45) favorite46 = Favorite(user_id=6, listing_id=36) favorite47 = Favorite(user_id=7, listing_id=47) favorite48 = Favorite(user_id=8, listing_id=48) favorite49 = Favorite(user_id=9, listing_id=49) favorite50 = Favorite(user_id=10, listing_id=50) favorite51 = Favorite(user_id=1, listing_id=11) favorite52 = Favorite(user_id=2, listing_id=12) favorite53 = Favorite(user_id=3, listing_id=13) favorite54 = Favorite(user_id=4, listing_id=14) favorite55 = Favorite(user_id=5, listing_id=15) favorite56 = Favorite(user_id=6, listing_id=16) favorite57 = Favorite(user_id=7, listing_id=17) favorite58 = Favorite(user_id=8, listing_id=18) favorite59 = Favorite(user_id=9, listing_id=19) favorite60 = Favorite(user_id=10, listing_id=11) favorite61 = Favorite(user_id=11, listing_id=12) favorite62 = Favorite(user_id=12, listing_id=13) favorite63 = Favorite(user_id=13, listing_id=14) favorite64 = Favorite(user_id=14, listing_id=15) favorite65 = Favorite(user_id=15, listing_id=16) favorite66 = Favorite(user_id=16, listing_id=17) favorite67 = Favorite(user_id=17, listing_id=18) favorite68 = Favorite(user_id=18, listing_id=19) favorite69 = Favorite(user_id=19, listing_id=9) favorite70 = Favorite(user_id=20, listing_id=2) favorite71 = Favorite(user_id=20, listing_id=1) favorite72 = Favorite(user_id=19, listing_id=12) favorite73 = Favorite(user_id=18, listing_id=3) favorite74 = Favorite(user_id=17, listing_id=4) favorite75 = Favorite(user_id=16, listing_id=5) favorite76 = Favorite(user_id=15, listing_id=6) favorite77 = Favorite(user_id=14, listing_id=7) favorite78 = Favorite(user_id=13, listing_id=8) favorite79 = Favorite(user_id=12, listing_id=9) favorite80 = Favorite(user_id=11, listing_id=40) favorite81 = Favorite(user_id=10, listing_id=1) favorite82 = Favorite(user_id=9, listing_id=2) favorite83 = Favorite(user_id=8, listing_id=3) favorite84 = Favorite(user_id=7, listing_id=4) favorite85 = Favorite(user_id=6, listing_id=5) favorite86 = Favorite(user_id=5, listing_id=6) favorite87 = Favorite(user_id=4, listing_id=7) favorite88 = Favorite(user_id=3, listing_id=8) favorite89 = Favorite(user_id=2, listing_id=29) favorite90 = Favorite(user_id=1, listing_id=30) favorite91 = Favorite(user_id=1, listing_id=6) favorite92 = Favorite(user_id=2, listing_id=22) favorite93 = Favorite(user_id=3, listing_id=3) favorite94 = Favorite(user_id=4, listing_id=11) favorite95 = Favorite(user_id=5, listing_id=25) favorite96 = Favorite(user_id=6, listing_id=46) favorite97 = Favorite(user_id=7, listing_id=29) favorite98 = Favorite(user_id=8, listing_id=14) favorite99 = Favorite(user_id=9, listing_id=16) favorite100 = Favorite(user_id=10, listing_id=49) db.session.add(favorite1) db.session.add(favorite2) db.session.add(favorite3) db.session.add(favorite4) db.session.add(favorite5) db.session.add(favorite6) db.session.add(favorite7) db.session.add(favorite8) db.session.add(favorite9) db.session.add(favorite10) db.session.add(favorite11) db.session.add(favorite12) db.session.add(favorite13) db.session.add(favorite14) db.session.add(favorite15) db.session.add(favorite16) db.session.add(favorite17) db.session.add(favorite18) db.session.add(favorite19) db.session.add(favorite20) db.session.add(favorite21) db.session.add(favorite22) db.session.add(favorite23) db.session.add(favorite24) db.session.add(favorite25) db.session.add(favorite26) db.session.add(favorite27) db.session.add(favorite28) db.session.add(favorite29) db.session.add(favorite30) db.session.add(favorite31) db.session.add(favorite32) db.session.add(favorite33) db.session.add(favorite34) db.session.add(favorite35) db.session.add(favorite36) db.session.add(favorite37) db.session.add(favorite38) db.session.add(favorite39) db.session.add(favorite40) db.session.add(favorite41) db.session.add(favorite42) db.session.add(favorite43) db.session.add(favorite44) db.session.add(favorite45) db.session.add(favorite46) db.session.add(favorite47) db.session.add(favorite48) db.session.add(favorite49) db.session.add(favorite50) db.session.add(favorite51) db.session.add(favorite52) db.session.add(favorite53) db.session.add(favorite54) db.session.add(favorite55) db.session.add(favorite56) db.session.add(favorite57) db.session.add(favorite58) db.session.add(favorite59) db.session.add(favorite60) db.session.add(favorite61) db.session.add(favorite62) db.session.add(favorite63) db.session.add(favorite64) db.session.add(favorite65) db.session.add(favorite66) db.session.add(favorite67) db.session.add(favorite68) db.session.add(favorite69) db.session.add(favorite70) db.session.add(favorite71) db.session.add(favorite72) db.session.add(favorite73) db.session.add(favorite74) db.session.add(favorite75) db.session.add(favorite76) db.session.add(favorite77) db.session.add(favorite78) db.session.add(favorite79) db.session.add(favorite80) db.session.add(favorite81) db.session.add(favorite82) db.session.add(favorite83) db.session.add(favorite84) db.session.add(favorite85) db.session.add(favorite86) db.session.add(favorite87) db.session.add(favorite88) db.session.add(favorite89) db.session.add(favorite90) db.session.add(favorite91) db.session.add(favorite92) db.session.add(favorite93) db.session.add(favorite94) db.session.add(favorite95) db.session.add(favorite96) db.session.add(favorite97) db.session.add(favorite98) db.session.add(favorite99) db.session.add(favorite100) db.session.commit()
def get(self): username = self.current_user fs = yield gen.maybe_future(Favorite.list_by_user(username)) result = {"total": len(fs), "posts": [f.to_dict() for f in fs]} raise gen.Return(result)
def getAllItems(): flips = Flip.query.all() flipsCopy = [] for flip in flips: flipDict = flip.to_dict() flipsCopy.append(flipDict) favorites = Favorite.query.all() favoritesCopy = [] for favorite in favorites: favoritesCopy.append(favorite.to_dict()) comments = Comment.query.all() commentsCopy = [] for comment in comments: commentsCopy.append(comment.to_dict()) db.session.execute('TRUNCATE items CASCADE;') db.session.execute("ALTER SEQUENCE items_id_seq RESTART WITH 1") resp, content = httplib2.Http().request("https://poe.ninja/api/data/currencyoverview?league=Ultimatium&type=Currency") decoded = content.decode('ascii') jsonObj = json.loads(decoded) item_list = jsonObj["lines"] for item in item_list: newItem = Item( name=item["currencyTypeName"], priceInC=item['chaosEquivalent'] ) db.session.add(newItem) resp2, content2 = httplib2.Http().request("https://poe.ninja/api/data/itemoverview?league=Ultimatium&type=DivinationCard") decoded2 = content2.decode('ascii') jsonObj2 = json.loads(decoded2) item_list2 = jsonObj2["lines"] for item in item_list2: newItem = Item( name=item["name"], priceInC=item['chaosValue'] ) db.session.add(newItem) resp2, content2 = httplib2.Http().request("https://poe.ninja/api/data/itemoverview?league=Ultimatium&type=Prophecy") decoded2 = content2.decode('ascii') jsonObj2 = json.loads(decoded2) item_list2 = jsonObj2["lines"] for item in item_list2: newItem = Item( name=item["name"], priceInC=item['chaosValue'] ) db.session.add(newItem) resp2, content2 = httplib2.Http().request("https://poe.ninja/api/data/itemoverview?league=Ultimatium&type=UniqueJewel") decoded2 = content2.decode('ascii') jsonObj2 = json.loads(decoded2) item_list2 = jsonObj2["lines"] for item in item_list2: newItem = Item( name=item["name"], priceInC=item['chaosValue'] ) db.session.add(newItem) resp2, content2 = httplib2.Http().request("https://poe.ninja/api/data/itemoverview?league=Ultimatium&type=UniqueWeapon") decoded2 = content2.decode('ascii') jsonObj2 = json.loads(decoded2) item_list2 = jsonObj2["lines"] for item in item_list2: newItem = Item( name=item["name"], priceInC=item['chaosValue'] ) db.session.add(newItem) resp2, content2 = httplib2.Http().request("https://poe.ninja/api/data/itemoverview?league=Ultimatium&type=UniqueArmour") decoded2 = content2.decode('ascii') jsonObj2 = json.loads(decoded2) item_list2 = jsonObj2["lines"] for item in item_list2: newItem = Item( name=item["name"], priceInC=item['chaosValue'] ) db.session.add(newItem) resp2, content2 = httplib2.Http().request("https://poe.ninja/api/data/itemoverview?league=Ultimatium&type=UniqueAccessory") decoded2 = content2.decode('ascii') jsonObj2 = json.loads(decoded2) item_list2 = jsonObj2["lines"] for item in item_list2: newItem = Item( name=item["name"], priceInC=item['chaosValue'] ) db.session.add(newItem) db.session.commit() for flip in flipsCopy: input1 = Item.query.filter_by(name=flip["input1Name"]).first() output = Item.query.filter_by(name=flip["outputName"]).first() newFlip = Flip( input1Id=input1.id, input1Quantity=flip["input1Quantity"], # input2Id=flip.input2Id, # input2Quantity=flip.input2Quantity, outputId=output.id, outputQuantity=flip["outputQuantity"], trades=int(flip["input1Quantity"])+ 1, cost=input1.priceInC * int(flip["input1Quantity"]), revenue=output.priceInC * int(flip["outputQuantity"]), profit= output.priceInC * int(flip["outputQuantity"]) - (input1.priceInC * int(flip["input1Quantity"])), ) db.session.add(newFlip) db.session.commit() for favorite in favoritesCopy: if flip["id"] == favorite["id"]: newFavorite = Favorite( userId=favorite["userId"], flipId=newFlip.id ) db.session.add(newFavorite) for comment in commentsCopy: if flip["id"] == comment["flipId"]: newComment = Comment( userId=comment["userId"], flipId=newFlip.id, content=comment["content"] ) db.session.add(newComment) db.session.commit() return content
def setFavorite(flipId): favorite = Favorite(userId=current_user.id, flipId=flipId) db.session.add(favorite) db.session.commit() return favorite.to_dict()