diff --git a/docs/GamUpdates.md b/docs/GamUpdates.md index 4c501222..4c24a51e 100644 --- a/docs/GamUpdates.md +++ b/docs/GamUpdates.md @@ -10,6 +10,13 @@ Add the `-s` option to the end of the above commands to suppress creating the `g See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation +### 6.76.09 + +Updated `gam update|delete|info adminrole` to handle the following error: +``` +ERROR: 400: failedPrecondition - Precondition check failed. +``` + ### 6.76.08 Updated `` to `"|(,|)*"` diff --git a/docs/How-to-Upgrade-from-Standard-GAM.md b/docs/How-to-Upgrade-from-Standard-GAM.md index 1a85fdcb..d299543e 100644 --- a/docs/How-to-Upgrade-from-Standard-GAM.md +++ b/docs/How-to-Upgrade-from-Standard-GAM.md @@ -335,7 +335,7 @@ writes the credentials into the file oauth2.txt. admin@server:/Users/admin/bin/gamadv-xtd3$ rm -f /Users/admin/GAMConfig/oauth2.txt admin@server:/Users/admin/bin/gamadv-xtd3$ ./gam version WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found -GAMADV-XTD3 6.76.08 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.76.09 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.3 64-bit final MacOS Sonoma 14.4.1 x86_64 @@ -1009,7 +1009,7 @@ writes the credentials into the file oauth2.txt. C:\GAMADV-XTD3>del C:\GAMConfig\oauth2.txt C:\GAMADV-XTD3>gam version WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found -GAMADV-XTD3 6.76.08 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.76.09 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.3 64-bit final Windows-10-10.0.17134 AMD64 diff --git a/docs/Users-Drive-Files-Display.md b/docs/Users-Drive-Files-Display.md index 48386366..c307a8de 100644 --- a/docs/Users-Drive-Files-Display.md +++ b/docs/Users-Drive-Files-Display.md @@ -1036,6 +1036,10 @@ When `allfields` is specified (or no fields are specified), use `showshareddrive when shared drives are queried/selected. In this case, the Drive API returns the permission IDs but not the permissions themselves so GAM makes an additional API call per file to get the permissions. +By default, when `showimimetype` and `filepath|fullpath`are both specified, GAM locally filters files by MimeType; +this may be slow if the user has a large number of files. Adding the option `mimetypeinquery` or `mimetypeinquery true` +causes GAM to have Google filter files by MimeType; this will increase performance. + See [Select files for Display file counts, list, tree](#select-files-for-display-file-counts-list-tree) ## File selection by name and entity shortcuts for Display file list diff --git a/docs/Version-and-Help.md b/docs/Version-and-Help.md index f1f2fe0e..88153805 100644 --- a/docs/Version-and-Help.md +++ b/docs/Version-and-Help.md @@ -3,7 +3,7 @@ Print the current version of Gam with details ``` gam version -GAMADV-XTD3 6.76.08 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.76.09 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.3 64-bit final MacOS Sonoma 14.4.1 x86_64 @@ -15,7 +15,7 @@ Time: 2023-06-02T21:10:00-07:00 Print the current version of Gam with details and time offset information ``` gam version timeoffset -GAMADV-XTD3 6.76.08 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.76.09 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.3 64-bit final MacOS Sonoma 14.4.1 x86_64 @@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second Print the current version of Gam with extended details and SSL information ``` gam version extended -GAMADV-XTD3 6.76.08 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.76.09 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.3 64-bit final MacOS Sonoma 14.4.1 x86_64 @@ -64,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64 Path: /Users/Admin/bin/gamadv-xtd3 Version Check: Current: 5.35.08 - Latest: 6.76.08 + Latest: 6.76.09 echo $? 1 ``` @@ -72,7 +72,7 @@ echo $? Print the current version number without details ``` gam version simple -6.76.08 +6.76.09 ``` In Linux/MacOS you can do: ``` @@ -82,7 +82,7 @@ echo $VER Print the current version of Gam and address of this Wiki ``` gam help -GAM 6.76.08 - https://github.com/taers232c/GAMADV-XTD3 +GAM 6.76.09 - https://github.com/taers232c/GAMADV-XTD3 Ross Scroggs Python 3.12.3 64-bit final MacOS Sonoma 14.4.1 x86_64 diff --git a/src/GamUpdate.txt b/src/GamUpdate.txt index 6bbb6ef5..5ea86403 100644 --- a/src/GamUpdate.txt +++ b/src/GamUpdate.txt @@ -2,6 +2,13 @@ Merged GAM-Team version +6.76.09 + +Updated `gam update|delete|info adminrole` to handle the following error: +``` +ERROR: 400: failedPrecondition - Precondition check failed. +``` + 6.76.08 Updated `` to `"|(,|)*"` diff --git a/src/gam/__init__.py b/src/gam/__init__.py index 3bcb9e7b..3ef785d1 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -16186,12 +16186,12 @@ def doCreateUpdateAdminRoles(): customer=GC.Values[GC.CUSTOMER_ID], body=body, fields='roleId,roleName') else: result = callGAPI(cd.roles(), 'patch', - throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND, GAPI.FORBIDDEN]+[GAPI.NOT_FOUND], + throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND, GAPI.FORBIDDEN]+[GAPI.NOT_FOUND, GAPI.FAILED_PRECONDITION], customer=GC.Values[GC.CUSTOMER_ID], roleId=roleId, body=body, fields='roleId,roleName') entityActionPerformed([Ent.ADMIN_ROLE, f"{result['roleName']}({result['roleId']})"]) except GAPI.duplicate as e: entityActionFailedWarning([Ent.ADMIN_ROLE, f"{body['roleName']}"], str(e)) - except (GAPI.notFound, GAPI.forbidden) as e: + except (GAPI.notFound, GAPI.forbidden, GAPI.failedPrecondition) as e: entityActionFailedWarning([Ent.ADMIN_ROLE, roleId], str(e)) except (GAPI.badRequest, GAPI.customerNotFound): accessErrorExit(cd) @@ -16203,10 +16203,10 @@ def doDeleteAdminRole(): checkForExtraneousArguments() try: callGAPI(cd.roles(), 'delete', - throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND, GAPI.FORBIDDEN]+[GAPI.NOT_FOUND], + throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND, GAPI.FORBIDDEN]+[GAPI.NOT_FOUND, GAPI.FAILED_PRECONDITION], customer=GC.Values[GC.CUSTOMER_ID], roleId=roleId) entityActionPerformed([Ent.ADMIN_ROLE, f"{role}({roleId})"]) - except (GAPI.notFound, GAPI.forbidden) as e: + except (GAPI.notFound, GAPI.forbidden, GAPI.failedPrecondition) as e: entityActionFailedWarning([Ent.ADMIN_ROLE, roleId], str(e)) except (GAPI.badRequest, GAPI.customerNotFound): accessErrorExit(cd) @@ -16247,12 +16247,12 @@ def doInfoAdminRole(): fields = ','.join(set(fieldsList)) try: role = callGAPI(cd.roles(), 'get', - throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND, GAPI.FORBIDDEN]+[GAPI.NOT_FOUND], + throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND, GAPI.FORBIDDEN]+[GAPI.NOT_FOUND, GAPI.FAILED_PRECONDITION], customer=GC.Values[GC.CUSTOMER_ID], roleId=roleId, fields=fields) role.setdefault('isSuperAdminRole', False) role.setdefault('isSystemRole', False) _showAdminRole(role) - except (GAPI.notFound, GAPI.forbidden) as e: + except (GAPI.notFound, GAPI.forbidden, GAPI.failedPrecondition) as e: entityActionFailedWarning([Ent.ADMIN_ROLE, roleId], str(e)) except (GAPI.badRequest, GAPI.customerNotFound): accessErrorExit(cd) @@ -16406,9 +16406,9 @@ def doPrintShowAdmins(): if roleId not in rolePrivileges: try: rolePrivileges[roleId] = callGAPI(cd.roles(), 'get', - throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND, GAPI.FORBIDDEN]+[GAPI.NOT_FOUND], + throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND, GAPI.FORBIDDEN]+[GAPI.NOT_FOUND, GAPI.FAILED_PRECONDITION], customer=GC.Values[GC.CUSTOMER_ID], roleId=roleId, fields='rolePrivileges') - except (GAPI.notFound, GAPI.forbidden) as e: + except (GAPI.notFound, GAPI.forbidden, GAPI.failedPrecondition) as e: entityActionFailedExit([Ent.USER, userKey, Ent.ADMIN_ROLE, admin['roleId']], str(e)) rolePrivileges[roleId] = None except (GAPI.badRequest, GAPI.customerNotFound): @@ -43392,7 +43392,7 @@ def doPrintUsers(entityList=None): elif schemaParms['customFieldMask'] and not query: entityActionFailedWarning([Ent.USER, None], invalidUserSchema(schemaParms['customFieldMask'])) elif query and schemaParms['customFieldMask']: - entityActionFailedWarning([Ent.USER, None], f'{invalidQuery(query)} or {invalidUserSchema(schemaParms['customFieldMask'])}') + entityActionFailedWarning([Ent.USER, None], f'{invalidQuery(query)} or {invalidUserSchema(schemaParms["customFieldMask"])}') else: entityActionFailedWarning([Ent.USER, None], str(e)) continue