The file chuck_setup.py is a normal Python file and used to describe a project. If this file is available Chuck is able to automatically setup the project using the setup_project command.
It can not only be used to describe a project (e.g. project prefix and name, settings file etc.), but also to define hooks before and every build step like syncdb or build virtualenv to customize the build process completely to your needs!
The script gets some variables and help functions injected to make your life easier. Here’s an overview which variables get injected.
Variable | Description |
---|---|
virtualenv_dir | The full path to the virtualenv |
site_dir | The full path to the projects site dir |
project_dir | Combination of site_dir and site_name-project_name |
project_name | The name of the project |
site_name | The name of the site (project_prefix) |
And a list of help functions you can use.
Function | Description |
---|---|
execute_in_project(cmd) | Loads virtualenv and django settings and executes the given command |
db_cleanup | Delete django tables for complete db import. Useful for django-cms migration. |
load_fixtures(file) | Load the given fixture file |
Last but not least a full example that will use custom syncdb and migrate parameter, add an admin user and load some fixtures after successful build.
project_prefix = "test"
project_name = "project"
django_settings = "project.settings.dev"
extra_syncdb_options = "--all"
extra_migrate_options = "--fake"
def pre_git_clone():
pass
def post_git_clone():
pass
def pre_build_virtualenv():
pass
def post_build_virtualenv():
pass
def pre_sync_db():
pass
def post_sync_db():
pass
def pre_migrate_db():
pass
def post_migrate_db():
db_cleanup()
load_fixtures(os.path.join(site_dir, "fixtures", "test_data.json"))