Пример #1
0
def user(username, page=1):
    user = User.query.filter_by(username=username).first_or_404()
    userid = user.id
    posts = Post.query.order_by(Post.timestamp.desc()).filter_by(
        user_id=userid).paginate(page, 4, False)
    index_all(current_app)
    return render_template('user/user.html', user=user, posts=posts)
Пример #2
0
 def search_pools(self):
     data = request.get_json()
     search_query = data.get('search')
     index_all(app)
     try:
         search_result = Pool.query.whoosh_search(search_query).all()
     except:
         return jsonify({'message': 'No match found', 'status': 404})
     hold = []
     keys = [
         "pool_id", "pool_name", "pool_address", "location_lat",
         "location_long", "opening_time", "closing_time", "size", "depth",
         "description", "weekday_fee", "weekend_fee", "availale",
         "pool_thumbnail"
     ]
     for result in search_result:
         info = [
             result.pool_id, result.pool_name, result.pool_address,
             result.location_lat, result.location_long, result.opening_time,
             result.closing_time, result.size, result.depth,
             result.description, result.weekday_fee, result.weekend_fee,
             result.available, result.pool_thumbnail
         ]
         hold.append(dict(zip(keys, info)))
     return jsonify({'data': hold, 'status': 200})
Пример #3
0
def search_venues():
    index_all(app)
    search_term = request.form.get('search_term', '')
    result = Venue.query.whoosh_search(search_term).all()
    count = len(result)
    return render_template('pages/search_venues.html',
                           results=result,
                           search_term=request.form.get('search_term', ''),
                           count=count)
Пример #4
0
def home():
    # Debug: first = Good.query.order_by(Good.id).first()
    # Debug: print(first)
    '''
    The view function to show home page.
    :return: a html page of home in which page show the items in database.
    '''
    # 得到分页参数
    try:
        page = int(request.args.get('page', 1))
    except ValueError:
        page = 1
    # 设置每页显示的物品数量
    per_page = 6
    # 实例化搜索表单
    form = SearchItems()
    # 计算页偏移
    offset = (page - 1) * per_page
    # 处理提交后的表单
    if form.validate_on_submit():
        # 建立goods表的索引
        flask_whooshalchemyplus.index_all(current_app)
        # 获取搜索关键字,并使用关键字查询商品
        key = form.search.data
        show_goods = Good.query.whoosh_search(key, or_=True)\
            .limit(per_page).offset(offset)
        # 计算查询得到的表项的总数
        total = Good.query.whoosh_search(key, or_=True).count()
        # 得到分页对象
        pagination = Pagination(page=page,
                                total=total,
                                per_page=per_page,
                                search=True,
                                found=total,
                                record_name='goods',
                                css_framework='bootstrap3')

    else:
        total = len(Good.query.all())
        show_goods = Good.query.limit(per_page).offset(offset)
        pagination = Pagination(page=page,
                                total=total,
                                per_page=per_page,
                                search=False,
                                record_name='goods',
                                css_framework='bootstrap3')
    # Debug: page = request.args.get(get_page_parameter(), type=int, default=1)
    #        print(total)
    #        print(pagination.links)

    # 返回渲染后的html
    return render_template('goods/home.html',
                           form=form,
                           page=page,
                           per_page=per_page,
                           show_goods=show_goods,
                           pagination=pagination)
Пример #5
0
def create_app():
    '''工厂函数,创建APP实例'''
    setupLogging(config[APP_ENV].LOGGING_LEVEL)

    app = Flask(__name__)
    app.config.from_object(config[APP_ENV])

    CORS(app, resources=r'/*')

    db.init_app(app)
    with app.app_context():
        index_all(app)
    # flask_whooshalchemyplus.init_app(app)

    from app.api_v1 import api
    app.register_blueprint(api, url_prefix='/api/v1.0')

    return app
Пример #6
0
def index(page=1):
    if current_user.is_anonymous:
        posts = Post.query.order_by(Post.timestamp.desc()).paginate(
            page, 4, False)
        recent, top_tags = sidebar_data()
        index_all(current_app)
        return render_template('base/index.html',
                               posts=posts,
                               recent=recent,
                               top_tags=top_tags)
    else:
        role = UserRole.query.filter_by(user_id=current_user.id).first()
        posts = Post.query.order_by(Post.timestamp.desc()).paginate(
            page, 4, False)
        recent, top_tags = sidebar_data()
        index_all(current_app)
        return render_template('base/index.html',
                               posts=posts,
                               recent=recent,
                               top_tags=top_tags,
                               role=role)
Пример #7
0
from datetime import datetime
from flaskblog import db, login_manager
from flask_login import UserMixin
import flask_whooshalchemyplus as wa
from flask_whooshalchemyplus import index_all
from flaskblog import app

index_all(app)


@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))


class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20),
                           nullable=False,
                           default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"


class Post(db.Model):
    __searchable__ = ['title', 'content']
Пример #8
0
kwargs = {
    'methods': frozenset(['GET']),
    'allow_functions': True,
    'results_per_page': 10
}

# create API endpoint for each model
for model in model_objects:
    manager.create_api(model, **kwargs)

for model in model_objects:
    whooshalchemy.whoosh_index(app, model)

with app.app_context():
    whooshalchemy.init_app(app)
    whooshalchemy.index_all(app)

# unpaginated API endpoints


@app.route('/api/unpaginated/parks')
def unpaginated_parks():
    parks_list = []
    parks = db.session.query(Park).all()
    for park in parks:
        parks_dict = {}
        parks_dict['id'] = park.id
        parks_dict['name'] = park.name
        parks_dict['website'] = park.website
        parks_dict['city_id'] = park.city_id
        parks_dict['address'] = park.address
Пример #9
0
def search_index():
    """文章搜索首页"""
    #flask_whooshalchemyplus.index_one_model(Essay) 0.7.5版本
    flask_whooshalchemyplus.index_all(app)  # 0.7.4
    return render_template('html/search_index.html')
Пример #10
0
def build_index():
    '''Create whoosh index.'''
    import flask_whooshalchemyplus as whooshalchemy
    if os.path.exists(app.config['WHOOSH_BASE']):
        shutil.rmtree(app.config['WHOOSH_BASE'])
    whooshalchemy.index_all(app)
Пример #11
0
def search():
    index_all(current_app)  #建立查找索引
    if not g.search_form.validate_on_submit():
        return redirect(url_for('.blog'))
    return redirect(url_for('.search_results',
                            query=g.search_form.search.data))
Пример #12
0
 def whoosh_index_all():
     """Index searcheable models for Whoosh """
     index_all(app)
Пример #13
0
# -*- coding: utf-8 -*-
# 本部分完成项目的初始化

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_login import LoginManager
from flask_migrate import Migrate, MigrateCommand
import flask_whooshalchemyplus

app = Flask(__name__)  # 启动app
app.config.from_object('config')  # 加载设置

db = SQLAlchemy(app)  # 链接数据库

manager = Manager(app)
lm = LoginManager()  # 启动login第三方模块
lm.session_protection = 'basic'
lm.login_view = 'login'  # 登记login的html文件
lm.init_app(app)

migrate = Migrate(app, db)
manager.add_command('db', MigrateCommand)

flask_whooshalchemyplus.init_app(app)
flask_whooshalchemyplus.index_all(app)
from app import views  # 加载主逻辑views