Exemple #1
0
from flask_ckeditor import CKEditor
from datetime import date
from werkzeug.security import generate_password_hash, check_password_hash
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import relationship
from flask_login import UserMixin, login_user, LoginManager, login_required, current_user, logout_user
from forms import CreatePostForm, UserForm, LoginForm, CommentForm
from flask_gravatar import Gravatar
from sqlalchemy.ext.declarative import declarative_base

# Base = declarative_base()


app = Flask(__name__)
app.config['SECRET_KEY'] = '8BYkEfBA6O6donzWlSihBXox7C0sKR6b'
ckeditor = CKEditor(app)

Bootstrap(app)

##CONNECT TO DB
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

login_manager = LoginManager()
login_manager.init_app(app)


@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))
Exemple #2
0
from flask_bootstrap import Bootstrap
from flask_ckeditor import CKEditor
from flask_mail import Mail
from flask_moment import Moment
from flask_login import LoginManager, AnonymousUserMixin
from flask_whooshee import Whooshee
from flask_wtf import CSRFProtect

bootstrap = Bootstrap()
moment = Moment()
login_manager = LoginManager()
csrf = CSRFProtect()
ckeditor = CKEditor()
mail = Mail()
whooshee = Whooshee()


@login_manager.user_loader
def get(uid):
    from CSDN.models import User
    return User.query.get(int(uid))


login_manager.login_view = 'auth.login'
login_manager.login_message = u'请先登录或注册'
login_manager.login_message_category = 'warning'


class Guest(AnonymousUserMixin):
    @property
    def is_admin(self):
Exemple #3
0
from flask import Flask,render_template,request,flash,session,redirect,jsonify
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash,check_password_hash
from flask_ckeditor import CKEditor
import os
import json
from datetime import datetime

app=Flask(__name__)
Bootstrap(app)
CKEditor(app)
app.config['SECRET_KEY']=os.urandom(20)
app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///blog.db'
db=SQLAlchemy(app)

class User(db.Model):
    id=db.Column(db.Integer,primary_key=True)
    username=db.Column(db.String(100),unique=True,nullable=False)
    firstname=db.Column(db.String(100),nullable=False)
    lastname=db.Column(db.String(100),nullable=False)
    email=db.Column(db.String(100),unique=True,nullable=False)
    password=db.Column(db.Text,nullable=False)


class Blogpost(db.Model):
    id=db.Column(db.Integer,primary_key=True)
    title=db.Column(db.String(1000),nullable=False)
    content=db.Column(db.Text,nullable=False)
    author=db.Column(db.String(100),default="Anonymous")
    authorid=db.Column(db.Integer)
Exemple #4
0
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
from flask_login import LoginManager
from flask_mail import Mail
from flask_migrate import Migrate
from flask_ckeditor import CKEditor
from flask_thumbnails import Thumbnail

# урезать количество запросов к странице
limiter = Limiter(key_func=get_remote_address)
# работа с логином и паролем
lm = LoginManager()
mail = Mail()
migrate = Migrate()
ck_editor = CKEditor()
thum = Thumbnail()
Exemple #5
0
# set request body's max length 限制请求报文的最大长度,单位为 byte
app.config['MAX_CONTENT_LENGTH'] = 3 * 1024 * 1024  # 3Mb

# Flask-CKEditor config
app.config['CKEDITOR_SERVE_LOCAL'] = True   # 使用扩展内置的本地资源
app.config['CKEDITOR_FILE_UPLOADER'] = 'upload_for_ckeditor'

# Flask-Dropzone config
app.config['DROPZONE_ALLOWED_FILE_TYPE'] = 'image'
app.config['DROPZONE_MAX_FILE_SIZE'] = 3
app.config['DROPZONE_MAX_FILES'] = 30

# Flask-WTF 使用 WTForms 内置的错误消息翻译
app.config["WTF_I18N_ENABLED"] = False

ckeditor = CKEditor(app)    # 实例化 CKEditor
dropzone = Dropzone(app)


