def test_blueprint_errorhandler(): app = Flagon() bp = Blueprint('foo', url_prefix='/foo') @bp.route('/bar') def bar(): abort(400) return 'bar' @bp.route('/bar2') def bar2(): i = 1/0 return 'bar' @bp.errorhandler(400) def bp_errorhandler400(exception): return 'bar' @bp.errorhandler(Exception) def bp_errorhandler(exception): return 'bar2' app.register_blueprint(bp) env = copy.deepcopy(env1) env['PATH_INFO'] = '/foo/bar' assert app(env, start_response)[0] == b'bar' env = copy.deepcopy(env1) env['PATH_INFO'] = '/foo/bar2' assert app(env, start_response)[0] == b'bar2'
def test_blueprint(): app = Flagon() bp = Blueprint('foo', url_prefix='/foo') @bp.route('/bar') def bar(): return 'bar' @bp.route('/bar2') def bar2(): return 'bar2' app.register_blueprint(bp) app.register_blueprint(bp, url_prefix='/foo2') env = copy.deepcopy(env1) env['PATH_INFO'] = '/foo/bar' assert app(env, start_response)[0] == b'bar' env = copy.deepcopy(env1) env['PATH_INFO'] = '/foo/bar2' assert app(env, start_response)[0] == b'bar2' env = copy.deepcopy(env1) env['PATH_INFO'] = '/foo2/bar' assert app(env, start_response)[0] == b'bar' env = copy.deepcopy(env1) env['PATH_INFO'] = '/foo2/bar2' assert app(env, start_response)[0] == b'bar2'
def test_basic_blueprint(): app = Flagon() bp = Blueprint('foo', url_prefix='/foo') @bp.before_request def bp_before_request(): pass @bp.route('/bar') def bar(): return 'bar' @bp.before_app_request def bp_app_before_request(): pass @bp.after_request def bp_after_request(resp): pass @bp.after_app_request def bp_after_app_request(resp): pass @bp.teardown_request def bp_teardown_request(exc): pass @bp.teardown_app_request def bp_teardown_app_request(exc): pass @bp.errorhandler(Exception) def bp_errorhandler(exception): pass @bp.app_errorhandler(Exception) def bp_app_errorhandler(exception): pass @bp.endpoint('bbb') def bbb(): return 'ok' app.register_blueprint(bp) assert app.view_functions['foo.bbb'] == bbb @bp.route('/bar2') def bar2(): return 'bar2'
def test_basic_app(): app = Flagon(__name__) assert app.name == 'tests.test_app' app.add_url_rule('/hello', 'hello', lambda x: 'ok') with pytest.raises(AssertionError): app.add_url_rule('/hello', 'hello', lambda x: 'ok') @app.endpoint('foo') def foo(): return 'foo' app.add_url_rule('/foo', 'foo') def error_handler(exception): return '500' app.register_error_handler(Exception, error_handler)
def test_more_app(): app = Flagon() assert 'Flagon' in repr(app) @app.before_request def before_request1(): print('before_request') g.a = 1 @app.before_request def before_request2(): print('before_request2') g.b = 2 @app.route('/hello') def hello(): return 'ok' @app.after_request def after_request1(resp): return resp @app.after_request def after_request2(resp): return resp @app.errorhandler(404) def error_handler404(exception): return '404' @app.errorhandler(500) def error_handler500(exception): print(traceback.format_exc()) return '500' @app.teardown_request def teardown_request(exc=None): pass assert app.before_request_funcs[None][0] == before_request1 assert app.before_request_funcs[None][1] == before_request2 assert app.after_request_funcs[None][0] == after_request2 assert app.after_request_funcs[None][1] == after_request1 bp = Blueprint('foo', url_prefix='/foo') @bp.before_request def bp_before_request(): pass @bp.after_request def bp_after_request(resp): return resp @bp.teardown_request def bp_teardown_request(exc): pass @bp.route('/bar') def bar(): return 'bar' @bp.before_app_request def bp_app_before_request(): pass @bp.errorhandler(Exception) def bp_errorhandler(exception): pass app.register_blueprint(bp) assert app.before_request_funcs[None][2] == bp_app_before_request assert app.before_request_funcs['foo'][0] == bp_before_request env = copy.deepcopy(env1) env['PATH_INFO'] = '/hello' assert app(env, start_response)[0] == b'ok' env = copy.deepcopy(env1) env['PATH_INFO'] = '/foo/bar' assert app(env, start_response)[0] == b'bar' env = copy.deepcopy(env1) env['PATH_INFO'] = '/foo2' assert app(env, start_response)[0] == b'404'
def create_app() -> Flagon: app = Flagon(__name__) app.config['SECRET_KEY'] = 'notsosecret' app.cors = CORS(app) app.db = create_database( dbname=os.environ["DB_NAME"], host=os.environ["DB_HOST"], password=os.environ["DB_PASSWORD"], port=os.environ["DB_PORT"], user=os.environ["DB_USER"], ) app.device_location_tag_store = DeviceLocationTagStore(db=app.db) app.device_type_metric_store = DeviceTypeMetricStore(db=app.db) app.location_tag_store = LocationTagStore(db=app.db) app.metric_store = MetricStore(db=app.db) app.device_type_store = DeviceTypeStore( db=app.db, device_type_metric_store=app.device_type_metric_store, metric_store=app.metric_store) app.device_store = DeviceStore( db=app.db, device_location_tag_store=app.device_location_tag_store, location_tag_store=app.location_tag_store, device_type_store=app.device_type_store, ) app.report_store = ReportStore( db=app.db, device_store=app.device_store, device_type_metric_store=app.device_type_metric_store, metric_store=app.metric_store, ) app.register_blueprint(DEVICE_LOCATION_TAGS_V0_BLUEPRINT, url_prefix="/v0") app.register_blueprint(DEVICE_TYPE_METRICS_V0_BLUEPRINT, url_prefix="/v0") app.register_blueprint(DEVICE_TYPES_V0_BLUEPRINT, url_prefix="/v0") app.register_blueprint(DEVICES_V0_BLUEPRINT, url_prefix="/v0") app.register_blueprint(LOCATION_TAGS_V0_BLUEPRINT, url_prefix="/v0") app.register_blueprint(METRICS_V0_BLUEPRINT, url_prefix="/v0") app.register_blueprint(REPORTS_V0_BLUEPRINT, url_prefix="/v0") return app
from flagon import Flagon, render_template, url_parse, redirect from db import get_session, user_exists, verified_user from db import get_posts, get_users, add_user, check_user, add_post, get_post from bs4 import BeautifulSoup import requests from functools import wraps app = Flagon(__name__) session = get_session() def get_post_preview(url): scheme, netloc, path, query, fragment = url_parse(url) # No oranges allowed if scheme != 'http' and scheme != 'https': return None if '..' in path: return None if path.startswith('/flaginfo'): return None try: r = requests.get(url, allow_redirects=False) except Exception: return None soup = BeautifulSoup(r.text, 'html.parser')
from flagon import Flagon app = Flagon() @app.route("/") def home(request, response): response.text = "Minha Home" return response @app.route("/users") class UsersResource: def get(self, request, response): response.text = "GET Users" def post(self, request, response): response.text = "POST Users"
raise ImportError('This is not a module, but a script.') import sys, os, socket test_root = os.path.dirname(os.path.abspath(__file__)) os.chdir(test_root) sys.path.insert(0, os.path.dirname(test_root)) sys.path.insert(0, test_root) try: server = sys.argv[1] port = int(sys.argv[2]) if server == 'gevent': from gevent import monkey monkey.patch_all() from flagon import Flagon app = Flagon() @app.route('/test') def test(): return 'ok' app.run(host=server, port=port) except socket.error: sys.exit(3) except ImportError: sys.exit(128) except KeyboardInterrupt: pass
def create_app() -> Flagon: app = Flagon(__name__) app.cors = CORS(app) app.db = create_database( dbname=os.environ["DB_NAME"], host=os.environ["DB_HOST"], password=os.environ["DB_PASSWORD"], port=os.environ["DB_PORT"], user=os.environ["DB_USER"], ) app.user_store = UserStore(db=app.db) app.superuser_store = SuperuserStore(db=app.db) app.access_control_store = AccessControlStore(db=app.db) app.register_blueprint(USERS_V0_BLUEPRINT, url_prefix="/v0") app.register_blueprint(SUPERUSERS_V0_BLUEPRINT, url_prefix="/v0") app.register_blueprint(ACCESS_CONTROLS_V0_BLUEPRINT, url_prefix="/v0") return app
from flagon import Flagon, request app = Flagon('example1') @app.before_request def before_request(): if request.endpoint == 'hello_world': if 'foo' not in request.view_args: request.view_args.update(foo='123') if request.endpoint == 'hello_world2': if 'foo2' in request.view_args: request.view_args.pop('foo2') @app.route('/') @app.route('/<foo>/bar') def hello_world(foo): print 'hello', foo return 'Hello World!' @app.route('/<foo2>/noarg') def hello_world2(): return 'Hello World!' @app.route('/<int:number>/num') def hello_world3(number): return 'Hello World! %s'%(number) if __name__ == '__main__': app.run()