Esempio n. 1
0
async def books(request):
    user = request['session'].get('user', None)
    if user:
        try:
            motor_db = motor_base.get_db()
            data = await motor_db.user_message.find_one({'user': user})
            if data:
                books_url = data.get('books_url', None)
                if books_url:
                    result = []
                    for i in books_url:
                        item_result = {}
                        book_url = i.get('book_url', None)
                        last_read_url = i.get("last_read_url", "")
                        book_query = parse_qs(urlparse(book_url).query)
                        last_read_chapter_name = parse_qs(last_read_url).get(
                            'name', ['暂无'])[0]
                        item_result['novels_name'] = book_query.get(
                            'novels_name', '')[0] if book_query.get(
                                'novels_name', '') else ''
                        item_result['book_url'] = book_url
                        latest_data = await motor_db.latest_chapter.find_one(
                            {'quickreading_chapter_url': book_url})
                        if latest_data:
                            item_result['latest_chapter_name'] = latest_data[
                                'data']['latest_chapter_name']
                            item_result[
                                'quickreading_content_url'] = latest_data[
                                    'data']['quickreading_content_url']
                        else:
                            get_latest_data = await get_the_latest_chapter(
                                book_url) or {}
                            item_result[
                                'latest_chapter_name'] = get_latest_data.get(
                                    'latest_chapter_name', 'no latest_chapter')
                            item_result[
                                'quickreading_content_url'] = get_latest_data.get(
                                    'quickreading_content_url', '')
                        item_result['add_time'] = i.get('add_time', '')
                        item_result[
                            "last_read_url"] = last_read_url if last_read_url else book_url
                        item_result[
                            "last_read_chapter_name"] = last_read_chapter_name
                        result.append(item_result)
                    return template('bookshelf.html',
                                    title='{user} bookshelf'.format(user=user),
                                    is_login=1,
                                    user=user,
                                    is_bookmark=1,
                                    result=result[::-1])
            return template('bookshelf.html',
                            title='{user} bookmark'.format(user=user),
                            is_login=1,
                            user=user,
                            is_bookmark=0)
        except Exception as e:
            LOGGER.error(e)
            return redirect('/')
    else:
        return redirect('/')
Esempio n. 2
0
async def bookmarks(request):
    user = request['session'].get('user', None)
    if user:
        try:
            motor_db = motor_base.get_db()
            info = await motor_db.user.find_one({'user': user})
            role = info.get('role', None)
            if role == "VIP User" or role == "Admin":
                data = await motor_db.user_message.find_one({'user': user})
                if data:
                    # 获取所有书签
                    bookmarks = data.get('bookmarks', None)
                    if bookmarks:
                        result = []
                        for i in bookmarks:
                            item_result = {}
                            bookmark = i.get('bookmark', None)
                            query = parse_qs(urlparse(bookmark).query)
                            item_result['novels_name'] = query.get(
                                'novels_name', '')[0] if query.get(
                                    'novels_name', '') else ''
                            item_result['chapter_name'] = query.get(
                                'name', '')[0] if query.get('name', '') else ''
                            item_result['chapter_url'] = query.get(
                                'chapter_url', '')[0] if query.get(
                                    'chapter_url', '') else ''
                            item_result['bookmark'] = bookmark
                            item_result['add_time'] = i.get('add_time', '')
                            result.append(item_result)
                        return template(
                            'bookmark.html',
                            title='the bookmarks of {user}'.format(user=user),
                            is_login=1,
                            user=user,
                            user_role=role,
                            is_bookmark=1,
                            result=result[::-1])
                return template(
                    'bookmark.html',
                    title='the bookmarks of {user}'.format(user=user),
                    is_login=1,
                    user=user,
                    user_role=role,
                    is_bookmark=0)
            else:
                return redirect('/pay')
        except Exception as e:
            LOGGER.error(e)
            return redirect('/')
    else:
        return redirect('/')
Esempio n. 3
0
async def admininterface(request):
    """
    Administrator interface
    :param request:
    :return:
        template: adminInterface.html
        is_admin: role is admin
    """
    admin = request['session'].get('user', None)
    role = request['session'].get('role', None)
    head = ['User name', 'email', 'role', 'delete']
    if admin:
        try:
            if role == 'Admin':
                motor_db = motor_base.get_db()
                keyword_cursor = motor_db.user.find({'role': {
                    '$ne': 'Admin'
                }}, {
                    'user': 1,
                    'email': 1,
                    'role': 1,
                    '_id': 0
                })
                result = []
                indexs = 1
                async for document in keyword_cursor:
                    result.append({
                        'user': document['user'],
                        'email': document['email'],
                        'role': document['role'],
                        'index': indexs
                    })
                    indexs += 1
                return template('adminInterface.html',
                                title='QuickReading Admin Interface',
                                is_login=1,
                                user=admin,
                                alluser=result,
                                user_role=role,
                                is_admin=1,
                                head=head)
            else:
                return redirect('/')
        except Exception as e:
            LOGGER.error(e)
            return redirect('/')
    else:
        print("chucuo")
        return redirect('/')
Esempio n. 4
0
async def save_session(request, response):
    # after each request save the session,
    # pass the response to set client cookies
    # await app.session_interface.save(request, response)
    if request.path == '/operate/login' and request['session'].get(
            'user', None):
        await app.session_interface.save(request, response)
        import datetime
        response.cookies['quickReading_cookie'][
            'expires'] = datetime.datetime.now() + datetime.timedelta(days=30)
    elif request.path == '/register':
        try:
            response.cookies['reg_index'] = str(request['session']['index'][0])
        except KeyError as e:
            LOGGER.error(e)