Exemplo n.º 1
0
    def setUp(self):
        class TestConfig(object):
            SQLALCHEMY_TRACK_MODIFICATIONS = True
            SQLALCHEMY_DATABASE_URI = 'sqlite://'
            DEBUG = True
            TESTING = True
            MSEARCH_INDEX_NAME = mkdtemp()
            MSEARCH_BACKEND = 'whoosh'

        self.app = Flask(__name__)
        self.app.config.from_object(TestConfig())
        self.db = SQLAlchemy(self.app)
        self.search = Search(self.app, db=self.db)

        db = self.db

        class Post(db.Model, ModelSaveMixin):
            __tablename__ = 'basic_posts'
            __searchable__ = ['title', 'content']

            id = db.Column(db.Integer, primary_key=True)
            title = db.Column(db.String(49))
            content = db.Column(db.Text)

            def __repr__(self):
                return '<Post:{}>'.format(self.title)

        self.Post = Post
Exemplo n.º 2
0
def create_app(config_class=Config):
    """
    Initiate application and register the routes and handlers to blueprint
    :param config_class: setting for sql
    :return: application initiate and blueprint mapping
    """
    app = Flask(__name__)

    app.config.from_object(config_class)
    search = Search()
    db.init_app(app)
    bcrypt.init_app(app)
    login_manager.init_app(app)

    search.init_app(app)
    mail.init_app(app)

    from recipe_scheduler.main.routes import main
    from recipe_scheduler.categories.routes import categories
    from recipe_scheduler.events.routes import events
    from recipe_scheduler.users.routes import users
    from recipe_scheduler.sub.routes import sub
    from recipe_scheduler.uploads.routes import uploads
    from recipe_scheduler.errors.handlers import errors

    app.register_blueprint(main)
    app.register_blueprint(categories)
    app.register_blueprint(events)
    app.register_blueprint(users)
    app.register_blueprint(sub)
    app.register_blueprint(uploads)
    app.register_blueprint(errors)

    admin_control(app)

    return app
Exemplo n.º 3
0
def create_app(config_class=Config):
    """
    Initiate application and register the routes and handlers to blueprint
    :param config_class: setting for sql
    :return: application initiate and blueprint mapping
    """
    app = Flask(__name__)

    app.config.from_object(config_class)
    search = Search()
    db.init_app(app)
    bcrypt.init_app(app)
    login_manager.init_app(app)

    search.init_app(app)
    mail.init_app(app)

    from docmanage.main.routes import main
    from docmanage.users.routes import users
    from docmanage.reports.routes import reports
    from docmanage.sub_menu.routes import sub_menu
    from docmanage.contacts.routes import contacts
    from docmanage.errors.handlers import errors
    from docmanage.analytics.routes import analytics

    app.register_blueprint(main)
    app.register_blueprint(users)
    app.register_blueprint(reports)
    app.register_blueprint(sub_menu)
    app.register_blueprint(contacts)
    app.register_blueprint(errors)
    app.register_blueprint(analytics)

    admin_control(app)

    return app
Exemplo n.º 4
0
    def setUp(self):
        class TestConfig(object):
            SQLALCHEMY_TRACK_MODIFICATIONS = True
            SQLALCHEMY_DATABASE_URI = 'sqlite://'
            DEBUG = True
            TESTING = True
            MSEARCH_INDEX_NAME = mkdtemp()
            # MSEARCH_BACKEND = 'whoosh'

        self.app = Flask(__name__)
        self.app.config.from_object(TestConfig())
        # we need this instance to be:
        #  a) global for all objects we share and
        #  b) fresh for every test run
        global db
        db = SQLAlchemy(self.app)
        self.search = Search(self.app, db=db)
        self.Post = None
Exemplo n.º 5
0
import random


class Config(object):
    SQLALCHEMY_DATABASE_URI = 'sqlite:///buaa.db'
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    MSEARCH_BACKEND = 'whoosh'
    MSERACH_ENABLE = True


app = Flask(__name__)
app.secret_key = "d2035615-674e-4b0a-93e8-89a974f9b94e"
app.config.from_object(Config)
db.init_app(app)

search = Search(app, db)
migrate = Migrate(app, db, ChineseAnalyzer())


