Пример #1
0
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
Пример #2
0
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
Пример #3
0
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 = "请登录而后访问网页"
Пример #4
0
    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'
Пример #6
0
    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()
Пример #7
0
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)
Пример #8
0
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
Пример #9
0
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)

Пример #10
0
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
Пример #11
0
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)