# HG changeset patch
# User Vincent Hatakeyama <vincent.hatakeyama@xcg-consulting.fr>
# Date 1650612870 -7200
#      Fri Apr 22 09:34:30 2022 +0200
# Node ID 42f3e42cc8268152ab216444eda66ca83b0d1808
# Parent  77afbae22895796d2c0267c8628fcf23ff4ba831
✨ chown when creating data module

diff --git a/NEWS.rst b/NEWS.rst
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -2,6 +2,11 @@
 History
 =======
 
+16.4.0
+------
+
+When creating the data volume to store session and filestore, also run chown on them avoiding to have to do it manually.
+
 16.3.0
 ------
 
diff --git a/odoo_scripts/docker_client.py b/odoo_scripts/docker_client.py
--- a/odoo_scripts/docker_client.py
+++ b/odoo_scripts/docker_client.py
@@ -25,21 +25,23 @@
     @classmethod
     def create_volume(
         cls, volume_name: str, extra_labels: Dict[str, str] = None
-    ) -> docker.models.volumes.Volume:
+    ) -> Tuple[docker.models.volumes.Volume, bool]:
         """Return the volume passed in parameter, creating it if it does not exist.
         :param volume_name: name of the volume to create
         :param extra_labels: extra labels to put on the volume (only on
         creation)
+        :return: a tuple, the first one is the volume, the second is a boolean
+        indicating that the volume has just been created (true if created)
         """
         volumes = cls.client.volumes.list(filters={"name": volume_name})
         if volumes:
             _logger.debug("Volume %s already exists", volume_name)
-            return volumes[0]
+            return (volumes[0], False)
         _logger.debug("Creating volume %s", volume_name)
         labels = dict(odoo_scripts="")
         if extra_labels:
             labels.update(extra_labels)
-        return cls.client.volumes.create(name=volume_name, labels=labels)
+        return (cls.client.volumes.create(name=volume_name, labels=labels), True)
 
     @staticmethod
     def put_file(src, container, dst):
diff --git a/odoo_scripts/docker_dev_start.py b/odoo_scripts/docker_dev_start.py
--- a/odoo_scripts/docker_dev_start.py
+++ b/odoo_scripts/docker_dev_start.py
@@ -40,9 +40,9 @@
 
 _logger = logging.getLogger(__name__)
 
-__version__ = "3.4.0"
+__version__ = "3.4.1"
 __date__ = "2017-08-11"
-__updated__ = "2022-04-04"
+__updated__ = "2022-04-21"
 
 
 def __parser(project_name: str) -> ArgumentParser:
@@ -579,6 +579,9 @@
     arg.append("--db_user")
     arg.append(user)
 
+    # directories to run chown on
+    chown_directories = set()
+
     # data volume handling
     base_data_volume_name = "{}_data".format(project_name)
     if odoo_type == ODOO_7:
@@ -601,8 +604,16 @@
         client.create_volume(filestore_volume_name, {"mounted in": target})
         mounts.append(target, filestore_volume_name)
     else:
-        data_volume_path = "/mnt/data"
+        data_volume_path = "/var/lib/data"
         mounts.append(Mount(data_volume_path, base_data_volume_name))
+        _, created = DockerClient.create_volume(
+            base_data_volume_name,
+            {
+                "mounted in": data_volume_path,
+            },
+        )
+        if created:
+            chown_directories.add(data_volume_path)
         arg.append("--data-dir")
         arg.append(data_volume_path)
 
@@ -627,7 +638,7 @@
             "/opt/odoo/data",
         ]
     else:
-        extra_volumes = ["/var/lib/odoo"]
+        extra_volumes = []
     for extra_volume in extra_volumes:
         volume_name = "{}_{}".format(project_name, extra_volume.replace("/", "_"))
         DockerClient.create_volume(
@@ -641,13 +652,15 @@
 
     # make sure the permission in the volumes are correct
     if run_chown:
-        chown_directories = ["/mnt"]
+        chown_directories.add("/mnt")
         if odoo_type not in (ODOO_7, ODOO_8):
-            chown_directories.append("/var/lib/odoo")
+            chown_directories.add("/var/lib/odoo")
+
+    if chown_directories:
         _logger.info("chown container’s %s to Odoo user", ", ".join(chown_directories))
         client.containers.run(
             image,
-            command=["odoo", "--recursive"] + chown_directories,
+            command=["odoo", "--recursive"] + list(chown_directories),
             remove=True,
             entrypoint="/bin/chown",
             mounts=mounts,
@@ -843,13 +856,15 @@
     modules = c.modules
     _logger.debug("addon modules: %s", ",".join(modules))
     target_module_directory = "/mnt/addons"
-    mounts.extend(modules_mount(modules, project_path, target_module_directory)[0])
-    all_addons_dir = [target_module_directory]
-    if odoo_type in (ODOO_7, ODOO_8):
-        all_addons_dir.append("/opt/odoo/sources/odoo/addons")
-    if all_addons_dir:
-        arg.append("--addons-path")
-        arg.append(",".join(all_addons_dir))
+    mount_list, _ = modules_mount(modules, project_path, target_module_directory)
+    if mount_list:
+        mounts.extend(mount_list)
+        all_addons_dir = [target_module_directory]
+        if odoo_type in (ODOO_7, ODOO_8):
+            all_addons_dir.append("/opt/odoo/sources/odoo/addons")
+        if all_addons_dir:
+            arg.append("--addons-path")
+            arg.append(",".join(all_addons_dir))
 
     apply_flake8(nmspc, odoo_type)
     apply_isort(nmspc, odoo_type)