def dump_q(q: SQ):
    d = {
        "id": q.id,
        "question": q.QUESTION,
        "A": q.A,
        "B": q.B,
        "C": q.C,
        "D": q.D,
        "answer": q.ANSWER,
        "chapter": q.CHAPTER,
        "type": q.TYPE
    }
Exemplo n.º 6
0
from flask_sqlalchemy import SQLAlchemy
from flask_msearch import Search
from datetime import datetime
from blog import app
import hashlib

db = SQLAlchemy(app)

search = Search(db=db)
search.init_app(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)
    passwordhash = db.Column(db.String(150))

    def __init__(self, username, email, password):
        self.username = username
        self.email = email
        self.passwordhash = hashlib.sha512(password).hexdigest()

    def __repr__(self):
        return '<User %r>' % self.username


class Post(db.Model):
    __searchable__ = ['title', 'body']  # Allows searching with WhooshAlchemy
Exemplo n.º 7
0
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
from flask_bootstrap import Bootstrap
from flask_mail import Mail
from flask_pagedown import PageDown
from flask_msearch import Search
from flask_admin import Admin
from flask_avatars import Avatars
from flask_admin.contrib.sqla import ModelView
from flask_moment import Moment
from flask_babelex import Babel
from config import config

db = SQLAlchemy()
search1 = Search(db=db)
bootstrap = Bootstrap()
login_manager = LoginManager()
mail = Mail()
pagedown = PageDown()
login_manager.session_protection = 'strong'
login_manager.login_view = 'auth.login'
admin = Admin(name="后台管理")
moment = Moment()
babel = Babel()
avatars = Avatars()

from .models import User, Topic, TopicAppend, Node, Notify, Comment
from .utils import UserView, TopicView, TopicAppendView, CommentView, NodeView, NotifyView

Exemplo n.º 8
0
from flask import Flask, jsonify, make_response
from flask_sqlalchemy import SQLAlchemy
from flask_msearch import Search
from jieba.analyse import ChineseAnalyzer

#创建项目对象
app = Flask(__name__)

#加载配置文件内容
app.config.from_object('application.setting')  #模块下的setting文件名,不用加py后缀

#创建数据库对象
db = SQLAlchemy(app)

# 全文搜索
full_search = Search(analyzer=ChineseAnalyzer())
full_search.init_app(app)


def resp_200(data):
    return jsonify(data)


def resp_500(error_msg):
    return make_response(jsonify({'error': error_msg}), 500)


def resp_403(error_msg):
    return make_response(jsonify({'error': error_msg}), 403)

Exemplo n.º 9
0
from config import Config
from app.admin import MyIndexView
from app.admin import MyUserView
from app.admin import MyPostView
from app.admin import MyCommentView


bootstrap = Bootstrap()
db = SQLAlchemy()
migrate = Migrate()
login = LoginManager()
login.login_view = 'auth.login'
login.login_message = '请从此页面登录.'
mail = Mail()
moment = Moment()
search = Search()
admin = Admin(name='后台管理', template_mode='bootstrap3', index_view=MyIndexView(template='admin/welcome.html'))
babel = Babel()
ckeditor = CKEditor()

def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(config_class)

    bootstrap.init_app(app)
    db.init_app(app)
    migrate.init_app(app, db) 
    login.init_app(app)
    mail.init_app(app)
    moment.init_app(app)
    search.init_app(app)
Exemplo n.º 10
0
from mindmap import app, db
from utility import *
from models import *
from ..models import User
from ..mindmappage.models import MindMap
from qa_parser import *
from AnswerChecker import *

tutorial_page = Blueprint('tutorial_page', __name__,
                          template_folder=os.path.join(
                              os.path.dirname(__file__), 'templates'))


try:
    if not os.environ.get("DEBUG_MODE"):
        search = Search(db=db)#, analyzer=ChineseAnalyzer())
        search.init_app(app)
        search.create_index(update=True)
        pass
    else:
        pass
except LockError:
    pass


@tutorial_page.route('/editor.html')
def editor():
    meta = {'title': u'知维图在线编辑 -- 互联网学习实验室',
            'description': u'知维图在线编辑器,用于编写markdown格式教程,实时刷新',
            'keywords': u'zhimind mindmap 教程'}
    source = u"Title: 标题\nslug: your-title-in-english\n" + \