@app.route('/', methods=['GET', 'POST'])
def index():
    return render_template('index.html')


@app.route('/html', methods=['GET', 'POST'])
def html():
    form = LoginForm()
    if request.method == 'POST':
        username = request.form.get('username')
        flash('Welcome home, %s!' % username)
        return redirect(url_for('index'))
Exemple #6
0
def create_app(config):
    app = Flask(__name__)
    config_name = config

    if not isinstance(config, str):
        config_name = os.getenv("FLASK_CONFIG", "default")

    app.config.from_object(Config[config_name])
    app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
    # not using sqlalchemy event system, hence disabling it

    Config[config_name].init_app(app)

    # Set up extensions
    mail.init_app(app)
    db.init_app(app)
    login_manager.init_app(app)
    csrf.init_app(app)
    compress.init_app(app)
    RQ(app)
    configure_uploads(app, images)
    configure_uploads(app, docs)
    CKEditor(app)
    share.init_app(app)
    Bootstrap(app)

    # Register Jinja template functions
    from .utils import register_template_utils

    register_template_utils(app)

    # Set up asset pipeline
    assets_env = Environment(app)
    dirs = ["assets/styles", "assets/scripts"]
    for path in dirs:
        assets_env.append_path(os.path.join(basedir, path))
    assets_env.url_expire = True

    assets_env.register("app_css", app_css)
    assets_env.register("app_js", app_js)
    assets_env.register("vendor_css", vendor_css)
    assets_env.register("vendor_js", vendor_js)

    # Configure SSL if platform supports it
    if not app.debug and not app.testing and not app.config["SSL_DISABLE"]:
        from flask_sslify import SSLify

        SSLify(app)

    # Create app blueprints
    from .main import main as main_blueprint

    app.register_blueprint(main_blueprint)

    from .public import public as public_blueprint

    app.register_blueprint(public_blueprint)

    from .account import account as account_blueprint

    app.register_blueprint(account_blueprint, url_prefix="/account")

    from .question import question as question_blueprint

    app.register_blueprint(question_blueprint, url_prefix="/question")

    from .answer import answer as answer_blueprint

    app.register_blueprint(answer_blueprint, url_prefix="/answer")

    from .project import project as project_blueprint

    app.register_blueprint(project_blueprint, url_prefix="/project")

    from .admin import admin as admin_blueprint

    app.register_blueprint(admin_blueprint, url_prefix="/admin")

    from .organisations import organisations as organisations_blueprint

    app.register_blueprint(organisations_blueprint, url_prefix="/organisations")

    from .blog import blog

    app.register_blueprint(blog, url_prefix="/blog")

    return app
Exemple #7
0
from flask import Flask
from flask_ckeditor import CKEditor
from flask_login import LoginManager


app = Flask(__name__)
app.config.from_pyfile('config.py')
ck = CKEditor(app)
login_manager = LoginManager(app)
login_manager.login_view = "login"




from app import views
from app import model
from app import commands

@login_manager.user_loader
def load_user(userid):
    return model.Admin.query.get(int(userid))
Exemple #8
0
from flask_admin import BaseView, expose
from flask_admin.model.template import EndpointLinkRowAction, LinkRowAction
from flask_ckeditor import CKEditor, CKEditorField  # 导入扩展类 CKEditor 和 字段类 CKEditorField
from flask_admin.contrib.fileadmin import FileAdmin
from flask_admin.contrib.sqla import ModelView
from flask_admin.actions import action
from flask_admin.base import AdminIndexView
from flask_admin.base import MenuLink

# Create Flask application
app = Flask(__name__)
app.config.from_pyfile('config.py')
# app.config['SQLALCHEMY_DATABASE_URI'] = 'jdbc:postgresql://postgres:@localhost:5432/policyreader'
# app.config['BABEL_DEFAULT_LOCALE'] = 'zh_CN'
db = SQLAlchemy(app)
ckeditor = CKEditor(app)  # 初始化扩展
# db.init_app(app)

