# HG changeset patch
# User Vincent Hatakeyama <vincent.hatakeyama@xcg-consulting.fr>
# Date 1562674152 -7200
#      Tue Jul 09 14:09:12 2019 +0200
# Node ID 4f0257e9564c5f7e092c2de74c5dc473d888dc0f
# Parent  07c327d902e5aad83d79a803b0f2edac80ef1ad9
📝 handle odoo 7 mount points better to keep sessions

also cleaned up handling mount points

diff --git a/docker_dev_start.py b/docker_dev_start.py
--- a/docker_dev_start.py
+++ b/docker_dev_start.py
@@ -514,29 +514,50 @@
         password = 'odoo'
 
     # data volume handling
-    if odoo_type != 'odoo7':
-        data_volume_name = '{}_data'.format(project_name)
-        _logger.debug('Using data volume %s', data_volume_name)
-        createVolume(docker_client, data_volume_name)
-        # make sure the permission in the volume are correct
-        mount_opts = '{}:/mnt/data'.format(data_volume_name)
-        # TODO replace by something cleaner if possible
-        call([
-            'docker', 'run', '--rm', '-v',
-            mount_opts, 'busybox', 'chmod', '-R', '777', '/mnt/data',
-        ])
+    if odoo_type == 'odoo7':
+        _logger.debug('Only sessions volume for this odoo version')
+        # this path is in odoo code, the last part is the system user
+        data_volume_path = '/tmp/oe-sessions-{}'.format('odoo')
+    else:
+        data_volume_path = '/mnt/data'
+        arg.append('--data-dir {}'.format(data_volume_path))
+    data_volume_name = '{}_data'.format(project_name)
+    _logger.debug('Using data volume %s', data_volume_name)
+    createVolume(docker_client, data_volume_name)
+    # make sure the permission in the volume are correct
+    mount_opts = '{}:/mnt'.format(data_volume_name)
+    # TODO replace by something cleaner if possible
+    call([
+        'docker', 'run', '--rm', '-v', mount_opts, '--entrypoint',
+        '/bin/chown', image, 'odoo', '/mnt',
+    ])
 
-        binds.append('{}:/mnt/data'.format(data_volume_name))
-        arg.append('--data-dir /mnt/data')
-    else:
-        _logger.debug('No data volume for this odoo version')
+    binds.append('{}:{}'.format(data_volume_name, data_volume_path))
 
     # avoid the duplication of unbind volumes with all addons
-    # additionnal_addons only in odoo < 10
-    for extra_volume in ['additional_addons', 'var', 'data']:
-        volume_name = '{}_opt_odoo_{}'.format(project_name, extra_volume)
+    if odoo_type == 'odoo7':
+        extra_volumes = [
+            '/opt/odoo/additional_addons', '/opt/odoo/var',
+            # not used but declared as a mount point in Dockerfile :-(
+            '/opt/odoo/data',
+        ]
+    elif odoo_type == 'odoo8':
+        extra_volumes = [
+            '/opt/odoo/additional_addons', '/opt/odoo/var', '/opt/odoo/data',
+        ]
+    elif odoo_type == 'odoo10':
+        extra_volumes = [
+            '/opt/odoo/additional_addons', '/opt/odoo/var', '/opt/odoo/data',
+        ]
+    else:
+        extra_volumes = [
+            '/var/lib/odoo',
+        ]
+    for extra_volume in extra_volumes:
+        volume_name = '{}_{}'.format(
+            project_name, extra_volume.replace('/', '_'))
         # volume = createVolume(docker_client, volume_name)
-        binds.append('{}:/opt/odoo/{}'.format(volume_name, extra_volume))
+        binds.append('{}:{}'.format(volume_name, extra_volume))
 
     start_py3o_stack = 'report_py3o_fusion_server' in module_list