Exemplo n.º 11
0
from flask import Flask
from flask_cors import CORS
from flask_sqlalchemy import SQLAlchemy
from flask_msearch import Search
from jieba.analyse import ChineseAnalyzer

# app
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URL')

# SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled
# by default in the future.  Set it to True to suppress this warning.
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

# cors
CORS(app)

# db
db = SQLAlchemy(app)

# whoosh
app.config['MSEARCH_INDEX_NAME'] = 'msearch'
app.config['MSEARCH_BACKEND'] = 'whoosh'
app.config['MSEARCH_ENABLE'] = True
search = Search(app, db=db, analyzer=ChineseAnalyzer())

# estimate px and py
with open('data/position_data.json', 'r') as fr:
    POSITITION = json.load(fr)
Exemplo n.º 12
0
_config.SECRET_KEY = environ.get('SNITCH_SECRET_KEY')
_config.RECAPTCHA_PUBLIC_KEY = environ.get('SNITCH_RECAPTCHA_PUBLIC_KEY')
_config.RECAPTCHA_PRIVATE_KEY = environ.get('SNITCH_RECAPTCHA_PRIVATE_KEY')
_config.SQLALCHEMY_DATABASE_URI = f'mysql://{_config.DB_USER}:{_config.DB_PASS}@{_config.DB_HOST}:{_config.DB_PORT}/{_config.DB_NAME}'

if environ.get('FLASK_ENV') == 'development':
    _config.DEBUG = True
else:
    _config.DEBUG = False

app.config.from_object(_config)

db = SQLAlchemy(app)
migrate = Migrate(app, db)

searcher = Search(app)

# Configuracion de Login
login = LoginManager(app)
login.login_view = 'login_usuario'
login.login_message = 'Necesitas ingresar al sistema para ver esta pagina.'
login.login_message_category = 'warning'

admin = Admin(app, template_mode='bootstrap3')

minifier = HTMLMIN(app)

ID_ADMIN = 1
ID_USER = 2
ID_EDITOR = 3
Exemplo n.º 13
0
app.config[
    "SQLALCHEMY_DATABASE_URI"] = "mysql://*****:*****@93.179.119.153:3306/Demo"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
app.config["QLALCHEMY_COMMIT_ON_TEARDOWN"] = True
# 配置索引名称
app.config['MSEARCH_INDEX_NAME'] = "msearch"
# 配置主键
app.config['MSEARCH_PRIMARY_KEY'] = "id"
# 配置mSearch后端为whoosh
app.config['MSEARCH_BACKEND'] = "whoosh"
# 配置自动更新索引
app.config['MSEARCH_ENABLE'] = True

db = SQLAlchemy(app)
search = Search(db=db, analyzer=ChineseAnalyzer())
search.init_app(app)


class Faq(db.Model):
    """
    FAQ模型
    """
    __tablename__ = 'faq'
    __searchable__ = ['question']

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    question = db.Column(db.String(500))
    answer = db.Column(db.Text)

    def to_dict(self):
Exemplo n.º 14
0
csrf = CSRFProtect()
bootstrap = Bootstrap(
    css=('styles/monokai.css', 'styles/mine.css'),
    js=('styles/upload.js', 'styles/forums.js', 'styles/following.js',
        'styles/topic.js'),
    use_auth=True)
captcha = Captcha()
error = Error()
redis_data = Redis()
cache = Cache()
mail = Mail()
principal = Principal()
login_manager = register_login()
maple_app = App(json=CustomJSONEncoder)
middleware = Middleware()
search = Search(db=db)


class AvatarCache(Avatar):
    @cache.cached(
        timeout=180, key_prefix=lambda: "avatar:{}".format(request.url))
    def avatar(self, text, width=128):
        from flask import abort, make_response
        from flask_avatar.avatar import GenAvatar
        width_range = current_app.config.get('AVATAR_RANGE', [0, 512])
        if width < width_range[0] or width > width_range[1]:
            abort(404)
        stream = GenAvatar.generate(width, text)
        buf_value = stream.getvalue()
        response = make_response(buf_value)
        response.headers['Content-Type'] = 'image/jpeg'
