def create_app(): # App app = Flask(__name__) # Secret key for validate Forms app.secret_key = os.getenv("SECRET_KEY_FORM") # Init social share component: share = Share() share.init_app(app) return app
def create_app(): # 1. 创建App对象 app = Flask(__name__) # 加载配置信息 app.config.from_pyfile("config.ini") # db初始化配置App db.init_app(app) # Session 对象, 存储到redis 中 # Session(app) # 添加csrf 保护 CKEditor(app) # 添加时间 Moment(app) # loginManager() 登录 对象 login_manager = LoginManager() login_manager.init_app(app) configure_uploads(app, uploaded_resume) configure_uploads(app, uploaded_logo) @login_manager.user_loader def user_loader(id): if User.query.get(id): return User.query.get(id) elif Company.query.get(id): return Company.query.get(id) app.add_template_filter(show_companys_status_name) app.add_template_filter(show_company_website) login_manager.login_view = 'index.login' # 基于jinja2模板创建社交共享组件 share = Share() share.init_app(app) # 注册蓝图 register_blueprints(app) # 添加数据库迁移工具 manager = Manager(app) # 生成 migrate 对象,用来迁移数据库 migrate = Migrate(app, db) # 添加db 命令 manager.add_command('db', MigrateCommand) return manager
def register_extensions(app): db.init_app(app) Migrate(app, db) moment = Moment(app) ckeditor = CKEditor(app) configure_uploads(app, uploaded_pdfs) patch_request_class(app, size=app.config["MAX_CONTENT_LENGTH"]) share = Share(app) login_manager = LoginManager() login_manager.init_app(app) @login_manager.user_loader def user_loader(id): if User.query.get(id): user = User.query.get(id) elif Company.query.get(id): user = Company.query.get(id) return user login_manager.login_view = "front.login" login_manager.login_message = "请登录而后访问网页"
def setUp(self): self.mobile_agent = { 'HTTP_USER_AGENT': 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) \ AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1' } app = Flask(__name__) app.testing = True self.share = Share(app) @app.route('/') def index(): return render_template_string( '{{ share.load() }}\n{{ share.create() }}') self.context = app.app_context() self.context.push() self.client = app.test_client()
def register_extensions(app): db.init_app(app) Migrate(app, db) CKEditor(app) Moment(app) share = Share() share.init_app(app) login_manager = LoginManager() login_manager.init_app(app) configure_uploads(app, uploaded_resume) configure_uploads(app, uploaded_logo) patch_request_class(app, app.config['UPLOADED_SIZE']) login_manager = LoginManager() login_manager.init_app(app) @login_manager.user_loader def user_loader(id): if User.query.get(id): return User.query.get(id) elif Company.query.get(id): return Company.query.get(id) login_manager.login_view = 'front.login'
def setUp(self): app = Flask(__name__) app.testing = True self.share = Share(app) @app.route('/') def index(): return render_template_string( '{{ share.load() }}\n{{ share.create()}}') self.context = app.app_context() self.context.push() self.client = app.test_client()
from flask_script import Manager from flask_migrate import Migrate, MigrateCommand # import flask_whooshalchemy as wa from flask import abort # CREATE INSTANCE app = Flask(__name__) WTF_CSRF_SECRET_KEY = os.urandom(32) app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY', 'WTF_CSRF_SECRET_KEY') app.config['RECAPTCHA_PUBLIC_KEY'] = os.environ.get('RECAPTCHA_SITE_KEY') app.config['RECAPTCHA_PRIVATE_KEY'] = os.environ.get('RECAPTCHA_SECRET_KEY') ckeditor = CKEditor(app) Bootstrap(app) share = Share(app) app.config['WHOOSH_BASE'] = 'whoosh' # EMAIL CONFIGURATION app.config['MAIL_SERVER'] = 'smtp.googlemail.com' app.config['MAIL_PORT'] = 587 app.config['MAIL_USE_TLS'] = True app.config['MAIL_USERNAME'] = os.environ.get('EMAIL_USER') app.config['MAIL_PASSWORD'] = os.environ.get('EMAIL_PASS') mail = Mail(app) # CREATE DB app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get("DATABASE_URL", 'sqlite:///ipop.db') app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app)
from app.utils import db, login_manager, get_cart, image_size, json_load from config import config from .assets import app_css, app_js, vendor_css, vendor_js from flask_session import Session from flask_whooshee import Whooshee # from app.models import Notification basedir = os.path.abspath(os.path.dirname(__file__)) mail = Mail() csrf = CSRFProtect() compress = Compress() images = UploadSet('images', IMAGES) docs = UploadSet('docs', ('rtf', 'odf', 'ods', 'gnumeric', 'abw', 'doc', 'docx', 'xls', 'xlsx', 'pdf')) share = Share() moment = Moment() jwt = JWTManager() sess = Session() whooshee = Whooshee() # Set up Flask-Login login_manager.session_protection = 'strong' login_manager.login_view = 'account.login' import app.models as models def create_app(config_name): app = Flask(__name__) app.config.from_object(config[config_name]) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
import os from flask import Flask, render_template, url_for, json, request from flask_assets import Environment, Bundle from flask_share import Share from app import app # load social sharing share = Share() share.init_app(app) # Tell flask-assets where to look for our coffeescript and sass files. assets = Environment(app) custom_css = Bundle('sass/main.scss', filters='scss', output='template/css/custom.css') assets.register('custom_css', custom_css) vendor_css = Bundle('css/milligram.min.css', output='template/css/vendor.css') assets.register('vendor_css', vendor_css) @app.route('/') def index(): SITE_ROOT = os.path.realpath(os.path.dirname(__file__)) json_url = open(os.path.join(SITE_ROOT, "static/data", "products.json"), "r") data = json.load(json_url) return render_template("index.html", products=data)
app = Flask(__name__) track_pageviews = False conf = DevelopmentConfig if os.environ.get( 'RWOLFF_ENV') == 'development' else ProductionConfig app.config['SQLALCHEMY_DATABASE_URI'] = conf.SQLALCHEMY_DATABASE_URI app.config['SECRET_KEY'] = 'e71b4f38dd5eb138f941907ec7ea6c06' app.config['PERMANENT_SESSION_LIFETIME'] = dt.timedelta( days=2922) # Set for 8 Years (8 * 365 + 2 leap year days) db = SQLAlchemy(app) bcrypt = Bcrypt(app) migrate = Migrate(app, db, compare_type=True) Share(app) class Anonymous(AnonymousUserMixin): def __init__(self): self.is_contributor = False self.is_admin = False login_manager = LoginManager(app) login_manager.anonymous_user = Anonymous login_manager.login_view = 'login' login_manager.login_message = u"Please login to view that page." login_manager.login_message_category = 'info' from rwolff import routes
class ShareTestCase(unittest.TestCase): def setUp(self): self.mobile_agent = { 'HTTP_USER_AGENT': 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) \ AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1' } app = Flask(__name__) app.testing = True self.share = Share(app) @app.route('/') def index(): return render_template_string( '{{ share.load() }}\n{{ share.create() }}') self.context = app.app_context() self.context.push() self.client = app.test_client() def tearDown(self): self.context.pop() def test_config(self): self.assertIn('SHARE_SITES', current_app.config) self.assertIn('SHARE_MOBILE_SITES', current_app.config) self.assertIn('SHARE_HIDE_ON_MOBILE', current_app.config) self.assertIn('SHARE_SERVE_LOCAL', current_app.config) self.assertEqual(current_app.config['SHARE_HIDE_ON_MOBILE'], False) def test_load(self): rv = self.share.load() self.assertIn('https://cdn.bootcss.com', rv) self.assertIn('social-share.min.js', rv) response = self.client.get('/') data = response.get_data(as_text=True) self.assertIn('social-share.min.js', data) def test_create(self): rv = self.share.create() self.assertIn('<div class="social-share', rv) response = self.client.get('/') data = response.get_data(as_text=True) self.assertIn('<div class="social-share', data) def test_custom_sites(self): current_app.config['SHARE_SITES'] = 'twiter, facebook' response = self.client.get('/') data = response.get_data(as_text=True) self.assertIn('data-sites="twiter, facebook"', data) def test_custom_mobile_sites(self): current_app.config['SHARE_MOBILE_SITES'] = 'twitter' response = self.client.get('/', environ_base=self.mobile_agent) data = response.get_data(as_text=True) self.assertIn('data-mobile-sites="twitter"', data) def test_hide_on_mobile_config(self): current_app.config['SHARE_HIDE_ON_MOBILE'] = True response = self.client.get('/') data = response.get_data(as_text=True) self.assertIn('social-share.min.js', data) self.assertIn('<div class="social-share', data) def test_create_on_mobile(self): current_app.config['SHARE_HIDE_ON_MOBILE'] = True response = self.client.get('/', environ_base=self.mobile_agent) data = response.get_data(as_text=True) self.assertIn('social-share.min.js', data) self.assertNotIn('<div class="social-share', data) def test_local_resources(self): current_app.config['SHARE_SERVE_LOCAL'] = True response = self.client.get('/share/static/css/share.min.css') self.assertNotEqual(response.status_code, 404)