|
@@ -2,9 +2,34 @@ from __future__ import unicode_literals
|
|
|
from django.conf import settings
|
|
|
from random import randint
|
|
|
from jinja2 import Environment, PackageLoader, select_autoescape
|
|
|
+from api.utils.docker_api import (
|
|
|
+ execute_command,
|
|
|
+ run_container
|
|
|
+)
|
|
|
+from api.utils.command import execute
|
|
|
import os
|
|
|
import socket
|
|
|
import time
|
|
|
+import unicodedata
|
|
|
+import stringcase
|
|
|
+
|
|
|
+'''
|
|
|
+'''
|
|
|
+def normalize_name(name = None):
|
|
|
+ if not name:
|
|
|
+ return name
|
|
|
+
|
|
|
+ try:
|
|
|
+ name = unicodedata.normalize('NFKD', name)
|
|
|
+ name = name.encode('ASCII', 'ignore')
|
|
|
+ except TypeError:
|
|
|
+ pass
|
|
|
+
|
|
|
+ name = stringcase.trimcase(name)
|
|
|
+ name = stringcase.lowercase(name)
|
|
|
+ name = stringcase.snakecase(name)
|
|
|
+
|
|
|
+ return name
|
|
|
|
|
|
'''
|
|
|
'''
|
|
@@ -18,7 +43,6 @@ def randomize_port():
|
|
|
|
|
|
return port
|
|
|
|
|
|
-
|
|
|
'''
|
|
|
'''
|
|
|
def check_port(port=0):
|
|
@@ -54,10 +78,23 @@ def create_folders(name=None):
|
|
|
|
|
|
folders = settings.ODOO_DEFAULT_FOLDERS
|
|
|
for folder in folders:
|
|
|
- full_path = os.path.join(settings.ODOO_ROOT_PATH, name, folder)
|
|
|
+ full_path = os.path.join(settings.ODOO_ROOT_PATH, name, folder.strip())
|
|
|
os.makedirs(full_path)
|
|
|
time.sleep(1)
|
|
|
|
|
|
+ return True
|
|
|
+
|
|
|
+'''
|
|
|
+'''
|
|
|
+def apply_permissions(name=None):
|
|
|
+ if not name:
|
|
|
+ return False
|
|
|
+
|
|
|
+ full_path = os.path.join(settings.ODOO_ROOT_PATH, name)
|
|
|
+ execute(['chmod', '-Rf', '777', full_path])
|
|
|
+
|
|
|
+ return True
|
|
|
+
|
|
|
'''
|
|
|
'''
|
|
|
def create_configuration(name=None):
|
|
@@ -78,6 +115,8 @@ def create_configuration(name=None):
|
|
|
|
|
|
template_rendered = template.stream({
|
|
|
'admin_password': settings.ODOO_ADMIN_PASSWORD,
|
|
|
+ 'db_host': settings.ODOO_DB_HOST,
|
|
|
+ 'db_port': settings.ODOO_DB_PORT,
|
|
|
'db_name': name,
|
|
|
'db_user': settings.ODOO_DB_USER,
|
|
|
'db_password': settings.ODOO_DB_PASSWORD
|
|
@@ -85,4 +124,28 @@ def create_configuration(name=None):
|
|
|
|
|
|
template_rendered.dump(os.path.join(conf_path, settings.ODOO_CONF_FILENAME + '.conf'))
|
|
|
|
|
|
- return True
|
|
|
+ return True
|
|
|
+
|
|
|
+'''
|
|
|
+'''
|
|
|
+def create_database(name=None):
|
|
|
+ if not name:
|
|
|
+ return False
|
|
|
+
|
|
|
+ return execute_command(settings.ODOO_DB_CONTAINER, 'createdb -U %s %s' % (settings.ODOO_DB_USER, name))
|
|
|
+
|
|
|
+'''
|
|
|
+'''
|
|
|
+def create_odoo_container(name=None, ports=[]):
|
|
|
+ if not name:
|
|
|
+ return False
|
|
|
+
|
|
|
+ ports = dict(map(lambda p: ('%d/tcp' % 8069, p), ports))
|
|
|
+ volumes = dict(map(lambda f: (os.path.join(settings.ODOO_ROOT_PATH, name, f.strip()), {
|
|
|
+ 'bind': settings.ODOO_DEFAULT_FOLDERS[f].strip(),
|
|
|
+ 'mode': 'rw'
|
|
|
+ }) , settings.ODOO_DEFAULT_FOLDERS))
|
|
|
+
|
|
|
+ run_container(settings.ODOO_IMAGE, name, ports, volumes, net=settings.DOCKER_NETWORK_NAME)
|
|
|
+
|
|
|
+ return True
|