-def setup():
- """
- Setup a fresh virtualenv as well as a few useful directories, then run
- a full deployment. virtualenv and pip should be already installed.
- """
- require('hosts', 'path', provided_by=[staging, production])
-
- run('mkdir -p %(path)s; cd %(path)s; %(virtualenv)s --no-site-packages .;' % env, pty=True)
- run('cd %(path)s; mkdir releases; mkdir shared; mkdir packages;' % env, pty=True)
- deploy()
-
-def deploy():
- """
- Deploy the latest version of the site to the servers,
- install any required third party modules,
- install the virtual host and then restart the webserver
- """
- require('hosts', 'path', provided_by=[staging, production])
-
- import time
- env.release = time.strftime('%Y-%m-%dT%H%M')
-
- upload_tar_from_git()
- install_requirements()
- symlink_current_release()
- migrate()
- restart_webserver()
+ def run(self):
+ require('app_path', 'project_name')
+ with cd(get_django_root_path('current')):
+ run('source %(ve)s/bin/activate && python manage.py %(task)s %(params)s' % {
+ 've': env.ve,
+ 'task': self.name,
+ 'params': self.params,
+ }, pty=True)