From efed6b01d2e04d8790dcdb39b16d4ed8940636cb Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Thu, 14 Mar 2024 17:54:55 +0000 Subject: [PATCH] drive: fix server side copy with metadata from my drive to shared drive Before this change trying to server side copy an object from a my drive to a shared drive using --metadata caused this error: Sharing restrictions cannot be set on a shared drive item., teamDrivesSharingRestrictionNotAllowed This was because we were setting the "writers-can-share" metadata which isn't allowed on shared drives --- backend/drive/metadata.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/backend/drive/metadata.go b/backend/drive/metadata.go index 18f9b9731..72a58c154 100644 --- a/backend/drive/metadata.go +++ b/backend/drive/metadata.go @@ -37,7 +37,7 @@ var systemMetadataInfo = map[string]fs.MetadataHelp{ Example: "true", }, "writers-can-share": { - Help: "Whether users with only writer permission can modify the file's permissions. Not populated for items in shared drives.", + Help: "Whether users with only writer permission can modify the file's permissions. Not populated and ignored when setting for items in shared drives.", Type: "boolean", Example: "false", }, @@ -528,8 +528,12 @@ func (f *Fs) updateMetadata(ctx context.Context, updateInfo *drive.File, meta fs return nil, err } case "writers-can-share": - if err := parseBool(&updateInfo.WritersCanShare); err != nil { - return nil, err + if !f.isTeamDrive { + if err := parseBool(&updateInfo.WritersCanShare); err != nil { + return nil, err + } + } else { + fs.Debugf(f, "Ignoring %s=%s as can't set on shared drives", k, v) } case "viewed-by-me": // Can't write this