diff --git a/README.rst b/README.rst index 43e98ace9b7776397692a2964aa99e66f983a241..f122e5f5850e1a15cb5d513307e61cbf5274cc8f 100644 --- a/README.rst +++ b/README.rst @@ -13,6 +13,7 @@ Features - Flask-WTForms with login and registration forms - Procfile for deploying to a PaaS (e.g. Heroku) - nose for testing +- A simple ``manage.py`` script. Screenshots ----------- diff --git a/{{cookiecutter.repo_name}}/README.rst b/{{cookiecutter.repo_name}}/README.rst index 01c20bfc51248f6d5ca0ffb53e9ccd75cd26af81..97eb4559cb8e65924512ff2727ee8e4d72b85084 100644 --- a/{{cookiecutter.repo_name}}/README.rst +++ b/{{cookiecutter.repo_name}}/README.rst @@ -13,4 +13,15 @@ Quickstart git clone https://github.com/{{cookiecutter.github_username}}/{{ cookiecutter.repo_name }} cd {{cookiecutter.repo_name}} pip install -r requirements/dev.txt - python run.py + python manage.py createdb + python manage.py runserver + + +Shell +----- + +To open the interactive shell, run :: + + python manage.py shell + +By default, you will have access to ``app``, ``models``, and ``db``. diff --git a/{{cookiecutter.repo_name}}/manage.py b/{{cookiecutter.repo_name}}/manage.py new file mode 100644 index 0000000000000000000000000000000000000000..10acc9bc65ba9d0dc2221a4f081ed458eb7f9776 --- /dev/null +++ b/{{cookiecutter.repo_name}}/manage.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +from flask.ext.script import Manager, Shell, Server +from {{ cookiecutter.repo_name }} import models +from {{ cookiecutter.repo_name }}.main import app, db + +manager = Manager(app) + +def _make_context(): + '''Return context dict for a shell session so you can access + app, db, and models by default. + ''' + return {'app': app, 'db': db, 'models': models} + +@manager.command +def createdb(): + '''Create a database from the tables defined in models.py.''' + db.create_all() + +manager.add_command("runserver", Server()) +manager.add_command("shell", Shell(make_context=_make_context)) + +if __name__ == '__main__': + manager.run() diff --git a/{{cookiecutter.repo_name}}/requirements/dev.txt b/{{cookiecutter.repo_name}}/requirements/dev.txt index 7209a440c61fb6fb5232e0f0770b46c8cf7e78ca..ecbb1f4de8a91ca4665f75796ef3a06863edf658 100644 --- a/{{cookiecutter.repo_name}}/requirements/dev.txt +++ b/{{cookiecutter.repo_name}}/requirements/dev.txt @@ -3,3 +3,6 @@ # Testing nose + +# Management script +Flask-Script diff --git a/{{cookiecutter.repo_name}}/requirements/prod.txt b/{{cookiecutter.repo_name}}/requirements/prod.txt index 4d290a762dcff317b520914a7fa28d330359981f..149deabe5ffc9b76b93e5916db2441d84fd97ee7 100644 --- a/{{cookiecutter.repo_name}}/requirements/prod.txt +++ b/{{cookiecutter.repo_name}}/requirements/prod.txt @@ -1,12 +1,12 @@ # Everything that needed in production Flask==0.10.1 Flask-SQLAlchemy==1.0 -Flask-WTF==0.9.0 +Flask-WTF==0.9.2 Jinja2==2.7 MarkupSafe==0.18 SQLAlchemy==0.8.2 WTForms==1.0.4 -Werkzeug==0.9.3 +Werkzeug==0.9.4 gunicorn==17.5 itsdangerous==0.23 wsgiref==0.1.2 diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/main.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/main.py index 9544879e65ef2ffa4c852b2b8c3aea56be6b6894..6e6f8cdb699310c1456b3e0ccbe04d7c7a0d448f 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/main.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/main.py @@ -11,4 +11,4 @@ from .views import * if __name__ == '__main__': port = int(os.environ.get('PORT', 5000)) - app.run(host='0.0.0.0', port=port) \ No newline at end of file + app.run(host='0.0.0.0', port=port) diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/models.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/models.py index 1269ce544025ce4af1b46d76325b4c21c7bce027..fa200d2a57e9fc5881af31962be71f2457938c9f 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/models.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/models.py @@ -21,6 +21,6 @@ class User(db.Model): self.password = password def __repr__(self): - return '<User %r>' % (self.username) + return '<User "{username}">'.format(username=self.username) -db.create_all() \ No newline at end of file +db.create_all() diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/settings.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/settings.py index 43c9697f86332d7a4563bab55b805598f5ba5573..700669520b8a726f5e77fb85e65dab819108c5a9 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/settings.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/settings.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import os -APP_DIR = os.path.abspath(os.path.dirname(__file__)) +APP_DIR = os.path.abspath(os.path.dirname(__file__)) # This directory PROJECT_ROOT = os.path.abspath(os.path.join(APP_DIR, os.pardir)) DB_NAME = "test.db" DB_PATH = os.path.join(PROJECT_ROOT, DB_NAME)