예제 #1
1
def main(create_app_func=None):
    
    if not create_app_func:
        from widukind_web.wsgi import create_app
        create_app_func = create_app
    
    class ServerWithGevent(Server):
        help = description = 'Runs the Flask development server with Gevent WSGI Server'
    
        def __call__(self, app, host, port, use_debugger, use_reloader,
                   threaded, processes, passthrough_errors):

            if use_debugger:
                app = DebuggedApplication(app, evalex=True)
    
            server = WSGIServer((host, port), app)
            try:
                print('Listening on http://%s:%s' % (host, port))
                server.serve_forever()
            except KeyboardInterrupt:
                pass
    
    env_config = config_from_env('WIDUKIND_SETTINGS', 'widukind_web.settings.Prod')
    
    manager = Manager(create_app_func, 
                      with_default_commands=False)
    
    #TODO: option de config app pour désactiver run counter
    
    manager.add_option('-c', '--config',
                       dest="config",
                       default=env_config)

    manager.add_command("shell", Shell())

    if HAS_GEVENT:
        manager.add_command("server", ServerWithGevent(
                        host = '0.0.0.0',
                        port=8081)
        )
    else:
        manager.add_command("server", Server(
                        host = '0.0.0.0',
                        port=8081)
        )

    manager.add_command("config", ShowConfigCommand())
    manager.add_command("urls", ShowUrlsCommand())
    
    manager.add_command("assets", ManageAssets())
    
    manager.run()
예제 #2
0
def create_scripts(app):
    manager = Manager(app)
    manager.add_command("assets", ManageAssets(app.assets_env))
    manager.add_command("build", SiteGenerator(app))
    manager.add_command("new", SkeletonGenerator(app))
    manager.add_command("lang", LanguageGenerator(app))

    @manager.command
    def serve():
        import SimpleHTTPServer
        import SocketServer
        from os import chdir
        import webbrowser

        PORT = 8000

        Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

        httpd = SocketServer.TCPServer(("", PORT), Handler)

        print "Freezes static file server now serving on port ", PORT
        chdir('builds')
        webbrowser.open_new_tab('http://localhost:%s' % PORT)
        httpd.serve_forever()

    return manager
예제 #3
0
    def test_call_auto_env(self):
        """Regression test: Passing the environment to the ManageAssets command
        is optional, it can be auto-detected."""
        mgmt = Manager(self.app)
        mgmt.add_command('assets', ManageAssets())

        try:
            # Used to raise an error due to the env not being properly set.
            sys.argv = ['./manage.py', 'assets', 'build']
            mgmt.run()
        except SystemExit:
            # Always raised, regardless of success or failure of command
            pass
예제 #4
0
    def test_parse_templates(self):
        """Test the --parse-templates option.
        """
        # Create a file in the app's templates directory
        self.app.template_folder = self.path('templates')
        self.create_files({
            'templates/template.html': """
            {% assets "in", output="output" %}
                {{ ASSET_URL }}
            {% endassets %}
            """,
            'in': "foo"
        })

        # Run the build command with --parse-templates, which should pick
        # up the bundle we defined in above template.
        mgmt = Manager(self.app)
        mgmt.add_command('assets', ManageAssets(log=stdout_log))
        mgmt.handle('test', ['assets', '--parse-templates', 'build'])

        assert self.exists('output')
예제 #5
0
def setup_abilian_commands(manager):
    """Register abilian commands on ``manager``.

    :param manager: ``flask_script.Manager`` instance to add commands onto

    Usage exemple::

        from flask_script import Manager
        from abilian.commands import setup_abilian_commands

        my_manager = Manager(app)
        setup_abilian_commands(my_manager)
    """
    abilian_manager = globals()["manager"]
    manager._options.extend(abilian_manager._options)

    for name, command in abilian_manager._commands.items():
        manager.add_command(name, command)

    manager.add_command("assets", ManageAssets())  # flask-assets
    manager.add_command("config", config_manager)
    manager.add_command("migrate", MigrateCommand)
    return manager
예제 #6
0
    def test_call(self):
        # Setup the webassets.script with a mock main() function,
        # so we can check whether our call via Flask-Script actually
        # goes through.
        test_inst = self

        class DummyArgparseImplementation(GenericArgparseImplementation):
            def run_with_argv(self, argv):
                test_inst.last_script_call = argv
                return 0

        mgmt = Manager(self.app)
        mgmt.add_command(
            'assets', ManageAssets(self.env, impl=DummyArgparseImplementation))

        try:
            # -h is a great test as that is something Flask-Script might
            # want to claim for itself.
            sys.argv = ['./manage.py', 'assets', '-h']
            mgmt.run()
        except SystemExit:
            # Always raised, regardless of success or failure of command
            pass
        assert self.last_script_call == ['-h']
