Esempio n. 1
0
def create_app():
    app = Flask(__name__)

    with app.app_context():
        flask_bcrypt.init_app(app)
        CORS(app)
        login_manager.init_app(app)
        app.config[
            'SECRET_KEY'] = 'the quick brown fox jumps over the lazy dog'

        cors = CORS(app, resources={r"/*": {"origins": "*"}})

        ApiDoc(app)

        api = Api(app)
        app.config['API_DOC_MEMBER'] = ['api', 'platform']

        # from backend.resources.user import user
        # app.register_blueprint(user)

        # from backend.resources.spring import spring
        # app.register_blueprint(spring)

        from backend.resources.data import data
        app.register_blueprint(data)

        app.config.from_object(config)
    return app
Esempio n. 2
0
def create_app(config_name=None, config_path=None):
    app = Flask(
        __name__,
        template_folder=subprocess.os.path.join(subprocess.os.getcwd(),
                                                '\\template\\'),
        static_folder=subprocess.os.path.join(subprocess.os.getcwd(),
                                              '\\static\\'),
    )
    app.config.from_object(config)
    db.init_app(app, )
    api.init_app(app)
    ApiDoc(app, title='接口文档', version='1.0.0')
    # 读取配置文件
    if not config_path:
        config_path = subprocess.os.path.join(subprocess.os.getcwd(),
                                              'config\\config.yaml')
    if not config_name:
        config_name = 'PRODUCTION'
    conf = read_yaml(config_name, config_path)
    app.config.update(conf)
    if not subprocess.os.path.exists(app.config['LOGGING_PATH']):
        # 日志文件目录
        subprocess.os.mkdir(app.config['LOGGING_PATH'])
    # 日志设置
    with open(app.config['LOGGING_CONFIG_PATH'], 'r', encoding='utf-8') as f:
        dict_conf = yaml.safe_load(f.read())
    logging.config.dictConfig(dict_conf)  # 载入日志配置
    return app, api
Esempio n. 3
0
def create_app():
    app = Flask(__name__, static_folder='../static', static_url_path='', template_folder='../static')

    CORS(app, resources={r"/*": {"origins": "*"}}, send_wildcard=True)

    # database_url = os.environ.get('OC_DB_URL', "postgresql://*****:*****@127.0.0.1:5432/manager")
    # print("database_url:{}".format(database_url))

    # app.config["SQLALCHEMY_DATABASE_URI"] = database_url
    # app.config["SECRET_KEY"] = '1c0049e9387f42f2a5da2ec692f3c6d0'
    # app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
    app.config["API_DOC_MEMBER"] = ['api/cases', 'api/images', 'api/tasks']

    app_settings = os.getenv('APP_SETTINGS', 'app.config.DevelopmentConfig')
    app.config.from_object(app_settings)

    ApiDoc(app)

    register_blueprints(app)

    return app
# Custom url_prefix
# app.config["API_DOC_URL_PREFIX"] = "/docs/api"

# Name of the Api blueprint to be displayed
app.config["API_DOC_MEMBER"] = ["api", "platform"]

# Name of the Submembers Api function to be excluded
# app.config["API_DOC_MEMBER_SUB_EXCLUDE"] = ["delete_data"]

# Disable markdown processing for all documents
# app.config["API_DOC_ALL_MD"] = False

ApiDoc(
    app,
    title="Sample App",
    version="1.0.0",
    description="A simple app API",
)

api = Blueprint("api", __name__)
platform = Blueprint("platform", __name__)


