Upgrade to Django 1.5.
[wolnelektury.git] / fabfile.py
index 84605a2..6a92b7e 100644 (file)
@@ -1,6 +1,7 @@
 from __future__ import with_statement # needed for python 2.5
 from fabric.api import *
 from fabric.contrib import files
+from fabric.context_managers import path
 
 import os
 
@@ -29,7 +30,8 @@ def production():
     env.path = '/srv/wolnelektury.pl'
     env.python = '/usr/bin/python'
     env.virtualenv = '/usr/bin/virtualenv'
-    env.pip = '/usr/bin/pip'
+    env.pip = 've/bin/pip'
+    env.restart_webserver = restart_gunicorn_debian
 
 # =========
 # = Tasks =
@@ -70,7 +72,9 @@ def deploy():
     copy_localsettings()
     symlink_current_release()
     migrate()
+    collectstatic()
     restart_webserver()
+    restart_celery()
 
 def deploy_version(version):
     "Specify a specific version to be made live"
@@ -80,6 +84,7 @@ def deploy_version(version):
         run('rm releases/previous; mv releases/current releases/previous;', pty=True)
         run('ln -s %(version)s releases/current' % env, pty=True)
     restart_webserver()
+    restart_celery()
 
 def rollback():
     """
@@ -93,6 +98,7 @@ def rollback():
         run('mv releases/previous releases/current;', pty=True)
         run('mv releases/_previous releases/previous;', pty=True)
     restart_webserver()
+    restart_celery()
 
 
 # =====================================================================
@@ -160,9 +166,31 @@ def migrate():
         if env.use_south:
             run('../../../ve/bin/python manage.py migrate' % env, pty=True)
 
+def collectstatic():
+    """Collect static files"""
+    print '>>> collectstatic'
+    require('project_name', provided_by=[staging, production])
+    with cd('%(path)s/releases/current/%(project_name)s' % env):
+        run('../../../ve/bin/python manage.py collectstatic --noinput' % env, pty=True)
+
+def restart_gunicorn_debian():
+    """Restarts gunicorn server using debian script."""
+    print '>>> restart gunicorn'
+    require('project_name', provided_by=[staging, production])
+    with path('/sbin'):
+        sudo('gunicorn-debian restart %(project_name)s' % env, shell=False)
+
 def restart_webserver():
-    "Restart the web server"
-    print '>>> restart webserver'
-    run('touch %(path)s/%(project_name)s.wsgi' % env)
+    """Restarts the web server."""
+    if hasattr(env, 'restart_webserver'):
+        env.restart_webserver()
+    else:
+        require('project_name', provided_by=[staging, production])
+        print '>>> restart webserver'
+        run('touch %(path)s/%(project_name)s.wsgi' % env)
+
+def restart_celery():
+    """Restarts the Celery task queue manager."""
     print '>>> restart Celery'
+    require('project_name', provided_by=[staging, production])
     sudo('supervisorctl restart celery.%(project_name)s:' % env, shell=False)