Exemplo n.º 15
0
Arquivo: app.py Projeto: tawenga/kelis
from flask_msearch import Search
import os

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://*****:*****@localhost/kelis'
#app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DATABASE_URL']
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['MSEARCH_INDEX_NAME'] = 'whoosh_index'
app.config['MSEARCH_BACKEND'] = 'whoosh'
app.config['MSEARCH_ENABLE'] = True
manager = Manager(app)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
auth = HTTPBasicAuth()
search = Search()
search.init_app(app)


@app.route('/api/users', methods = ['POST'])
def new_user():
    username = request.json.get('username')
    password = request.json.get('password')
    if username is None or password is None:
        abort(400) # missing arguments
    if User.query.filter_by(username = username).first() is not None:
        abort(400) # existing user
    user = User(username = username)
    user.hash_password(password)
    db.session.add(user)
    db.session.commit()
Exemplo n.º 16
0
import os

basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.db'
app.config['SECRET_KEY'] = "cdkil1k12h31hlasdj"  # al azar, no importa. la cosa es poner algo.
app.config['UPLOADED_PHOTOS_DEST'] = os.path.join(basedir, 'static/images')

photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)
patch_request_class(app)

db = SQLAlchemy(app)
bcrypt = Bcrypt(app)
search = Search()
search.init_app(app)  # inicializacion de la funcion search.

login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'customerLogin'
login_manager.needs_refresg_message_category = 'danger'
login_manager.login_message = "Conectese por favor"

from shop.admin import routes
from shop.products import routes
from shop.carts import cart
from shop.customers import routes
from shop.Marcas import routes
from shop.graphs import routes
Exemplo n.º 17
0
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_moment import Moment
from flask_caching import Cache
from flask_apscheduler import APScheduler
from flask_msearch import Search
from jieba.analyse import ChineseAnalyzer
from flask_wtf.csrf import CSRFProtect

db = SQLAlchemy()
bcrypt = Bcrypt()
moment = Moment()
cache = Cache()
scheduler = APScheduler()
search = Search(analyzer=ChineseAnalyzer())
csrf = CSRFProtect()


def config_init(app):
    db.init_app(app)
    bcrypt.init_app(app)
    moment.init_app(app)
    cache.init_app(app)
    search.init_app(app)
    scheduler.init_app(app)
    scheduler.start()
    csrf.init_app(app)
Exemplo n.º 18
0
app = Flask(__name__)
# app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///myshop.db'
app.config[
    'SQLALCHEMY_DATABASE_URI'] = 'postgresql://*****:*****@localhost:5433/shop'
app.config['SECRET_KEY'] = 'sdfsdfsdwrt435342sasddf'
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['UPLOADED_PHOTOS_DEST'] = os.path.join(basedir, 'static/images')

photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)
patch_request_class(app)  # 16 megabytes

db = SQLAlchemy(app)
migrate = Migrate(app, db)
bcrypt = Bcrypt(app)
search = Search()
search.init_app(app)

login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'customer_login'
login_manager.needs_refresh_message_category = 'danger'
login_manager.login_message = u"Please login first"

# Import these modules at the bottom to avoid circular import
if True:
    from shop.products import routes
    from shop.admin.routes import mgmt_bp
    from shop.carts import carts
    from shop.customers import routes
    app.register_blueprint(mgmt_bp)
Exemplo n.º 19
0
logins = LoginManager(app)
logins.login_view = 'login.do_login'
logins.login_message_category = 'info'

# Sanitizer settings
app.config['BLEACH_ALLOWED_TAGS'] = ['a', 'abbr', 'acronym', 'b', 'blockquote',
                                    'code', 'em', 'i', 'li', 'ol', 'strong',
                                    'ul', 'p', 'h1', 'h2', 'h3', 'h4', 'h5',
                                    'h6', 'pre', 'small', 'table', 'thead',
                                    'tbody', 'tfoot', 'th', 'td', 'tr'
                                     ]
app.config['BLEACH_STRIP_MARKUP'] = True

# Default sanitizer. Should there be a need for
# custom sanitizers, routes should import their
# own bleach modules
# Clorox
scrub = Bleach(app)

# Search functions
search = Search(app)


# TODO: sheepyart: use flask-talisman instead for these
@app.after_request
def set_headers(response):
    response.headers['X-Frame-Options'] = 'sameorigin'
    response.headers['X-XSS-Protection'] = '1; mode=block'
    response.headers['X-Content-Type-Options'] = 'nosniff'
    return response