@api.route("/add_data", methods=["POST"])
def add_data():
    """Add some data

    @@@
    ### args
    |  args | required | request type | type |  remarks |
    |-------|----------|--------------|------|----------|
Esempio n. 5
0
from flask import Flask, jsonify
from flask.views import MethodView
from flask_docs import ApiDoc

app = Flask(__name__)

# Using CDN
# app.config['API_DOC_CDN'] = True

# Disable document pages
# app.config['API_DOC_ENABLE'] = False

# RESTful Api documents to be excluded
app.config['RESTFUL_API_DOC_EXCLUDE'] = []

ApiDoc(app, title='Sample App Restful Methodview', version='0.1.4')


class TodoList(MethodView):
    """Manage todolist"""
    def put(self):
        """Change the data
        """
        return jsonify({'todos': 'put todolist'})

    def delete(self):
        """Delete the data
        """
        return jsonify({'todos': 'delete todolist'})

Esempio n. 6
0
    Last modified on 2020/10/29
Author:
    kwkw
'''

import sys
sys.path.append('.')

import unittest
from flask import Flask, Blueprint
from flask_restful import Resource, Api
from flask_docs import ApiDoc

app = Flask(__name__)
app.config['API_DOC_MEMBER'] = ['api']
ApiDoc(app, title='Test App')


class AcceptTestCase(unittest.TestCase):
    def test_accept_docs_api(self):

        with app.test_client() as client:
            res = client.get('/docs/api/')
            self.assertEqual(res.status_code, 200)
            self.assertEqual(res.content_type, 'text/html; charset=utf-8')

    def test_accept_docs_api_data(self):

        with app.test_client() as client:
            res = client.get('/docs/api/data')
            self.assertEqual(res.status_code, 200)
Esempio n. 7
0
import sys

sys.path.append(".")

import unittest

from flask import Blueprint, Flask
from flask_restful import Api, Resource

from flask_docs import ApiDoc, change_doc

app = Flask(__name__)
app.config["API_DOC_METHODS_LIST"] = ["GET", "POST", "DELETE"]
app.config["API_DOC_MEMBER"] = ["api", "platform"]
app.config["API_DOC_RESTFUL_EXCLUDE"] = ["todolistexclude"]
ApiDoc(app, title="Test App")


class AcceptTestCase(unittest.TestCase):
    def test_accept_docs_api(self):

        with app.test_client() as client:
            res = client.get("/docs/api/")
            self.assertEqual(res.status_code, 200)
            self.assertEqual(res.content_type, "text/html; charset=utf-8")

    def test_accept_docs_api_data(self):

        with app.test_client() as client:
            res = client.get("/docs/api/data")
            self.assertEqual(res.status_code, 200)
Esempio n. 8
0
    register_blueprints(app)

init_app(flask_app)

'''
设置日志
'''
if flask_app.debug is not True:
    import logging
    from logging.handlers import RotatingFileHandler
    file_handler = RotatingFileHandler('python.log', maxBytes=1024 * 1024 * 100, backupCount=20)
    file_handler.setLevel(logging.ERROR)
    flask_app.logger.addHandler(file_handler)

    file_handler.setFormatter(logging.Formatter(
        '%(asctime)s %(levelname)s: %(message)s '
        '[in %(pathname)s:%(lineno)d]'
    ))

    @flask_app.errorhandler(500)
    def internal_error(exception):
        flask_app.logger.error(exception)


ApiDoc(flask_app)


if __name__ == '__main__':
    flask_app.config['DEBUG'] = True
    flask_app.run()
Esempio n. 9
0
app = create_app()
app.secret_key = "ABCabc123"
app.debug = True

app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///test.db"

# 本地加载
# app.config['API_DOC_CDN'] = False

# 禁用文档页面
# app.config['API_DOC_ENABLE'] = False

# 需要显示文档的 Api
app.config["API_DOC_MEMBER"] = ["api", "platform"]

ApiDoc(app, title="Sample App", version="1.0.0")

api = Blueprint("api", __name__)
platform = Blueprint("platform", __name__)

#--结束文档设置 --

db = SQLAlchemy(app)

stored_user = None

login_manager = flask_login.LoginManager(app)
# user_pass = {}

# https://pypi.org/project/sqlitedict/
user_pass = SqliteDict('my_db.sqlite', autocommit=True)
Esempio n. 10
0
api.add_resource(user.UserInfo, '/user/<string:username>/info')
api.add_resource(user.ReportBind, '/user/reportbind')
api.add_resource(user.ModifyInfo, '/user/modifyinfo')
#admin
api.add_resource(admin.AdminTest, '/admin/test')
api.add_resource(admin.ShowAllReports, '/admin/report/all')
api.add_resource(admin.ShowUnhandleReports, '/admin/report/unhandle')
api.add_resource(admin.DenyReport, '/admin/report/deny')
api.add_resource(admin.PassReport, '/admin/report/pass')
# api.add_resource(admin.CancelBindAuthor, '/admin/cancel_bind_author')   #取消用户认领
api.add_resource(admin.ShowAllUsers, '/admin/user/all')
api.add_resource(admin.DeleteUser, '/admin/user/delete')
#subscribe
api.add_resource(subscribe.SubscribeAuthor, '/subscribe/author')
api.add_resource(subscribe.SubscribePaper, '/subscribe/paper')
api.add_resource(subscribe.CancelSubscribeAuthor, '/subscribe/cancel/author')
api.add_resource(subscribe.CancelSubscribePaper, '/subscribe/cancel/paper')
api.add_resource(subscribe.ShowSubscribeAuthor, '/subscribe/show/author')
api.add_resource(subscribe.ShowSubscribePaper, '/subscribe/show/paper')
api.add_resource(subscribe.AuthorIsSubscribed, '/subscribe/author/subscribed')
api.add_resource(subscribe.PaperIsSubscribed, '/subscribe/paper/subscribed')
api.add_resource(subscribe.SubscribeFund, '/subscribe/fund')
api.add_resource(subscribe.CancelSubscribeFund, '/subscribe/cancel/fund')
api.add_resource(subscribe.ShowSubscribeFund, '/subscribe/show/fund')
api.add_resource(subscribe.FundIsSubscribed, '/subscribe/fund/subscribed')
#文档生成
ApiDoc(app, title='Gugoo API Doc', version='0.1.1')
#压缩
Compress(app)
#跨域
CORS(app, supports_credentials=True)
Esempio n. 11
0
from flask_restful import Resource, Api
from flask_docs import ApiDoc

app = Flask(__name__)

# Using CDN
# app.config['API_DOC_CDN'] = True

# Disable document pages
# app.config['API_DOC_ENABLE'] = False

# RESTful Api documents to be excluded
app.config['RESTFUL_API_DOC_EXCLUDE'] = []

restful_api = Api(app)
ApiDoc(app, title='Sample App Restful', version='1.0.0')


class TodoList(Resource):
    """Manage todolist"""
    def post(self):
        """Submission of data

        Args:
            pass
    
        Returns:
            pass

        """
        return {'todos': 'post todolist'}
Esempio n. 12
0
# Custom url_prefix
# app.config["API_DOC_URL_PREFIX"] = "/docs/api"

# RESTful Api class name to exclude
# app.config["API_DOC_RESTFUL_EXCLUDE"] = ["Todo"]

# Auto generating request args markdown
app.config["API_DOC_AUTO_GENERATING_ARGS_MD"] = True

# Disable markdown processing for all documents
# app.config["API_DOC_ALL_MD"] = False

restful_api = Api(app)
ApiDoc(
    app,
    title="Sample App Restful",
    version="1.0.0",
    description="A simple app restful API",
)


class Todo(Resource):
    """Manage todo"""
    def post(self):
        """Add todo

        ### request
        ```json
        {"name": "xx", "type": "code"}
        ```

        ### return