예제 #7
0
from flask_script import Manager

# Import and use this manager
command_manager = Manager()

# If flask assets is installed - load assets command
try:
    from flask_assets import ManageAssets

    command_manager.add_command('assets', ManageAssets())
except ImportError:
    pass

# If flask migrate is installed - load migrate command
try:
    from flask_migrate import MigrateCommand

    command_manager.add_command('db', MigrateCommand)
except ImportError:
    pass

from .routes import RoutesCommand
command_manager.add_command('routes', RoutesCommand())

from .secret_key import SecretKeyCommand
command_manager.add_command('secret_key', SecretKeyCommand())

from .vendor import VendorManager
command_manager.add_command('vendor', VendorManager)
예제 #8
0
def _build_assets():
    print ('building assets')
    ManageAssets(assets, '--parse-templates build')
예제 #9
0
def _clear_asset_cache():
    print ('clearing asset cache')
    ManageAssets(assets, 'clean')
예제 #10
0
        password=encrypt_password('password')
    )
    user_datastore.add_role_to_user(user, admin)


@manager.command
def routes():
    """ Prints out all the routes to shell
    """
    import urllib.request, urllib.parse, urllib.error
    output = []
    for rule in app.url_map.iter_rules():
        options = {}
        for arg in rule.arguments:
            options[arg] = "[{0}]".format(arg)
        methods = ','.join(rule.methods)
        url = url_for(rule.endpoint, **options)
        line = urllib.parse.unquote("{:50s} {:20s} {}".format(rule.endpoint, methods, url))
        output.append(line)
    for line in sorted(output):
        print (line)

def shell_context():
    return dict(app=app)

#runs the app
if __name__ == '__main__':
    manager.add_command('shell', Shell(make_context=shell_context))
    manager.add_command('assets', ManageAssets(assets_env=assets))
    manager.run()
