- Notifications
You must be signed in to change notification settings - Fork120
An example of a large scale Flask application using blueprints and extensions.
License
cburmeister/flask-bones
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
An example of a large scale Flask application using blueprints and extensions.
Quickly run the project usingdocker anddocker-compose:
docker-compose up -d
Create the database and seed it with some data:
docker-compose run --rm app flask create-dbdocker-compose run --rm app flask populate-db --num_users 5
Download front-end dependencies withyarn:
yarn install --modules-folder ./app/static/node_modules
The following environment variables areoptional:
Name | Purpose |
---|---|
APP_NAME | The name of the application. i.e Flask Bones |
MAIL_PORT | The port number of an SMTP server. |
MAIL_SERVER | The hostname of an SMTP server. |
MEMCACHED_HOST | The hostname of a memcached server. |
MEMCACHED_PORT | The port number of a memcached server. |
POSTGRES_HOST | The hostname of a postgres database server. |
POSTGRES_PASS | The password of a postgres database user. |
POSTGRES_PORT | The port number of a postgres database server. |
POSTGRES_USER | The name of a postgres database user. |
REDIS_HOST | The hostname of a redis database server. |
REDIS_PORT | The port number of a redis database server. |
SECRET_KEY | A secret key required to provide authentication. |
SERVER_NAME | The hostname and port number of the server. |
fromapp.extensionsimportcache# Cache somethingcache.set('some_key','some_value')# Fetch it latercache.get('some_key')
fromapp.extensionsimportmailfromflask_mailimportMessage# Build an emailmsg=Message('User Registration',sender='admin@flask-bones.com',recipients=[user.email])msg.body=render_template('mail/registration.mail',user=user,token=token)# Sendmail.send(msg)
RQ
is asimple job queue for python backed byredis.
Define a job:
@rq.jobdefsend_email(msg):mail.send(msg)
Start a worker:
flask rq worker
Queue the job for processing:
send_email.queue(msg)
Monitor the status of the queue:
flask rq info --interval 3
For help on all available commands:
flask rq --help
fromapp.extensionsimportlogin_user,logout_user,login_required# Login userlogin_user(user)# You now have a global proxy for the usercurrent_user.is_authenticated# Secure endpoints with a decorator@login_required# Log out userlogout_user()
fromapp.extensionsimportbcrypt# Hash passwordpw_hash=bcrypt.generate_password_hash('password')# Validate passwordbcrypt.check_password_hash(pw_hash,'password')
fromapp.configimportdev_config,test_configapp=Flask(__name__)classdev_config():DEBUG=Trueclasstest_config():TESTING=True# Configure for testingapp.config.from_object(test_config)# Configure for developmentapp.config.from_object(dev_config)
Place a csrf token on a form:
{{ form.csrf_token }}
Validate it:
form.validate_on_submit()
fromapp.extensionsimportlimiter@limiter.limit("5 per minute")@auth.route('/login',methods=['GET','POST'])deflogin():# ...return'your_login_page_contents'
Run the test suite:
pytest
fromapp.user.modelsimportUser# Fetch user by iduser=User.get_by_id(id)# Save current state of useruser.update()# Fetch a paginated set of usersusers=User.query.paginate(page,50)
Download front-end dependencies withyarn:
yarn install --modules-folder ./app/static/node_modules
Merge and compress them together withFlask-Assets:
flask assets build
Display the current revision:
flask db current
Create a new migration:
flask db revision
Upgrade the database to a later version:
flask db upgrade
Extract strings from source and compile a catalog (.pot
):
pybabel extract -F babel.cfg -o i18n/messages.pot.
Create a new resource (.po) for German translators:
pybabel init -i i18n/messages.pot -d i18n -l de
Compile translations (.mo):
pybabel compile -d i18n
Merge changes into resource files:
pybabel update -i i18n/messages.pot -d i18n
About
An example of a large scale Flask application using blueprints and extensions.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors10
Uh oh!
There was an error while loading.Please reload this page.