# Define models
roles_people = db.Table(
    'roles_people',
    db.Column('people_id', db.Integer(), db.ForeignKey('people.id')),
    db.Column('roles_id', db.Integer(), db.ForeignKey('role.id')))


class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.Text(), unique=True)
    description = db.Column(db.Text())

    def __str__(self):
Exemple #9
0
from flask_mail import Mail
from flask_bootstrap import Bootstrap
from flask_moment import Moment
from flask_babel import Babel, lazy_gettext as _l
from config import Config

db = SQLAlchemy()
migrate = Migrate()
login = LoginManager()
login.login_view = 'auth.login'
login.login_message = _l('请先登陆')
mail = Mail()
bootstrap = Bootstrap()
moment = Moment()
babel = Babel()
ckeitor = CKEditor()


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

    db.init_app(app)
    migrate.init_app(app, db)
    login.init_app(app)
    mail.init_app(app)
    bootstrap.init_app(app)
    moment.init_app(app)
    babel.init_app(app)
    ckeitor.init_app(app)
Exemple #10
0
def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    # not using sqlalchemy event system, hence disabling it
    #'C:/Users/oem/Desktop/marketplace/marketplace/app/static/frontend/images/'
    #'C:/Users/oem/Desktop/marketplace/marketplace/appstatic/docs/'

    app.config['UPLOADED_IMAGES_DEST'] = basedir + 'static/frontend/images' if \
        not os.environ.get('UPLOADED_IMAGES_DEST') else os.path.dirname(os.path.realpath(__file__)) + os.environ.get(
        'UPLOADED_IMAGES_DEST')
    app.config['UPLOADED_DOCS_DEST'] = basedir + 'static/docs' if \
        not os.environ.get('UPLOADED_DOCS_DEST') else os.path.dirname(os.path.realpath(__file__)) + os.environ.get(
        'UPLOADED_DOCS_DEST')
    app.config['docs'] = app.config['UPLOADED_DOCS_DEST']

    app.config['CKEDITOR_SERVE_LOCAL'] = True
    app.config['CKEDITOR_HEIGHT'] = 400
    app.config['CKEDITOR_FILE_UPLOADER'] = 'upload'
    app.config['CKEDITOR_ENABLE_CSRF'] = True  # if you want to enable CSRF protect, uncomment this line
    app.config['UPLOADED_PATH'] = os.path.join(basedir, 'uploads')
    #app.config['WHOOSH_BASE']='whoosh'

    config[config_name].init_app(app)

    # Set up extensions
    mail.init_app(app)
    db.init_app(app)
    login_manager.init_app(app)
    csrf.init_app(app)
    compress.init_app(app)
    RQ(app)
    configure_uploads(app, (images))
    configure_uploads(app, docs)
    ckeditor = CKEditor(app)
    share.init_app(app)
    moment.init_app(app)
    jwt.init_app(app)
    sess.init_app(app)
    whooshee.init_app(app)
    # whooshee = Whooshee(app)
    # Register Jinja template functions
    from .utils import register_template_utils
    register_template_utils(app)

    # Set up asset pipeline
    assets_env = Environment(app)
    dirs = ['assets/styles', 'assets/scripts']
    for path in dirs:
        assets_env.append_path(os.path.join(basedir, path))
    assets_env.url_expire = True

    assets_env.register('app_css', app_css)
    assets_env.register('app_js', app_js)
    assets_env.register('vendor_css', vendor_css)
    assets_env.register('vendor_js', vendor_js)

    # Configure SSL if platform supports it
    if not app.debug and not app.testing and not app.config['SSL_DISABLE']:
        from flask_sslify import SSLify
        SSLify(app)

    # Create app blueprints
    from .blueprints.public import public as public_blueprint
    app.register_blueprint(public_blueprint)

    from .blueprints.seo_world import seo_world as seo_world_blueprint
    app.register_blueprint(seo_world_blueprint)

    from .blueprints.main import main as main_blueprint
    app.register_blueprint(main_blueprint)

    from .blueprints.account import account as account_blueprint
    app.register_blueprint(account_blueprint)

    from .blueprints.admin import admin as admin_blueprint
    app.register_blueprint(admin_blueprint, url_prefix='/admin')

    from .blueprints.marketplace import marketplace as marketplace_blueprint
    app.register_blueprint(marketplace_blueprint)

    from .blueprints.organisations import organisations as organisations_blueprint
    app.register_blueprint(organisations_blueprint, url_prefix='/organisations')

    from .blueprints.sitemaps import sitemaps as sitemaps_blueprint
    app.register_blueprint(sitemaps_blueprint)

    from .blueprints.api import api as apis_blueprint
    app.register_blueprint(apis_blueprint, url_prefix='/api')

    # main_api.init_app(app)
    app.jinja_env.globals.update(json_load=json_load, image_size=image_size, get_cart=get_cart)
    app.jinja_env.add_extension('jinja2.ext.do')

    @app.before_request
    def before_request():
        try:
            session['cart_id']
        except:
            u = uuid.uuid4()
            user_agent = request.headers.get('User-Agent')
            if user_agent is not None:
                user_agent = user_agent.encode('utf-8')
            base = 'cart: {0}|{1}|{2}'.format(_get_remote_addr(), user_agent, u)
            if str is bytes:
                base = text_type(base, 'utf-8', errors='replace')  # pragma: no cover
            h = sha512()
            h.update(base.encode('utf8'))
            session['cart_id'] = h.hexdigest()

    @app.cli.command()
    def reindex():
        with app.app_context():
            whooshee.reindex()

    @app.cli.command()
    def routes():
        """'Display registered routes"""
        rules = []
        for rule in app.url_map.iter_rules():
            methods = ','.join(sorted(rule.methods))
            rules.append((rule.endpoint, methods, str(rule)))

        sort_by_rule = operator.itemgetter(2)
        for endpoint, methods, rule in sorted(rules, key=sort_by_rule):
            route = '{:50s} {:25s} {}'.format(endpoint, methods, rule)
            print(route)


    @app.template_filter('product')
    def product(o):
        """check if object is user"""
        from app.models import MProduct
        return o.__class__ == MProduct

    whooshee.init_app(app)

    return app