예제 #11
0
    removed

    """
    if target == 'index':
        cache.delete(index_cache_key())
    else:
        cache.delete(feed_cache_key(target))


@cache_manager.command
def clear():
    """clear the cache"""
    cache.clear()


asset_manager = ManageAssets(assets_env)
asset_manager.help = 'run commands for assets'


def _shell_context():
    return dict(current_app=current_app, g=g, db=db, cache=cache,
                Series=Series, Chapter=Chapter)

shell_command = Shell(make_context=_shell_context)
shell_command.help = 'run a Python shell inside the Flask app context'


server_command = Server()
server_command.help = 'run the Flask development server i.e. app.run()'

예제 #12
0
from webapp import create_app
from webapp.models import db, User, Role, Item, Category

load_environment()
# default to dev config
env = getenv('WEBAPP_ENV', 'dev')
app = create_app(f'webapp.config.{env.capitalize()}Config')

migrate = Migrate(app, db)

manager = Manager(app)
manager.add_command("server", Server())
manager.add_command("show-urls", ShowUrls())
manager.add_command("clean", Clean())
manager.add_command('db', MigrateCommand)
manager.add_command("assets", ManageAssets(env))


@manager.shell
def make_shell_context():
    return dict(
        app=app,
        db=db,
        User=User,
        Category=Category,
        Item=Item
    )


@manager.command
def setup_db():
예제 #13
0
def main(create_app_func=None):
    
    if not create_app_func:
        from shortener_url.wsgi import create_app
        create_app_func = create_app
    
    class ServerWithGevent(Server):
        help = description = 'Runs the Flask development server with Gevent WSGI Server'
    
        def __call__(self, app, host, port, use_debugger, use_reloader,
                   threaded, processes, passthrough_errors, **kwargs):
            
            #print("kwargs : ", kwargs)
            #{'ssl_key': None, 'ssl_crt': None}

            if use_debugger:
                app = DebuggedApplication(app, evalex=True)
    
            server = WSGIServer((host, port), app)
            try:
                print('Listening on http://%s:%s' % (host, port))
                server.serve_forever()
            except KeyboardInterrupt:
                pass
    
    env_config = config_from_env('SHORTURL_SETTINGS', 'shortener_url.settings.Prod')
    
    manager = Manager(create_app_func, 
                      with_default_commands=False)
    
    #TODO: option de config app pour désactiver run counter
    
    manager.add_option('-c', '--config',
                       dest="config",
                       default=env_config)

    manager.add_command("shell", Shell())

    if HAS_GEVENT:
        manager.add_command("server", ServerWithGevent(
                        host = '0.0.0.0',
                        port=8081)
        )
        manager.add_command("debug-server", Server(
                        host = '0.0.0.0',
                        port=8081)
        )
    else:
        manager.add_command("server", Server(
                        host = '0.0.0.0',
                        port=8081)
        )

    manager.add_command("config", ShowConfigCommand())
    manager.add_command("urls", ShowUrlsCommand())
    manager.add_command("assets", ManageAssets())
    
    from flask_security import script
    manager.add_command('auth-create-user', script.CreateUserCommand())
    manager.add_command('auth-create-role', script.CreateRoleCommand())
    manager.add_command('auth-add-role', script.AddRoleCommand())
    manager.add_command('auth-remove-role', script.RemoveRoleCommand())
    manager.add_command('auth-activate-user', script.ActivateUserCommand())
    manager.add_command('auth-deactivate-user', script.DeactivateUserCommand())
    
    manager.run()
예제 #14
0
파일: manage.py 프로젝트: neoflex/VPNWebUI
#!/usr/bin/env python
import sys
import unittest

from flask_assets import ManageAssets
from flask_script import Manager, Shell

from expressvpn_web import app

manager = Manager(app)

logger = app.logger


@manager.command
def test():
    tests = unittest.TestLoader().discover('tests', pattern='*.py')
    results = unittest.TextTestRunner(verbosity=1).run(tests)
    if not results.wasSuccessful():
        sys.exit(1)


manager.add_command("shell", Shell(use_ipython=True, use_bpython=False))
# work-around bug in flask-assets
app.jinja_env.assets_environment.environment = app.jinja_env.assets_environment
manager.add_command("assets", ManageAssets(app.jinja_env.assets_environment))
manager.run()
예제 #15
0
from main import app  # DO FIRST: https://github.com/gevent/gevent/issues/446

from flask_assets import ManageAssets
from flask_script import Manager
import gevent

from assets import env
from front.home import *
import settings

manager = Manager(app)
manage_assets = ManageAssets()
manager.add_command(
    "assets", manage_assets)  # To build assets, just do: ./run.sh assets build


@manager.command
def clean():
    env.clean()


@manager.command
def build():
    manage_assets.run(['build'])


# some imports for backdoor (nc localhost 2823) and shell (./run.sh shell)
LOCALS = locals()


def get_locals():
예제 #16
0
import logging
import sys
import os
import os.path
import colorlog
from flask_assets import ManageAssets

sys.path.append(os.path.dirname(__file__))

from spacewiki.app import create_app

APP = create_app()
MANAGER = Manager(APP)
MANAGER.add_command('db', model.MANAGER)
MANAGER.add_command("shell", Shell())
MANAGER.add_command('assets', ManageAssets())


@MANAGER.option('-s',
                '--syncdb',
                dest='syncdb',
                help='Run syncdb on boot',
                default=False,
                action='store_true')
def runserver(syncdb):
    if (syncdb):
        model.syncdb()
    from gevent.wsgi import WSGIServer
    serv = WSGIServer(('', int(os.environ.get('PORT', 5000))),
                      APP,
                      log=logging.getLogger("http"))
예제 #17
0
 def configure(self, manager):
     assets.directory = STATIC_PATH
     assets.url = STATIC_URL
     manager.add_command("assets", ManageAssets(assets))
     prefix = None if UI_PREFIX == '/' else UI_PREFIX
     app.register_blueprint(blueprint, url_prefix=prefix)
예제 #18
0

@manager.command
def change_user_password(username=None, new_password=None):
    if None in [username, new_password]:
        print('Username and new_password are required')
        exit(0)

    user = User.by_username(username)

    if user is None:
        print('User %s not found' % username)
        exit(0)

    try:
        user.update_password(new_password)
    except ValueError as ex:
        print(ex)
        exit(0)

    db.session.commit()
    print('Password changed')


manager.add_command("assets", ManageAssets(assets))

manager.add_command("runserver", Server(threaded=True))

if __name__ == '__main__':
    manager.run()
예제 #19
0
    removed

    """
    if target == 'index':
        cache.delete(index_cache_key())
    else:
        cache.delete(feed_cache_key(target))


@cache_manager.command
def clear():
    """clear the cache"""
    cache.clear()


asset_manager = ManageAssets(assets_env)
asset_manager.help = 'run commands for assets'


def _shell_context():
    return dict(current_app=current_app,
                g=g,
                db=db,
                cache=cache,
                Series=Series,
                Chapter=Chapter)


shell_command = Shell(make_context=_shell_context)
shell_command.help = 'run a Python shell inside the Flask app context'