def search(): # q = request.args['q'] # page = request.args['page'] # 数据校验 form = SearchForm(request.args) result = {} if form.validate(): # 如果数据合格 q = form.q.data page = form.page.data isbn_or_key = is_isbn_or_key(q) if isbn_or_key == 'isbn': date = YuShu_Book.search_by_isbn(q) result = BookViewModel.package_single(date, q) else: date = YuShu_Book.search_by_keyword(q, page) result = BookViewModel.package_collection(date, q) # result = json.dumps(result) # return result,200,{'content-type':'application/json'} # return jsonify(result) else: # return jsonify({'msg':'数据校验失败'}) # return jsonify(form.errors) flash('搜索的关键字不符合要求,请重新输入') return render_template("search_result.html", books=result)
def save_drift(drift_form, current_gift): """ 将交易填入的信息装在到模型中 :param drift_form: :param current_gift: :return: """ with db.auto_commit(): drift = Drift() # drift.message = drift_form.message.data drift_form.populate_obj(drift) drift.gift_id = current_gift.id drift.requester_id = current_user.id drift.requester_nickname = current_user.nickname drift.gifter_id = current_gift.user.id drift.gifter_nickname = current_gift.user.nickname book = BookViewModel(current_gift.book) drift.book_title = book.title drift.book_author = book.author drift.book_img = book.image drift.isbn = book.isbn current_user.beans -= 1 db.session.add(drift)
def save_drift(drift_form, current_gift): with db.auto_commit(): drift = Drift() # 邮寄信息 # drift_form.populate_obj(drift) drift.set_attrs(drift_form.data) # 书籍信息 book = BookViewModel(current_gift.book) drift.isbn = book.isbn drift.book_title = book.title drift.book_author = book.author drift.book_img = book.image # 请求者信息 drift.requester_id = current_user.id drift.requester_nickname = current_user.nickname # 赠送者信息 drift.gifter_id = current_gift.user.id drift.gift_id = current_gift.id drift.gifter_nickname = current_gift.user.nickname try: current_user.beans -= 1 if current_user.beans < 0: raise ValueError except Exception as e: print('写日志') raise e db.session.add(drift)
def __machting(self, gift): count = 0 for wish_count in self.__wish_count_list: if gift.isbn == wish_count['isbn']: count = wish_count['count'] my_gift = MyGift(gift.id, BookViewModel(gift.book), count) return my_gift
def book_detail(isbn): # 判断是否在赠送和心愿清单 has_in_gifts = False has_in_wishes = False # 取数据的详情页面 yushu_book = YuShuBook() yushu_book.search_by_isbn(isbn) book = BookViewModel(yushu_book.first) # 判断用户是否登录,是否在用的心愿和礼物清单 if current_user.is_authenticated: if Gift.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_gifts = True if Wish.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_wishes = True # 查询数据库的模型数据 trade_gifts = Gift.query.filter_by(isbn=isbn, launched=False).all() trade_wishes = Wish.query.filter_by(isbn=isbn, launched=False).all() # 规整模型数据 trade_wishes_model = TradeInfo(trade_wishes) trade_gifts_model = TradeInfo(trade_gifts) return render_template('book_detail.html', book=book, wishes=trade_wishes_model, gifts=trade_gifts_model, has_in_wishes=has_in_wishes, has_in_gifts=has_in_gifts)
def book_detail(isbn): has_in_gifts = False has_in_wishes = False # 判断用户是否登录 if current_user.is_authenticated: # status是逻辑删除的标志,由于每次查询都要加上status=1不方便,这里在base model重写了filter_by if Gift.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_gifts = True if Wish.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_wishes = True # 取书籍详情数据 yushu_book = YuShuBook() yushu_book.search_by_isbn(isbn) book = BookViewModel(yushu_book.first) trade_gifts = Gift.query.filter_by(isbn=isbn, launched=False).all() trade_wishes = Wish.query.filter_by(isbn=isbn, launched=False).all() trade_gifts_model = TradeInfo(trade_gifts) trade_wishes_model = TradeInfo(trade_wishes) return render_template('book_detail.html', book=book, wishes=trade_wishes_model, gifts=trade_gifts_model, has_in_gifts=has_in_gifts, has_in_wishes=has_in_wishes)
def book_detail(isbn): has_in_gifts=False has_in_wishes=False yushu_book=YuShuBook() yushu_book.search_by_isbn(isbn) book = BookViewModel(yushu_book.first) if current_user.is_authenticated: if Gift.query.filter_by(uid=current_user.id,isbn=isbn,launched=False).first(): has_in_gifts=True if Wish.query.filter_by(uid=current_user.id,isbn=isbn,launched=False).first(): has_in_wishes=True trade_gifts=Gift.query.filter_by(isbn=isbn,launched=False).all() trade_wishes=Wish.query.filter_by(isbn=isbn,launched=False).all() trade_gifts_model=TradeInfo(trade_gifts) trade_wishes_model=TradeInfo(trade_wishes) return render_template('book_detail.html',book=book,wishes=trade_wishes_model, gifts=trade_gifts_model,has_in_gifts=has_in_gifts, has_in_wishes=has_in_wishes) # @web.route('/test') # def test(): # r={ # 'name':'七月7日', # 'age': 19 # } # flash("hello,七月",category="error") # flash("hello,九月",category='warning') # return render_template('layout.html',data=r)
def _matching(self, gift): count = 0 for wish_count in self._wish_count_list: if wish_count.isbn == gift.isbn: count = wish_count.count my_gift = MyGift(gift.id, BookViewModel(gift.book), count) return my_gift
def detail(isbn): yushu_book = YuShuBook() yushu_book.search_by_isbn(isbn) book = BookViewModel(yushu_book.first) return render_template('book_detail.html', book=book, gifts=[], wishes=[])
def book_detail(isbn): has_in_wishes = False has_in_gifts = False yushu_book = YuShuBook() yushu_book.search_by_isbn(isbn) # 取得详情数据,并渲染到模板中 book = BookViewModel(yushu_book.first) if current_user.is_authenticated: # 如果未登录,current_user将是一个匿名用户对象 if Gift.query.filter_by( uid=current_user.id, isbn=isbn, # 自己的 filter_by 函数 launched=False).first(): has_in_gifts = True if Wish.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_wishes = True trade_gifts = Gift.query.filter_by(isbn=isbn, launched=False).all() trade_wishes = Wish.query.filter_by(isbn=isbn, launched=False).all() trade_gifts_model = TradeInfo(trade_gifts) trade_wishes_model = TradeInfo(trade_wishes) # 传出:book BookViewModel 类型,gifts wishes 都是 TradeInfo 类型 return render_template('book_detail.html', book=book, wishes=trade_wishes_model, gifts=trade_gifts_model, has_in_gifts=has_in_gifts, has_in_wishes=has_in_wishes)
def book_detail(isbn): # 1,详情书籍信息 yushu_book = YuShuBook() yushu_book.search_by_isbn(isbn) book_view_model = BookViewModel(yushu_book.first) # 2,这本书是否在我的gift中 has_in_gift = False has_in_wish = False if current_user.is_authenticated: gifts = Gift.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).all() if gifts: has_in_gift = True wishes = Wish.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).all() if wishes: has_in_wish = True trade_gifts = Gift.query.filter_by(launched=False, isbn=isbn).all() trade_gifts_model = TradeInfo(trade_gifts) trade_wishes = Wish.query.filter_by(launched=False, isbn=isbn).all() trade_wishes_model = TradeInfo(trade_wishes) return render_template('book_detail.html', book=book_view_model, has_in_gifts=has_in_gift, has_in_wishes=has_in_wish, wishes=trade_wishes_model, gifts=trade_gifts_model)
def book_detail(isbn): has_in_gift = False #未登录的状态下,默认在赠送清单中没有这本书 has_in_wish = False #未登录的状态下,默认在心愿清单中没有这本书 if current_user.is_authenticated: # 判断用户是否登录 if Gift.query.filter_by( uid=current_user.id, #在用户的赠送清单中查找 isbn=isbn, #在查找的时候应该通过status属性判断是否已删除 launched=False).first( ): #此处通过继承BaseQuery,重写filter_by方法实现(在base.py中) has_in_gift = True #用户的赠送清单中有这本书,has_in_gift修改为True if Wish.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_wish = True date = YuShu_Book.search_by_isbn(isbn) book = BookViewModel.handle_book_date(date) trade_gifts = Gift.query.filter_by(isbn=isbn, launched=False).all() #在赠送清单中查找是否存在 trade_wishs = Wish.query.filter_by(isbn=isbn, launched=False).all() #在心愿清单中查找是否存在 gifts = TradeInfo(trade_gifts) wishs = TradeInfo(trade_wishs) return render_template( 'book_detail.html', book=book, #返回书本详情页面 wishes=wishs, gifts=gifts, has_in_gifts=has_in_gift, has_in_wishs=has_in_wish)
def __matching(self, trade): count = 0 for per in self.__count_list: if per['isbn'] == trade.isbn: count = per['count'] r = {'id': trade.id, 'book': BookViewModel(trade.book), 'count': count} return r
def __matching(self, trade): count = 0 for trade_count in self.__trade_count_list: if trade.isbn == trade_count['isbn']: count = trade_count['count'] r = {'count': count, 'book': BookViewModel(trade.book), 'id': trade.id} return r
def save_drift(trading_form, current_gift): with db.auto_commit(): trading = Trading() trading_form.populate_obj(trading) trading.gift_id = current_gift.id trading.sender_id = current_gift.user.id trading.sender_nickname = current_gift.user.nickname trading.receiver_id = current_user.id trading.receiver_nickname = current_user.nickname book = BookViewModel(current_gift.book) trading.book_title = book.title trading.book_author = book.author trading.book_img = book.image trading.isbn = book.isbn try: if current_user.beans <= 0: raise Exception current_user.beans -= 1 db.session.add(trading) except Exception as e: print(e) pass
def __matching(self, trad): count = 0 for EachGiftWishCount in self.__trade_count_list: if trad.isbn == EachGiftWishCount.isbn: count = EachGiftWishCount.count my_trad = MyTrade(trad.id, BookViewModel(trad.book), count) return my_trad
def _matching(self, wish): count = 0 for gift_count in self._gift_count_list: if gift_count.isbn == wish.isbn: count = gift_count.count my_wish = MyWish(wish.id, BookViewModel(wish.book), count) return my_wish
def book_detail(isbn): has_in_gifts = False has_in_wishes = False # 联系到 User中 can_save_to_list 方法讲过的,及我们的产品设计,一个人不能同时既赠送此书又希望得到此书 # 书本对应用户一共会存在三种关系: # 1、既不在赠送清单也不在心愿清单中 2、在赠送清单但不在心愿清单中 3、在心愿清单但不在赠送清单中 # 获取书籍数据 data = YuShuBook.search_by_isbn(isbn) book = BookViewModel.handle_book_data(data) # 判断用户是否登录 if current_user.is_authenticated: if Gift.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): # 之前有讲过我们使用的是软删除,这个时候我们其实还需要在filter_by中添加 status=1 # 这是类似废话的一句话,那么我们怎样便捷的在所有的查询中加入这么一个条件呢? has_in_gifts = True if Wish.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_wishes = True trade_gifts = Gift.query.filter_by(isbn=isbn, launched=False).all() trade_wishes = Wish.query.filter_by(isbn=isbn, launched=False).all() wishes = TradeInfo(trade_wishes) gifts = TradeInfo(trade_gifts) return render_template('book_detail.html', book=book, wishes=wishes, gifts=gifts, has_in_gifts=has_in_gifts, has_in_wishes=has_in_wishes)
def __parse_single(self, wish): r = { 'wishes_count': wish['count'], 'book': BookViewModel(wish['wish'].book), 'id': wish['wish'].id } return r
def __matching(self, gift): count = 0 for wish_count in self.__wish_count_list: # 遍历心愿清单,查看要送出的书是否有人想要 if gift.isbn == wish_count['isbn']: # 如果书的isbn编号在心愿清单中,那么表示有人想要这本书 count = wish_count['count'] # 把要这本念书的人数取出来 r = dict(wishes_count=count, book=BookViewModel(gift.book), id=gift.id) return r
def save_a_drift(cls, drift_form, current_gift): with db.auto_commit(): book = BookViewModel(current_gift.book.first) drift = Drift() drift_form.populate_obj(drift) drift.gift_id = current_gift.id drift.requester_id = current_user.id drift.requester_nickname = current_user.nickname drift.gifter_nickname = current_gift.user.nickname drift.gifter_id = current_gift.user.id drift.book_title = book.title drift.book_author = book.author drift.book_img = book.image drift.isbn = book.isbn # 当请求生成时,不需要让这个礼物处于锁定状态 # 这样赠送者是可以收到多个索取请求的,由赠送者选择送给谁 # current_gift.launched = True # 请求者鱼豆-1 current_user.beans -= 1 # 但是赠送者鱼豆不会立刻+1 # current_gift.user.beans += 1 db.session.add(drift) send_email(current_gift.user.email, '有人想要一本书', 'email/get_gift', wisher=current_user, gift=current_gift)
def __parse(self): for gift in self.__gifts_of_mine: for wish_count in self.__wish_count_list: if gift.isbn == wish_count['isbn']: self.gifts.append( GiftSingle(wish_count['count'], BookViewModel(gift.book), gift.id))
def save_drift(drift_form, current_gift): ''' 保存 鱼漂模型 实现将DriftForm表单中的信息赋值到drift模型中 :param drift_form: :param current_gift: :return: ''' with db.auto_commit(): drift = Drift() '''快速实现复制''' drift_form.populate_obj(drift) '''请求者信息''' drift.gift_id = current_gift.id drift.request_id = current_user.id drift.request_nickname = current_user.nickname '''赠送者信息''' drift.gifter_nickname = current_gift.user.nickname drift.gifter_id = current_gift.user.id '''书籍类信息''' book = BookViewModel(current_gift.book) drift.book_title = book.title drift.book_author = book.author drift.book_img = book.image drift.isbn = book.isbn current_user.beans -= 1 db.session.add(drift)
def book_detail(isbn): # 使用isbn进行搜索,然后将数据显示到详情页面 yushu_book = YuShuBook() yushu_book.search_by_isbn(isbn) # book = BookViewModel(yushu_book.first()) book = BookViewModel(yushu_book.first) return render_template('book_detail.html', book=book, wishes=[], gifts=[])
def book_detail(isbn): # 要想判断书籍是否在赠送或者心愿清单中,先对其赋初始值 has_in_gifts = False has_in_wishes = False # 获取书籍详情页面 yushu_book = YuShuBook() yushu_book.search_by_isbn(isbn) book = BookViewModel(yushu_book.first) # 首先判断用户是否登录系统,可以使用is_authenticated插件 if current_user.is_authenticated: if Gift.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_gifts = True if Wish.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_wishes = True # 查询包含所有赠送者的信息 trade_gifts = Gift.query.filter_by(isbn=isbn, launched=False).all() #查询包含所有索要者的清单 trade_wishes = Wish.query.filter_by(isbn=isbn, launched=False).all() # 查询数据传入到TradeInfo视图模型中处理数据 trade_wishes_model = TradeInfo(trade_wishes) trade_gifts_model = TradeInfo(trade_gifts) return render_template('book_detail.html', book=book, wishes=trade_wishes_model, gifts=trade_gifts_model, has_in_wishes=has_in_wishes, has_in_gifts=has_in_gifts)
def book_detail(isbn): has_in_gifts = False has_is_wishes = False # 取书籍所有详情数据 fish_book = FishBook() fish_book.search_by_isbn(isbn) # book = BookViewModel(fish_book.books[0]) book = BookViewModel(fish_book.first) # 检查书籍是否在礼物清单或心愿清单中 if current_user.is_authenticated: if Gift.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_gifts = True if Wish.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_is_wishes = True trade_gifts = Gift.query.filter_by(isbn=isbn, launched=False).all() trade_wishes = Wish.query.filter_by(isbn=isbn, launched=False).all() # 交易模型 trade_gifts_model = TradeInfo(trade_gifts) trade_wishes_model = TradeInfo(trade_wishes) return render_template("book_detail.html", book=book, wishes=trade_wishes_model, gifts=trade_gifts_model, has_in_gifts=has_in_gifts, has_in_washes=has_is_wishes)
def book_detail(isbn): has_in_gifts = False has_in_wishes = False yushu_book = YuShuBook() yushu_book.search_by_isbn(isbn) book = BookViewModel(yushu_book.first) trade_gifts = Gift.query.filter_by(isbn=isbn, launched=False).all() trade_wishes = Wish.query.filter_by(isbn=isbn, launched=False).all() if current_user.is_authenticated: if Gift.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_gifts = True if Wish.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_wishes = True trade_wishes_model = TradeInfo(trade_wishes) trade_gifts_model = TradeInfo(trade_gifts) return render_template('book_detail.html', book=book, wishes=trade_wishes_model, gifts=trade_gifts_model, has_in_wishes=has_in_wishes, has_in_gifts=has_in_gifts)
def book_detail(isbn): # 取出每本书的详情 yushu_book = YuShuBook() yushu_book.search_by_isbn(isbn) book = BookViewModel(yushu_book.first) # 三种情况的判断 has_in_gifts = current_user.is_authenticated and current_user.has_in_gifts( isbn) has_in_wishes = current_user.is_authenticated and current_user.has_in_wishs( isbn) # 赠书人列表和索要人列表 trade_gifts = Gift.query.filter_by(isbn=isbn).all() trade_wishs = Wish.query.filter_by(isbn=isbn).all() trade_wishs_model = TradeInfo(trade_wishs) trade_gifts_model = TradeInfo(trade_gifts) return render_template("book_detail.html", book=book, wishes=trade_wishs_model, gifts=trade_gifts_model, has_in_wishes=has_in_wishes, has_in_gifts=has_in_gifts)
def book_detail(isbn): has_in_gifts = False has_in_wishes = False # 获取图书信息 yushu_book = YuShuBook() yushu_book.search_by_isbn(isbn) book = BookViewModel(yushu_book.first) if current_user.is_authenticated: # 如果未登录,current_user将是一个匿名用户对象 if Gift.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_gifts = True if Wish.query.filter_by(uid=current_user.id, isbn=isbn, launched=False).first(): has_in_wishes = True # if has_in_gifts: trade_wishes = Wish.query.filter_by(isbn=isbn, launched=False).all() trade_gifts = Gift.query.filter_by(isbn=isbn, launched=False).all() trade_wishes_model = TradeInfo(trade_wishes) trade_gifts_model = TradeInfo(trade_gifts) print('---trade_wishes_model---', trade_wishes_model) return render_template('book_detail.html', book=book, has_in_gifts=has_in_gifts, has_in_wishes=has_in_wishes, wishes=trade_wishes_model, gifts=trade_gifts_model)
def __parse(self): trades = [] books = [BookViewModel(trade.book) for trade in self.__trades_of_mine] for book in books: trade = self.__maching(book) trades.append(trade) return trades