Exemple #11
0
from flask import Flask, render_template, session
from flask_bootstrap import Bootstrap
from flask_mail import Mail
from flask_moment import Moment
from flask_sqlalchemy import SQLAlchemy
from config import config
from flask_login import LoginManager
from flask_ckeditor import CKEditor
from flask_babelex import Babel
from flask_uploads import UploadSet, IMAGES, configure_uploads, patch_request_class
import os.path as op

babel = Babel()
ckeditor = CKEditor()  #富文本编辑器
bootstrap = Bootstrap()
mail = Mail()
moment = Moment()
db = SQLAlchemy()
login_manager = LoginManager()
#不同安全等级  'strong':记录客户端IP地址和浏览器的用户代理信息,如果发现异动就登出用户
login_manager.session_protection = 'strong'
#设置登录页面的端点  蓝本名.函数名
login_manager.login_view = 'auth.login'

# 文件上传
photos = UploadSet('photos', IMAGES)

#view放在顶部会报错ImportError: cannot import name 'login_manager'
from .admin.views import MyView, UserView, PostView, FollowView
from flask_admin import Admin, AdminIndexView
from flask_admin.contrib.fileadmin import FileAdmin
Exemple #12
0
    @Time    : 2019/3/28 0028 下午 10:27
    @Comment : 该文件包含一些程序中的扩展内容
