def borrow_book(self, title, user): """ 返回1表示借阅成功 """ book = Book.find_one(title=title) bs = user.borrowed_books() if book in bs: log("Borrow: 无法重复借阅同一名字的书") return 0 if book is not None and book.in_stock(): log("Borrow: {}有库存".format(title)) new_borrow = Borrow() if user.card_id == "None": log("该用户没有借书证") return 0 new_borrow.card_id = user.card_id new_borrow.book_id = book.id new_borrow.return_date = None try: book.stock_minus_one() except Exception: # 库存数不足 log("借书失败") return 0 else: new_borrow.save() log("Borrow: 借书成功, 书名:{}".format(book.title)) return 1 else: log("Borrow: 借书失败: 书籍不存在或库存不足") return 0
def borrowed_books(self): """ 返回用户借阅的所有书 """ borrows = Borrow.find_all(card_id=self.card_id, deleted=False) books = [] for b in borrows: book = Book.find_one(id=b.book_id) books.append(book) return books
def borrow(): u = current_user() if u is None or u.card_id is None: abort(403) else: # 获取post上来的json数据 title = json.loads(request.get_data()) log("用户({})尝试借阅书籍({}):".format(u.username, title)) if Borrow.borrow_book(title, u) == 1: book = Book.find_one(title=title) return jsonify({"stock": book.stock}) else: return jsonify({"stock": '-1'})
def borrow(): u = current_user() if u is None or u.role != 1: return jsonify({'code': '403', 'msg': 'access deny'}) else: # 返回借书记录 records = [] bs = Borrow.find_all() for b in bs: record = {} book = Book.find_one(id=b.book_id) usr = User.find_one(card_id=b.card_id) record['usr'] = usr.username record['book'] = book.title record['bt'] = b.borrow_date record['deleted'] = b.deleted records.append(record) return jsonify(records)
def return_book(self, title, user): """ 归还书籍,返回1表示成功归还 """ book = Book.find_one(title=title) if book is not None: log("Return: 找到该书{}".format(title)) # 找到借书记录 b = Borrow.find_one(card_id=user.card_id, book_id=book.id, deleted=False) if b is None: log("Return: 未找到这条借书记录") return 0 if b.deleted: log("Return: 已经归还了书籍, 不可重复归还") return 0 try: book.stock_add_one() except Exception: log("还书失败") return 0 else: b.return_date = int(time.time()) b.deleted = True try: b.update() except Exception: log("数据库更新错误") exit() else: log("Return: 还书成功, 书名:({})".format(book.title)) return 1 else: log("Return: 还书失败: 书籍不存在") return 0
def borrow_record(self): """ 返回用户的借书记录,格式为:书名,借阅时间,归还时间,是否归还 """ card_id = self.card_id infos = [] bs = Borrow.find_all(card_id=card_id) for b in bs: info = {} print(b) book = Book.find_one(id=b.book_id) info['book'] = book.title info['bt'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(b.borrow_date)) if b.return_date is None: info['rt'] = "" else: info['rt'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(b.return_date)) info['de'] = b.deleted infos.append(info) log("infos:", infos) return infos
import json from models.user import User from models.card import Card from models.borrow import Borrow from models.book import Book from routes import current_user from models.apiError import APIValueError from utils import log if __name__ == "__main__": records = [] record = {} bs = Borrow.find_all() for b in bs: book = Book.find_one(id=b.book_id) usr = User.find_one(card_id=b.card_id) record['usr'] = usr.username record['book'] = book.title record['bt'] = b.borrow_date record['deleted'] = b.deleted records.append(record) print(records)