from __future__ import unicode_literals from django.conf import settings from random import randint from jinja2 import Environment, PackageLoader, select_autoescape import os import socket import time ''' ''' def randomize_port(): ports = settings.ODOO_PORTS_RANGE port = 0 while not check_port(port): time.sleep(1) port = randint(ports[0], ports[1]) return port ''' ''' def check_port(port=0): if port == 0: return False ok = False s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.bind((settings.DOCKER_NETWORK, port)) ok = True except socket.error: ok = False s.close() return ok ''' ''' def check_name(name=None): if not name: return False full_path = os.path.join(settings.ODOO_ROOT_PATH, name) return os.path.exists(full_path) ''' ''' def create_folders(name=None): if not name: return False folders = settings.ODOO_DEFAULT_FOLDERS for folder in folders: full_path = os.path.join(settings.ODOO_ROOT_PATH, name, folder) os.makedirs(full_path) time.sleep(1) ''' ''' def create_configuration(name=None): if not name: return False conf_path = os.path.join(settings.ODOO_ROOT_PATH, name, 'config') if not os.path.exists(conf_path): return False env = Environment( loader=PackageLoader('api', 'templates'), autoescape=select_autoescape(['j2']) ) template = env.get_template(settings.ODOO_CONF_FILENAME + '.j2') template_rendered = template.stream({ 'admin_password': settings.ODOO_ADMIN_PASSWORD, 'db_name': name, 'db_user': settings.ODOO_DB_USER, 'db_password': settings.ODOO_DB_PASSWORD }) template_rendered.dump(os.path.join(conf_path, settings.ODOO_CONF_FILENAME + '.conf')) return True