small adaptation for iconolab
authorymh <ymh.work@gmail.com>
Fri, 02 Sep 2016 02:01:44 +0200
changeset 29 690b89879211
parent 28 19d1e055ff4e
child 30 e7883ce16f12
small adaptation for iconolab
src/fablib/__init__.py
src/fablib/core.py
--- a/src/fablib/__init__.py	Sat Aug 22 01:04:21 2015 +0200
+++ b/src/fablib/__init__.py	Fri Sep 02 02:01:44 2016 +0200
@@ -1,13 +1,16 @@
 
 from .core import (check_folder_access, migrate, collectstatic, do_relaunch_server,
-    export_version, do_sync_web, create_config, clean_export_folder,
-    sync_install_build, do_create_virtualenv, clean_rsync_folder, rsync_export,
-    do_sync_comp, get_comp_versions_dict, SyncComp)
+                   export_version, do_sync_web, create_config, clean_export_folder,
+                   sync_install_build, do_create_virtualenv, clean_rsync_folder, rsync_export,
+                   do_sync_comp, get_comp_versions_dict, SyncComp, get_src_version, sync_build,
+                   install_build, do_create_virtualenv_requirement, build_src)
 
 __all__ = ["check_folder_access", "migrate", "collectstatic", "do_sync_comp",
-    "export_version", "do_sync_web", "create_config", "clean_export_folder", "relaunch_server",
-    "do_sync_ldt", "sync_install_build", "do_create_virtualenv", "clean_rsync_folder", "rsync_export",
-    "get_comp_versions_dict", "SyncComp"]
+           "export_version", "do_sync_web", "create_config", "clean_export_folder",
+           "relaunch_server", "do_sync_ldt", "sync_install_build", "do_create_virtualenv",
+           "clean_rsync_folder", "rsync_export", "get_comp_versions_dict", "SyncComp",
+           "get_src_version", "sync_build", "install_build", "do_create_virtualenv_requirement",
+           "build_src"]
 
 VERSION = (0, 1, 0, "dev", 0)
 
--- a/src/fablib/core.py	Sat Aug 22 01:04:21 2015 +0200
+++ b/src/fablib/core.py	Fri Sep 02 02:01:44 2016 +0200
@@ -19,9 +19,10 @@
 
 
 __all__ = ["check_folder_access", "migrate", "collectstatic", "do_relaunch_server",
-    "export_version", "do_sync_web", "create_config", "clean_export_folder",
-    "sync_install_build", "do_create_virtualenv", "clean_rsync_folder", "rsync_export",
-    "do_sync_comp", "get_comp_versions_dict", "SyncComp"]
+           "export_version", "do_sync_web", "create_config", "clean_export_folder",
+           "sync_install_build", "do_create_virtualenv", "clean_rsync_folder", "rsync_export",
+           "do_sync_comp", "get_comp_versions_dict", "SyncComp", "get_src_version", "sync_build",
+           "install_build", "do_create_virtualenv_requirement", "build_src"]
 
 def get_export_path(version):
     base_path = os.path.join(env.base_export_path,env.export_prefix).rstrip("/")
@@ -68,16 +69,18 @@
     print("Export version %s done"%repr(export_keys))
 
 
-def get_remote_env(remotepath, remotevirtualenvpath, platform_web_module, settings_key):
+def get_remote_env(remotepath, remotevirtualenvpath, platform_web_module, settings_key, settings_module=''):
+    if not settings_module:
+        settings_module = '%s.%s' % (platform_web_module, 'settings')
     activate_path = os.path.join(remotevirtualenvpath, "bin/activate")
     with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath):
         tempfilepath = run("mktemp -t fablib.XXXXXX")
         with settings(warn_only=True):
             run("echo \"import os\" > %s" % (tempfilepath))
             map(lambda str_echo: run("echo \"%s\" >> %s" % (str_echo, tempfilepath)),
-                ["os.environ.setdefault('DJANGO_SETTINGS_MODULE', '%s.settings')" % (platform_web_module),
+                ["os.environ.setdefault('DJANGO_SETTINGS_MODULE', '%s')" % (settings_module),
                  "from django.conf import settings",
-                 "print settings.%s" % (settings_key)])
+                 "print(settings.%s)" % (settings_key)])
             res = run("python < %s" % (tempfilepath))
         run("rm -f \"%s\"" % (tempfilepath))
     return res
@@ -212,31 +215,31 @@
                 run("pip uninstall -y %s" % module_to_uninstall)
         run("pip install --no-cache-dir \"%s\"" % remotepath)
 