"""
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask_mail import Mail
from flask_ckeditor import CKEditor
from flask_moment import Moment
from flask_login import LoginManager
from flask_wtf import CSRFProtect

# 实例化扩展对象
bootstrap = Bootstrap()
db = SQLAlchemy()
mail = Mail()
ckEditor = CKEditor()
moment = Moment()
login_manager = LoginManager()
csrfProtect = CSRFProtect()


# 加载用户函数
# 每当调用current_user时会调用此函数,user_id是flask-login会帮我们在cookie的session中设置的一个记录
@login_manager.user_loader
def load_user(user_id):
	from flaskblog.models import Admin
	user = Admin().query.get(int(user_id))
	return user


login_manager.login_view = "my_auth.login"
Exemple #13
0
from flask import Flask, redirect, url_for, get_flashed_messages, send_from_directory, session
from flask import request, render_template

from form import LoginForm, UploadForm, RichTextForm
import os
from flask_ckeditor import CKEditor
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.secret_key = "secret string"
app.config['MAX_CONTENT_LENGTH'] = 3 * 1024 * 1024  #这个是3M 的大小,直接在这儿配置真是厉害。
app.config['UPLOAD_PATH'] = os.path.join(app.root_path,
                                         'uploads')  #设置文件上传到的位置。
ckeditor = CKEditor(app)  #这个是用来初始化的对吧。
db = SQLAlchemy(app)  #都需要这样来初始化它的啊
app.config['CKEDITOR_SERVE_LOCAL'] = True  #配置ckeditor
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv(
    'DATABASE_URL', 'sqlite:///' + os.path.join(app.root_path, 'data.db'))
#os.path.join  这个是找到这个下面的路径,SQLite 数据库的数量在win下是3个,在linux下是4个


@app.route('/')
def hello_world():
    # print(name)
    name = request.args.get("name")
    print(name)
    if name is None:
        name = request.cookies.get('name', "Human")
    return 'Hello World!' + name

Exemple #14
0
def create_app(config):
    app = Flask(__name__)
    config_name = config

    if not isinstance(config, str):
        config_name = os.getenv('FLASK_CONFIG', 'default')

    app.config.from_object(Config[config_name])
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    app.config['MAX_CONTENT_LENGTH'] = 1024 * 1024
    app.config['UPLOAD_EXTENSIONS'] = ['.jpg', '.png', '.gif']
    # not using sqlalchemy event system, hence disabling it
##    app.config['UPLOADED_IMAGES_DEST'] = curr+'/../../app/static/photo/'
##    app.config['UPLOADED_DOCS_DEST'] = curr+'/../../app/static/docs/'
##    app.config['UPLOADED_PATH'] = curr+'/../../app/static/images/'
    app.config['UPLOADS_DEFAULT_DEST'] = UPLOAD_FOLDER


    Config[config_name].init_app(app)

    # Set up extensions
    mail.init_app(app)
    db.init_app(app)
    login_manager.init_app(app)
    csrf.init_app(app)
    compress.init_app(app)
    RQ(app)
    configure_uploads(app, (images))
    configure_uploads(app, docs)
    CKEditor(app)

    # Register Jinja template functions
    from .utils import register_template_utils
    register_template_utils(app)

    # Set up asset pipeline
    assets_env = Environment(app)
    dirs = ['assets/styles', 'assets/scripts']
    for path in dirs:
        assets_env.append_path(os.path.join(basedir, path))
    assets_env.url_expire = True

    assets_env.register('app_css', app_css)
    assets_env.register('app_js', app_js)
    assets_env.register('vendor_css', vendor_css)
    assets_env.register('vendor_js', vendor_js)

    # Configure SSL if platform supports it
    if not app.debug and not app.testing and not app.config['SSL_DISABLE']:
        from flask_sslify import SSLify
        SSLify(app)

    # Create app blueprints


    from .blueprints.main import main as main_blueprint
    app.register_blueprint(main_blueprint)

    from .blueprints.public import public as public_blueprint
    app.register_blueprint(public_blueprint)

    from .blueprints.account import account as account_blueprint
    app.register_blueprint(account_blueprint, url_prefix='/account')

    from .blueprints.admin import admin as admin_blueprint
    app.register_blueprint(admin_blueprint, url_prefix='/admin')

    return app
Exemple #15
0
def _init_plugins(app):
    CKEditor(app)
    Dropzone(app)
    Session(app)