odoo_api.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from __future__ import unicode_literals
  2. from django.conf import settings
  3. from random import randint
  4. from jinja2 import Environment, PackageLoader, select_autoescape
  5. import os
  6. import socket
  7. import time
  8. '''
  9. '''
  10. def randomize_port():
  11. ports = settings.ODOO_PORTS_RANGE
  12. port = 0
  13. while not check_port(port):
  14. time.sleep(1)
  15. port = randint(ports[0], ports[1])
  16. return port
  17. '''
  18. '''
  19. def check_port(port=0):
  20. if port == 0:
  21. return False
  22. ok = False
  23. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  24. try:
  25. s.bind((settings.DOCKER_NETWORK, port))
  26. ok = True
  27. except socket.error:
  28. ok = False
  29. s.close()
  30. return ok
  31. '''
  32. '''
  33. def check_name(name=None):
  34. if not name:
  35. return False
  36. full_path = os.path.join(settings.ODOO_ROOT_PATH, name)
  37. return os.path.exists(full_path)
  38. '''
  39. '''
  40. def create_folders(name=None):
  41. if not name:
  42. return False
  43. folders = settings.ODOO_DEFAULT_FOLDERS
  44. for folder in folders:
  45. full_path = os.path.join(settings.ODOO_ROOT_PATH, name, folder)
  46. os.makedirs(full_path)
  47. time.sleep(1)
  48. '''
  49. '''
  50. def create_configuration(name=None):
  51. if not name:
  52. return False
  53. conf_path = os.path.join(settings.ODOO_ROOT_PATH, name, 'config')
  54. if not os.path.exists(conf_path):
  55. return False
  56. env = Environment(
  57. loader=PackageLoader('api', 'templates'),
  58. autoescape=select_autoescape(['j2'])
  59. )
  60. template = env.get_template(settings.ODOO_CONF_FILENAME + '.j2')
  61. template_rendered = template.stream({
  62. 'admin_password': settings.ODOO_ADMIN_PASSWORD,
  63. 'db_name': name,
  64. 'db_user': settings.ODOO_DB_USER,
  65. 'db_password': settings.ODOO_DB_PASSWORD
  66. })
  67. template_rendered.dump(os.path.join(conf_path, settings.ODOO_CONF_FILENAME + '.conf'))
  68. return True