def get_metadata()

in airavata_django_portal_sdk/user_storage/backends/django_filesystem_provider.py [0:0]


    def get_metadata(self, resource_path):
        # TODO: also return an isDir boolean flag?
        datastore = self.datastore
        if datastore.dir_exists(resource_path):
            directories, files = datastore.list_user_dir(
                resource_path)
            directories_data = []
            for d in directories:
                dpath = os.path.join(resource_path, d)
                created_time = datastore.get_created_time(dpath)
                modified_time = datastore.get_modified_time(dpath)
                size = datastore.size(dpath)
                directories_data.append(
                    {
                        "name": d,
                        "path": datastore.rel_path(dpath),
                        "resource_path": datastore.path(dpath),
                        "created_time": created_time,
                        "modified_time": modified_time,
                        "size": size,
                    }
                )
            files_data = []
            for f in files:
                user_rel_path = os.path.join(resource_path, f)
                if not datastore.exists(user_rel_path):
                    logger.warning(f"listdir skipping {user_rel_path}, "
                                   "does not exist (broken symlink?)")
                    continue
                created_time = datastore.get_created_time(user_rel_path)
                modified_time = datastore.get_modified_time(user_rel_path)
                size = datastore.size(user_rel_path)
                full_path = datastore.path(user_rel_path)
                files_data.append(
                    {
                        "name": f,
                        "path": datastore.rel_path(full_path),
                        "resource_path": full_path,
                        "created_time": created_time,
                        "modified_time": modified_time,
                        "size": size,
                    }
                )
            return directories_data, files_data
        elif datastore.exists(resource_path):

            created_time = datastore.get_created_time(resource_path)
            modified_time = datastore.get_modified_time(resource_path)
            size = datastore.size(resource_path)
            full_path = datastore.path(resource_path)
            return [], [
                {
                    "name": os.path.basename(resource_path),
                    "path": datastore.rel_path(full_path),
                    "resource_path": full_path,
                    "created_time": created_time,
                    "modified_time": modified_time,
                    "size": size,
                }
            ]
        else:
            raise ObjectDoesNotExist(f"User storage path does not exist {resource_path}")