コード例 #1
0
ファイル: bot.py プロジェクト: maddeer/bookshell
def get_book_file(book_id, book_name, format, user_id=0):
    book = Book()
    book_info = book.get_book_info(book_id=book_id, user_id=user_id)
    if not book_info:
        return None
    if format == 'pdf':
        book_file = make_pdf_book(book_info)
    elif format == 'fb2':
        book_file = make_fb2_book(book_info)
    return book_file
コード例 #2
0
ファイル: web_bookshell.py プロジェクト: maddeer/bookshell
def add_chapter_web(book_id):
    username = session.get('username')
    user_id = session.get('user_id')
    book = Book()

    if not username:
        return redirect(url_for('index'))

    book_info = book.get_book_info(book_id=book_id, user_id=user_id)
    owner = False

    if not book_info:
        abort(404)

    for author in book_info['book_authors']:
        if author.id == user_id:
            owner = True

    if not owner:
        abort(403)

    if request.method == 'POST':
        if 'chapter' not in request.files:
            flash('Вы не вложили файл с новой частью')
            return redirect(url_for('add_chapter_web', book_id=book_id))
        chapter_file = request.files['chapter']
        if chapter_file.filename == '':
            flash('Вы не вложили файл с новой частью книги')
            return redirect(url_for('add_chapter_web', book_id=book_id))

        if chapter_file and allowed_file(chapter_file.filename):
            filename = secure_filename(chapter_file.filename)
            save_book = os.path.join(app.config['UPLOAD_FOLDER'], filename)
            chapter_file.save(save_book)
            book_text = docx_to_text(save_book)
            time_to_open = request.form.get('date')
            chapter_id = add_chapter(
                                book_id=book_id,
                                user_id=user_id,
                                chapter_title=request.form.get('chapter_title'),
                                time_open=datetime.strptime(request.form.get('date'), '%d/%m/%Y'),
                                text=book_text,
                                chapter_number=request.form.get('chapter_number', None),
                            )
            return redirect(url_for('chapter', chapter_id=chapter_id))

    next_chapter = book_info['book_chapters'][-1][0].chapter_number + 1

    return render_template(
                'add_chapter.tmpl',
                username=username,
                book=book_info,
                next_chapter=next_chapter,
                nav_get_parents=nav_get_parents(),
            )
コード例 #3
0
def save_the_book(
        book_name,
        text,
        user_id,
        description='-',
        chapter_title='Chapter1',
        genre=[],
        time_open=datetime.now(),
        ):
    new_book = Book(
        book_name,
        description,
    )
    db_session.add(new_book)
    db_session.commit()
    genre_dict = get_genre_dict()
    if genre:
        for genre_id in genre:
            new_book_genre = GenreBook(new_book.id, genre_id)
            db_session.add(new_book_genre)
    if user_id:
        new_author = Author(user_id, new_book.id)
        db_session.add(new_author)
        db_session.commit()
        add_chapter(
            new_book.id,
            user_id,
            chapter_title,
            time_open,
            text,
            1,
            )
        return new_book.id
    else:
        return None
コード例 #4
0
ファイル: bot.py プロジェクト: maddeer/bookshell
def get_book_list_by_genre(bot, update, user_data):
    user_text = update.message.text
    answer = 'выберете название книги и автора: \n'
    genres = user_text.split()
    for genre in genres:
        genre_obj = Genre.query.filter(Genre.genre_name == genre).first()
        if genre_obj:
            book_obj = Book()
            for line in book_obj.get_books_by_genre(genre_obj.id):
                answer += line.book_name + '|'
                book_id = line.id
                author = Author.query.filter(Author.book_id == book_id).first()
                if author:
                    author_name = User.query.filter(
                        User.id == author.user_id).first().user_name
                    answer += author_name + '\n'
    update.message.reply_text(answer)
    return GET_BOOK
コード例 #5
0
ファイル: web_bookshell.py プロジェクト: maddeer/bookshell
def get_books_by_genre_web(genre_id=110):
    username = session.get('username')
    user_id = session.get('user_id')

    book = Book()
    books = book.get_books_by_genre(genre_id)
    if not books:
        abort(404)

    genre = Genre()
    counted_genres = genre.get_all_counted()
    current_genre = genre.query.filter(Genre.id == genre_id).first()

    return render_template(
                'genre_search.tmpl',
                book=books,
                username=username,
                current_genre=current_genre,
                genres=counted_genres,
                nav_get_parents=nav_get_parents(),
            )
コード例 #6
0
ファイル: web_bookshell.py プロジェクト: maddeer/bookshell
def book(book_id):
    book = Book()
    username = session.get('username')
    user_id = session.get('user_id')
    owner = False

    if not user_id:
        user_id = 0

    book_info = book.get_book_info(book_id=book_id, user_id=user_id)
    if not book_info.get('book_data'):
        abort(404)

    for author in book_info['book_authors']:
        if author.id == user_id:
            owner = True

    return render_template(
                'book.tmpl',
                username=username,
                book=book_info,
                owner=owner,
                nav_get_parents=nav_get_parents(),
            )
コード例 #7
0
ファイル: web_bookshell.py プロジェクト: maddeer/bookshell
def index():
    #username = request.cookies.get('username')
    book = Book()
    offset = request.args.get('next')
    if not offset:
        offset = 0
    book_info = book.query.order_by(Book.id.desc()).limit(25).offset(offset).all()
    username = session.get('username')
    genre = Genre()
    counted_genres = genre.get_all_counted()

    return render_template(
                'index.tmpl',
                username=username,
                book=book_info,
                genres=counted_genres,
                nav_get_parents=nav_get_parents(),
            )
コード例 #8
0
        book_text += chapter[0].chapter_text

    crc32 = CRC32().calculate(book_text)
    pdf_file_name = '{}_{}_{}.pdf'.format(authors,
                                          pdf.book_name.replace(' ', '_'),
                                          crc32)
    pdf_file_name = transliterate(pdf_file_name)
    #pdf_file_name = os.path.join('static', 'pdf', pdf_file_name)

    with BytesIO() as pdf_file:
        pdf_file.write(pdf.output(dest='S').encode('latin-1', 'ignore'))

        book_file = {
            'file_name': pdf_file_name,
            'file': pdf_file.getvalue(),
            'mimetype': 'application/pdf',
        }
        return book_file


if __name__ == '__main__':
    book = Book()
    date = datetime.utcnow() - timedelta(days=10)
    book_info = book.get_book_info(book_id=1, user_id=2, date_now=date)
    book_file = make_pdf_book(book_info)

    with open(book_file['file_name'], "w") as f:
        f.write(book_file['file'])

    print(book_file['file_name'])
コード例 #9
0
ファイル: web_bookshell.py プロジェクト: maddeer/bookshell
def export_book(id, user_id=0):
    book = Book()
    return book.get_book_info(book_id=id, user_id=user_id)