Esempio n. 13
0
# app.config["API_DOC_CDN"] = True

# Disable document pages
# app.config["API_DOC_ENABLE"] = False

# Methods allowed to be displayed
# app.config["API_DOC_METHODS_LIST"] = ["GET", "POST", "PUT", "DELETE", "PATCH"]

# Custom url_prefix
# app.config["API_DOC_URL_PREFIX"] = "/docs/api"

# RESTful Api documents to be excluded
# app.config["API_DOC_RESTFUL_EXCLUDE"] = ["todo"]

restful_api = Api(app)
ApiDoc(app, title="Sample App Restful", version="1.0.0")


class Todo(Resource):
    """Manage todo"""
    def post(self):
        """Add todo

        @@@
        ### description
        > Add todo

        ### args
        |  args | nullable | request type | type |  remarks |
        |-------|----------|--------------|------|----------|
        |  name |  false   |    body      | str  | todo name |
Esempio n. 14
0
# Methods allowed to be displayed
# app.config["API_DOC_METHODS_LIST"] = ["GET", "POST", "PUT", "DELETE", "PATCH"]

# Custom url_prefix
# app.config["API_DOC_URL_PREFIX"] = "/docs/api"

# RESTful Api class name to exclude
# app.config["API_DOC_RESTFUL_EXCLUDE"] = ["TodoList"]

# Disable markdown processing for all documents
# app.config["API_DOC_ALL_MD"] = False

ApiDoc(
    app,
    title="Sample App MethodView",
    version="1.0.0",
    description="A simple app MethodView API",
)


class TodoList(MethodView):
    """Manage todolist"""
    def put(self):
        """Change the data"""

        return jsonify({"todos": "put todolist"})

    def delete(self):
        """Delete the data"""

        return jsonify({"todos": "delete todolist"})
Esempio n. 15
0
from flask_restful import Resource, Api
from flask_docs import ApiDoc

app = Flask(__name__)

# Using CDN
# app.config['API_DOC_CDN'] = True

# Disable document pages
# app.config['API_DOC_ENABLE'] = False

# RESTful Api documents to be excluded
app.config['RESTFUL_API_DOC_EXCLUDE'] = []

restful_api = Api(app)
ApiDoc(app, title='Sample App Restful', version='0.1.4')


class TodoList(Resource):
    """Manage todolist"""

    def post(self):
        """Submission of data

        Args:
            pass
    
        Returns:
            pass

        """
from flask import Flask, jsonify
from flask.views import MethodView
from flask_docs import ApiDoc

app = Flask(__name__)

# Using CDN
# app.config['API_DOC_CDN'] = True

# Disable document pages
# app.config['API_DOC_ENABLE'] = False

# RESTful Api documents to be excluded
app.config['RESTFUL_API_DOC_EXCLUDE'] = []

ApiDoc(app, title='Sample App Restful Methodview', version='1.0.0')


class TodoList(MethodView):
    """Manage todolist"""

    def put(self):
        """Change the data
        """
        return jsonify({'todos': 'put todolist'})

    def delete(self):
        """Delete the data
        """
        return jsonify({'todos': 'delete todolist'})
Esempio n. 17
0
# Methods allowed to be displayed
# app.config["API_DOC_METHODS_LIST"] = ["GET", "POST", "PUT", "DELETE", "PATCH"]

# Custom url_prefix
# app.config["API_DOC_URL_PREFIX"] = "/docs/api"

# Api Document needs to be displayed
app.config["API_DOC_MEMBER"] = ["api"]

# Disable markdown processing for all documents
# app.config["API_DOC_ALL_MD"] = False

ApiDoc(
    app,
    title="Sample App",
    version="1.0.0",
    description="A simple app decorator demo",
)

api = Blueprint("api", __name__)

return_json_str = '{"code": xxxx, "msg": "xxx", "data": null}'


@api.route("/add_data", methods=["GET"])
@ApiDoc.change_doc({"return_json": return_json_str})
def add_data():
    """Add some data

    @@@
    ### return
    kwkw
