Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
 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
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
Файл: gift.py Проект: pilu01/kk
 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
Пример #9
0
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=[])
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
 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
Пример #14
0
 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
Пример #15
0
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
Пример #16
0
 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
Пример #17
0
 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
Пример #18
0
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)
Пример #19
0
 def __parse_single(self, wish):
     r = {
         'wishes_count': wish['count'],
         'book': BookViewModel(wish['wish'].book),
         'id': wish['wish'].id
     }
     return r
Пример #20
0
 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
Пример #21
0
    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)
Пример #22
0
 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))
Пример #23
0
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)
Пример #24
0
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=[])
Пример #25
0
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)
Пример #26
0
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)
Пример #27
0
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)
Пример #28
0
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)
Пример #29
0
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)
Пример #30
0
 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