From 48a6bd0c9989429cfdcd1935e1f597391068afd8 Mon Sep 17 00:00:00 2001 From: Steven Loria Date: Sat, 21 Sep 2013 12:40:54 -0500 Subject: [PATCH] Add simple manage.py script --- README.rst | 1 + {{cookiecutter.repo_name}}/README.rst | 13 ++++++++++- {{cookiecutter.repo_name}}/manage.py | 23 +++++++++++++++++++ .../requirements/dev.txt | 3 +++ .../requirements/prod.txt | 4 ++-- .../{{cookiecutter.repo_name}}/main.py | 2 +- .../{{cookiecutter.repo_name}}/models.py | 4 ++-- .../{{cookiecutter.repo_name}}/settings.py | 2 +- 8 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 {{cookiecutter.repo_name}}/manage.py diff --git a/README.rst b/README.rst index 43e98ac..f122e5f 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 01c20bf..97eb455 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 0000000..10acc9b --- /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 7209a44..ecbb1f4 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 4d290a7..149deab 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 9544879..6e6f8cd 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 1269ce5..fa200d2 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 '' % (self.username) + return ''.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 43c9697..7006695 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)