"""

import sys

sys.path.append(".")

import unittest

from flask import Flask

from flask_docs import ApiDoc

app = Flask(__name__)
app.config["API_DOC_ENABLE"] = "true"

apidoc = ApiDoc(title="Test App")


class ConfigTestCase(unittest.TestCase):
    def test_api_config_fail(self):

        try:
            apidoc.init_app(app)
        except ValueError as e:
            self.assertEqual(type(e), ValueError)


if __name__ == "__main__":
    unittest.main()
Esempio n. 19
0
from flask_docs import ApiDoc
from flask_mail import Mail

# celery!
# from celery import Celery
# celery = Celery(__name__, broker=Config.CELERY_BROKER_URL, backend=Config.CELERY_RESULT_BACKEND)
# from flask import current_app
# from app.Extensions import celery
# celery.conf.update(app.config)
# @celery.task()
# with app.app_context():
# delay

db = SQLAlchemy()
mail = Mail()
cache = Cache()
apidoc = ApiDoc()

# 初始化
def config_extensions(app):

    CORS(app, supports_credentials=True)

    cache.init_app(app, config={'CACHE_TYPE': 'simple'})

    db.init_app(app)
    
    mail.init_app(app)

    apidoc.init_app(app)
Esempio n. 20
0
from flask import Flask, render_template, jsonify, Blueprint
from flask_docs import ApiDoc

app = Flask(__name__)

# Using CDN
# app.config['API_DOC_CDN'] = True

# Disable document pages
# app.config['API_DOC_ENABLE'] = False

# Api Document needs to be displayed
app.config['API_DOC_MEMBER'] = ['api', 'platform']

ApiDoc(app, title='Sample App', version='1.0.0')

api = Blueprint('api', __name__)
platform = Blueprint('platform', __name__)


@api.route('/add_data', methods=['POST'])
def add_data():
    """Add some data

    Add some data in this routing

    Args:
        pass
 
    Returns:
