Flask CLI para crear comandos personalizados

- Andrés Cruz

In english

Flask CLI para crear comandos personalizados

Flask CLI permite crear comandos personalizados para poder realizar cualquier operación; estos comandos se ejecutan en el contexto de la aplicación; para instalar el paquete, tenemos:

$ pip install flask-cli

Registramos a nivel de la app:

my_app\__init__.py

from flask_cli import FlaskCLI
***
FlaskCLI(app)
Su uso es muy sencillo y el proceso es realizado en base a funciones:
my_app\comands\user.py
def register(app):
    @app.cli.command('mycmd')
    def mycmd():
        click.echo("Test")

Por lo tanto, un comando corresponde a una función que puede tener los siguientes decoradores:

  • @app.cli.command registra que nuestra función tiene un nuevo comando de línea de comandos; si no se pasa ningún argumento, Click asumirá el nombre de la función.
  • @click.argument agrega un argumento de línea de comando; en nuestro caso, para nombre de usuario y contraseña.

Con el funcionamiento aclarado, creamos una nueva función (comando) para crear un usuario:

my_app\comands\user.py

def register(app):
    @app.cli.command('create-user')
    @click.argument('username')
    @click.argument('password')
    def create_user(username, password):

        existing_username = User.query.filter_by(username=username).first()
        if existing_username:
            click.echo( 'This username has been already taken. Try another one.')
        
        user = User(username, password)
        db.session.add(user)
        db.session.commit()
        click.echo('User {0} Added.'.format(username))

    @app.cli.command('mycmd')
    def mycmd():
        click.echo("Test")

Registramos a nivel de la app:

my_app\__init__.py

from flask_cli import FlaskCLI
***
# extensions
from my_app.comands.user import register
register(app)

Es importante que registres la aplicación mediante la variable de entorno FLASK_APP o que puedas usar comandos como:

$ flask run

Para ejecutar el proyecto, de tal forma que de esta manera se tiene acceso al contexto de la aplicación y con esto la posibilidad de ejecutar los comandos personalizados.

Acepto recibir anuncios de interes sobre este Blog.

Flask CLI permite crear comandos personalizados para poder realizar cualquier operación; estos comandos se ejecutan en el contexto de la aplicación.

- Andrés Cruz

In english