-def collectstatic(remotepath, remotevirtualenvpath, platform_web_module, module_settings=""):
+def collectstatic(remotepath, remotevirtualenvpath, platform_web_module, module_settings="", admin_cmd="python manage.py"):
     print("Collect static in %s with %s" % (remotepath, remotevirtualenvpath))
-    remotestaticsitepath = get_remote_env(remotepath, remotevirtualenvpath, platform_web_module, "STATIC_ROOT")
+    remotestaticsitepath = get_remote_env(remotepath, remotevirtualenvpath, platform_web_module, "STATIC_ROOT", env.settings)
     activate_path = os.path.join(remotevirtualenvpath, "bin/activate")
     with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath):
         #remove old files optio -c of collect static fail !
-        run("rm -fr \"%s\"" % (remotestaticsitepath))
-        run("python manage.py collectstatic --noinput %s" % ("--settings="+module_settings if module_settings else ""))
+        run("rm -fr \"%s\"/*" % (remotestaticsitepath))
+        run("%s collectstatic --noinput %s" % (admin_cmd, "--settings="+module_settings if module_settings else ""))
 
-def migrate(remotepath, remotevirtualenvpath, module_settings=""):
+def migrate(remotepath, remotevirtualenvpath, module_settings="", admin_cmd="python manage.py"):
     {
         'syncdb': do_syncdb,
         'migrate': do_migrate,
-    }.get(getattr(env, 'migrate_method', 'migrate'), do_syncdb)(remotepath, remotevirtualenvpath, module_settings)
+    }.get(getattr(env, 'migrate_method', 'migrate'), do_syncdb)(remotepath, remotevirtualenvpath, module_settings, admin_cmd)
 
-def do_syncdb(remotepath, remotevirtualenvpath, module_settings=""):
+def do_syncdb(remotepath, remotevirtualenvpath, module_settings="", admin_cmd="python manage.py"):
     activate_path = os.path.join(remotevirtualenvpath, "bin/activate")
     with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath):
-        run("python manage.py syncdb --migrate --noinput %s" % ("--settings="+module_settings if module_settings else ""))
+        run("%s syncdb --migrate --noinput %s" % (admin_cmd, "--settings="+module_settings if module_settings else ""))
 
 
-def do_migrate(remotepath, remotevirtualenvpath, module_settings=""):
+def do_migrate(remotepath, remotevirtualenvpath, module_settings="", admin_cmd="python manage.py"):
     activate_path = os.path.join(remotevirtualenvpath, "bin/activate")
     with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath):
-        run("python manage.py migrate --noinput %s" % ("--settings="+module_settings if module_settings else ""))
+        run("%s migrate --noinput %s" % (admin_cmd, "--settings="+module_settings if module_settings else ""))
 
 
 def create_config(export_path):
@@ -287,6 +290,17 @@
     with prefix("source \"%s\"" % activate_path):
         run("pip install --no-cache-dir -r \"%s\"" % os.path.join(remote_venv_export_path,"virtualenv","web","res","srvr_requirements.txt"))
 
+def do_create_virtualenv_requirement(remote_venv_requirement_path, remotevirtualenvpath, python_version = "2"):
+    print("Create virtualenv export_path : %s - remote venvpath : %s" % (remote_venv_requirement_path, remotevirtualenvpath))
+    with settings(warn_only=True):
+        run("rm -fr \"%s\"" % remotevirtualenvpath)
+    run("mkdir -p \"%s\"" % remotevirtualenvpath)
+    run("virtualenv -p `which python%s` %s" % (python_version, remotevirtualenvpath))
+    with prefix("source \"%s\"" % os.path.join(remotevirtualenvpath, "bin/activate")):
+        run("pip install -r \"%s\"" % remote_venv_requirement_path)
+
+
+
 def do_sync_comp(key, export_path):
     print("do_sync_comp with  path %s" % (export_path))
 
@@ -351,9 +365,9 @@
     if do_check_folder_access:
         check_folder_access()
     if do_migrate:
-        migrate(env.remote_path['src'], env.remote_path['virtualenv'], env.get('settings', ''))
+        migrate(env.remote_path['src'], env.remote_path['virtualenv'], env.get('settings', ''), env.get('admin_cmd', 'python manage.py'))
     if do_collectstatic:
-        collectstatic(env.remote_path['src'], env.remote_path['virtualenv'], env.platform_web_module, env.get('settings', ''))
+        collectstatic(env.remote_path['src'], env.remote_path['virtualenv'], env.platform_web_module, env.get('settings', ''), env.get('admin_cmd', 'python manage.py'))
     sudo(env.web_relaunch_cmd, shell=False)