Esempio n. 21
0
from flask import Flask, render_template, jsonify, Blueprint
from flask_docs import ApiDoc

app = Flask(__name__)

# Using CDN
# app.config['API_DOC_CDN'] = True

# Disable document pages
# app.config['API_DOC_ENABLE'] = False

# Api Document needs to be displayed
app.config['API_DOC_MEMBER'] = ['api', 'platform']

ApiDoc(app, title='Sample App', version='0.1.4')

api = Blueprint('api', __name__)
platform = Blueprint('platform', __name__)


@api.route('/add_data', methods=['POST'])
def add_data():
    """Add some data

    Add some data in this routing

    Args:
        pass
 
    Returns:
Esempio n. 22
0
from flask_apscheduler import APScheduler
from config import Config

# https://semver.org/lang/zh-CN/
__version__ = '0.4.4'
db = SQLAlchemy()
migrate = Migrate()
login = LoginManager()
login.login_view = 'auth.login'
login.login_message = _l('Please log in to access this page.')
mail = Mail()
bootstrap = Bootstrap()
babel = Babel()
csrf = CSRFProtect()
cors = CORS()
doc = ApiDoc()
scheduler = APScheduler()


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)
    babel.init_app(app)
    csrf.init_app(app)
    cors.init_app(app, supports_credentials=True)
    doc.init_app(app, title=app.config.get('APP_NAME'), version=__version__)
Esempio n. 23
0

@app.route('/check', methods=['GET', 'POST'])
def hello_world():
    api = ApiAuth.query.filter_by(access_key='123').first()
    print(api)
    return str(api)


def echo():
    print(1)


app.config.from_object(config)
app.app_context().push()
ApiDoc(app)
db.init_app(app)

# 预读数据到缓存中
ScanEthereumChain.read_address()
ScanEthereumChain.read_coins()

scheduler = APScheduler()
scheduler.init_app(app)
scheduler_lock = ProcessLock(scheduler.start,
                             filename='wallet-manage-scheduler.lock')
scheduler_lock.lock_run()

if __name__ == '__main__':
    app.run(port=config.PORT)
Esempio n. 24
0
# Using CDN
# app.config["API_DOC_CDN"] = True

# Disable document pages
# app.config["API_DOC_ENABLE"] = False

# Methods allowed to be displayed
# app.config["API_DOC_METHODS_LIST"] = ["GET", "POST", "PUT", "DELETE", "PATCH"]

# Custom url_prefix
# app.config["API_DOC_URL_PREFIX"] = "/docs/api"

# RESTful Api documents to be excluded
# app.config["API_DOC_RESTFUL_EXCLUDE"] = ["todolist"]

ApiDoc(app, title="Sample App Restful Methodview", version="1.0.0")


class TodoList(MethodView):
    """Manage todolist"""
    def put(self):
        """Change the data"""

        return jsonify({"todos": "put todolist"})

    def delete(self):
        """Delete the data"""

        return jsonify({"todos": "delete todolist"})