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
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
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
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
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 }
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
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
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)
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)
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" + \
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)
_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
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):
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'
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()
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
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)
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)
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