gam7 7.5.3__py3-none-any.whl → 7.5.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of gam7 might be problematic. Click here for more details.
- gam/__init__.py +141 -105
- gam/gamlib/glgapi.py +1 -1
- {gam7-7.5.3.dist-info → gam7-7.5.5.dist-info}/METADATA +1 -1
- {gam7-7.5.3.dist-info → gam7-7.5.5.dist-info}/RECORD +7 -7
- {gam7-7.5.3.dist-info → gam7-7.5.5.dist-info}/WHEEL +0 -0
- {gam7-7.5.3.dist-info → gam7-7.5.5.dist-info}/entry_points.txt +0 -0
- {gam7-7.5.3.dist-info → gam7-7.5.5.dist-info}/licenses/LICENSE +0 -0
gam/__init__.py
CHANGED
|
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
|
|
|
25
25
|
"""
|
|
26
26
|
|
|
27
27
|
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
|
28
|
-
__version__ = '7.05.
|
|
28
|
+
__version__ = '7.05.05'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -5751,14 +5751,18 @@ def convertUIDtoEmailAddressWithType(emailAddressOrUID, cd=None, sal=None, email
|
|
|
5751
5751
|
return (uid, 'serviceaccount')
|
|
5752
5752
|
return (normalizedEmailAddressOrUID, 'unknown')
|
|
5753
5753
|
|
|
5754
|
+
NON_EMAIL_MEMBER_PREFIXES = (
|
|
5755
|
+
"cbcm-browser.",
|
|
5756
|
+
"chrome-os-device.",
|
|
5757
|
+
)
|
|
5754
5758
|
# Convert UID to email address
|
|
5755
5759
|
def convertUIDtoEmailAddress(emailAddressOrUID, cd=None, emailTypes=None,
|
|
5756
5760
|
checkForCustomerId=False, ciGroupsAPI=False, aliasAllowed=True):
|
|
5757
5761
|
if ciGroupsAPI:
|
|
5758
|
-
if emailAddressOrUID.startswith(
|
|
5762
|
+
if emailAddressOrUID.startswith(NON_EMAIL_MEMBER_PREFIXES):
|
|
5759
5763
|
return emailAddressOrUID
|
|
5760
5764
|
normalizedEmailAddressOrUID = normalizeEmailAddressOrUID(emailAddressOrUID, ciGroupsAPI=ciGroupsAPI)
|
|
5761
|
-
if normalizedEmailAddressOrUID.startswith(
|
|
5765
|
+
if normalizedEmailAddressOrUID.startswith(NON_EMAIL_MEMBER_PREFIXES):
|
|
5762
5766
|
return normalizedEmailAddressOrUID
|
|
5763
5767
|
email, _ = convertUIDtoEmailAddressWithType(emailAddressOrUID, cd, emailTypes,
|
|
5764
5768
|
checkForCustomerId, ciGroupsAPI, aliasAllowed)
|
|
@@ -18918,6 +18922,7 @@ CONTACT_USER_DEFINED_FIELDS = 'User Defined Fields'
|
|
|
18918
18922
|
CONTACT_WEBSITES = 'Websites'
|
|
18919
18923
|
#
|
|
18920
18924
|
class ContactsManager():
|
|
18925
|
+
|
|
18921
18926
|
CONTACT_ARGUMENT_TO_PROPERTY_MAP = {
|
|
18922
18927
|
'json': CONTACT_JSON,
|
|
18923
18928
|
'name': CONTACT_NAME,
|
|
@@ -21298,7 +21303,7 @@ def queryPeopleContacts(people, contactQuery, fields, sortOrder, entityType, use
|
|
|
21298
21303
|
showMessage = pageMessage.replace(TOTAL_ITEMS_MARKER, str(totalItems))
|
|
21299
21304
|
writeGotMessage(showMessage.replace('{0}', str(Ent.Choose(Ent.PEOPLE_CONTACT, totalItems))))
|
|
21300
21305
|
return entityList
|
|
21301
|
-
except GAPI.permissionDenied as e:
|
|
21306
|
+
except (GAPI.permissionDenied, GAPI.failedPrecondition) as e:
|
|
21302
21307
|
ClientAPIAccessDeniedExit(str(e))
|
|
21303
21308
|
except (GAPI.serviceNotAvailable, GAPI.forbidden):
|
|
21304
21309
|
entityUnknownWarning(entityType, user, i, count)
|
|
@@ -21448,7 +21453,7 @@ def createUserPeopleContact(users):
|
|
|
21448
21453
|
csvPF.WriteRow(row)
|
|
21449
21454
|
except GAPI.invalidArgument as e:
|
|
21450
21455
|
entityActionFailedWarning([entityType, user, peopleEntityType, None], str(e), i, count)
|
|
21451
|
-
except GAPI.permissionDenied as e:
|
|
21456
|
+
except (GAPI.permissionDenied, GAPI.failedPrecondition) as e:
|
|
21452
21457
|
ClientAPIAccessDeniedExit(str(e))
|
|
21453
21458
|
except (GAPI.serviceNotAvailable, GAPI.forbidden):
|
|
21454
21459
|
ClientAPIAccessDeniedExit()
|
|
@@ -21613,7 +21618,7 @@ def _clearUpdatePeopleContacts(users, updateContacts):
|
|
|
21613
21618
|
entityActionFailedWarning([entityType, user, peopleEntityType, resourceName], str(e), j, jcount)
|
|
21614
21619
|
except (GAPI.notFound, GAPI.internalError):
|
|
21615
21620
|
entityActionFailedWarning([entityType, user, peopleEntityType, resourceName], Msg.DOES_NOT_EXIST, j, jcount)
|
|
21616
|
-
except GAPI.permissionDenied as e:
|
|
21621
|
+
except (GAPI.permissionDenied, GAPI.failedPrecondition) as e:
|
|
21617
21622
|
ClientAPIAccessDeniedExit(str(e))
|
|
21618
21623
|
except (GAPI.serviceNotAvailable, GAPI.forbidden):
|
|
21619
21624
|
ClientAPIAccessDeniedExit()
|
|
@@ -21763,7 +21768,7 @@ def dedupReplaceDomainUserPeopleContacts(users):
|
|
|
21763
21768
|
entityActionFailedWarning([entityType, user, peopleEntityType, resourceName], str(e), j, jcount)
|
|
21764
21769
|
except (GAPI.notFound, GAPI.internalError):
|
|
21765
21770
|
entityActionFailedWarning([entityType, user, peopleEntityType, resourceName], Msg.DOES_NOT_EXIST, j, jcount)
|
|
21766
|
-
except GAPI.permissionDenied as e:
|
|
21771
|
+
except (GAPI.permissionDenied, GAPI.failedPrecondition) as e:
|
|
21767
21772
|
ClientAPIAccessDeniedExit(str(e))
|
|
21768
21773
|
except (GAPI.serviceNotAvailable, GAPI.forbidden):
|
|
21769
21774
|
ClientAPIAccessDeniedExit()
|
|
@@ -21818,7 +21823,7 @@ def deleteUserPeopleContacts(users):
|
|
|
21818
21823
|
entityActionPerformed([entityType, user, peopleEntityType, resourceName], j, jcount)
|
|
21819
21824
|
except (GAPI.notFound, GAPI.internalError):
|
|
21820
21825
|
entityActionFailedWarning([entityType, user, peopleEntityType, resourceName], Msg.DOES_NOT_EXIST, j, jcount)
|
|
21821
|
-
except GAPI.permissionDenied as e:
|
|
21826
|
+
except (GAPI.permissionDenied, GAPI.failedPrecondition) as e:
|
|
21822
21827
|
ClientAPIAccessDeniedExit(str(e))
|
|
21823
21828
|
except (GAPI.serviceNotAvailable, GAPI.forbidden):
|
|
21824
21829
|
ClientAPIAccessDeniedExit()
|
|
@@ -22115,7 +22120,7 @@ def _infoPeople(users, entityType, source):
|
|
|
22115
22120
|
except GAPI.invalidArgument as e:
|
|
22116
22121
|
entityActionFailedWarning([entityType, user, peopleEntityType, resourceName], str(e), j, jcount)
|
|
22117
22122
|
continue
|
|
22118
|
-
except GAPI.permissionDenied as e:
|
|
22123
|
+
except (GAPI.permissionDenied, GAPI.failedPrecondition) as e:
|
|
22119
22124
|
ClientAPIAccessDeniedExit(str(e))
|
|
22120
22125
|
except (GAPI.serviceNotAvailable, GAPI.forbidden):
|
|
22121
22126
|
ClientAPIAccessDeniedExit()
|
|
@@ -22530,7 +22535,7 @@ def _printShowPeople(source):
|
|
|
22530
22535
|
pageSize=GC.Values[GC.PEOPLE_MAX_RESULTS],
|
|
22531
22536
|
sources=sources, mergeSources=mergeSources,
|
|
22532
22537
|
readMask=fields, fields='nextPageToken,people', **kwargs)
|
|
22533
|
-
except GAPI.permissionDenied as e:
|
|
22538
|
+
except (GAPI.permissionDenied, GAPI.failedPrecondition) as e:
|
|
22534
22539
|
ClientAPIAccessDeniedExit(str(e))
|
|
22535
22540
|
except (GAPI.serviceNotAvailable, GAPI.forbidden):
|
|
22536
22541
|
ClientAPIAccessDeniedExit()
|
|
@@ -22569,14 +22574,14 @@ def doInfoDomainPeopleContacts():
|
|
|
22569
22574
|
# [countsonly]
|
|
22570
22575
|
# [allfields|(fields <PeopleFieldNameList>)] [showmetadata]
|
|
22571
22576
|
# [formatjson]
|
|
22572
|
-
# gam print peoplecontacts [todrive <ToDriveAttribute>*]
|
|
22577
|
+
# gam print domaincontacts|peoplecontacts [todrive <ToDriveAttribute>*]
|
|
22573
22578
|
# [sources <PeopleSourceName>]
|
|
22574
22579
|
# [query <String>]
|
|
22575
22580
|
# [mergesources <PeopleMergeSourceName>]
|
|
22576
22581
|
# [countsonly]
|
|
22577
22582
|
# [allfields|(fields <PeopleFieldNameList>)] [showmetadata]
|
|
22578
22583
|
# [formatjson [quotechar <Character>]]
|
|
22579
|
-
# gam show peoplecontacts
|
|
22584
|
+
# gam show domaincontacts|peoplecontacts
|
|
22580
22585
|
# [sources <PeopleSourceName>]
|
|
22581
22586
|
# [query <String>]
|
|
22582
22587
|
# [mergesources <PeopleMergeSourceName>]
|
|
@@ -22652,7 +22657,7 @@ def printShowUserPeopleProfiles(users):
|
|
|
22652
22657
|
except GAPI.notFound:
|
|
22653
22658
|
entityUnknownWarning(Ent.PEOPLE_PROFILE, user, i, count)
|
|
22654
22659
|
continue
|
|
22655
|
-
except GAPI.permissionDenied as e:
|
|
22660
|
+
except (GAPI.permissionDenied, GAPI.failedPrecondition) as e:
|
|
22656
22661
|
ClientAPIAccessDeniedExit(str(e))
|
|
22657
22662
|
except (GAPI.serviceNotAvailable, GAPI.forbidden):
|
|
22658
22663
|
ClientAPIAccessDeniedExit()
|
|
@@ -22808,7 +22813,7 @@ def _processPeopleContactPhotos(users, function):
|
|
|
22808
22813
|
entityDoesNotHaveItemWarning([entityType, user, peopleEntityType, resourceName, Ent.PHOTO, filename], j, jcount)
|
|
22809
22814
|
except (GAPI.invalidArgument, OSError, IOError) as e:
|
|
22810
22815
|
entityActionFailedWarning([entityType, user, peopleEntityType, resourceName, Ent.PHOTO, filename], str(e), j, jcount)
|
|
22811
|
-
except GAPI.permissionDenied as e:
|
|
22816
|
+
except (GAPI.permissionDenied, GAPI.failedPrecondition) as e:
|
|
22812
22817
|
ClientAPIAccessDeniedExit(str(e))
|
|
22813
22818
|
except (GAPI.serviceNotAvailable, GAPI.forbidden):
|
|
22814
22819
|
ClientAPIAccessDeniedExit()
|
|
@@ -34182,7 +34187,7 @@ def doPrintGroupMembers():
|
|
|
34182
34187
|
for name in info['names']:
|
|
34183
34188
|
if name['metadata']['source']['type'] == sourceType:
|
|
34184
34189
|
return name['displayName']
|
|
34185
|
-
except (GAPI.notFound, GAPI.serviceNotAvailable, GAPI.forbidden, GAPI.permissionDenied):
|
|
34190
|
+
except (GAPI.notFound, GAPI.serviceNotAvailable, GAPI.forbidden, GAPI.permissionDenied, GAPI.failedPrecondition):
|
|
34186
34191
|
pass
|
|
34187
34192
|
return unknownName
|
|
34188
34193
|
|
|
@@ -35729,10 +35734,16 @@ def _showPolicies(policies, FJQC, add_warnings, no_appnames,
|
|
|
35729
35734
|
_showPolicy(policy, FJQC, i, count)
|
|
35730
35735
|
Ind.Decrement()
|
|
35731
35736
|
|
|
35737
|
+
def _checkPoliciesWithDASA():
|
|
35738
|
+
if GC.Values[GC.ENABLE_DASA]:
|
|
35739
|
+
systemErrorExit(USAGE_ERROR_RC,
|
|
35740
|
+
Msg.COMMAND_NOT_COMPATIBLE_WITH_ENABLE_DASA.format(Act.ToPerform().lower(), Cmd.ARG_CIPOLICIES))
|
|
35741
|
+
|
|
35732
35742
|
# gam info policies <CIPolicyNameEntity>
|
|
35733
35743
|
# [nowarnings] [noappnames]
|
|
35734
35744
|
# [formatjson]
|
|
35735
35745
|
def doInfoCIPolicies():
|
|
35746
|
+
_checkPoliciesWithDASA()
|
|
35736
35747
|
groups_ci = buildGAPIObject(API.CLOUDIDENTITY_GROUPS)
|
|
35737
35748
|
ci = buildGAPIObject(API.CLOUDIDENTITY_POLICY)
|
|
35738
35749
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
@@ -35791,6 +35802,7 @@ def doPrintShowCIPolicies():
|
|
|
35791
35802
|
ensure_ascii=False,
|
|
35792
35803
|
sort_keys=True)})
|
|
35793
35804
|
|
|
35805
|
+
_checkPoliciesWithDASA()
|
|
35794
35806
|
groups_ci = buildGAPIObject(API.CLOUDIDENTITY_GROUPS)
|
|
35795
35807
|
ci = buildGAPIObject(API.CLOUDIDENTITY_POLICY)
|
|
35796
35808
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
@@ -39054,7 +39066,8 @@ def _updateCalendarEvents(origUser, user, origCal, calIds, count, calendarEventE
|
|
|
39054
39066
|
event = callGAPI(cal.events(), 'patch',
|
|
39055
39067
|
throwReasons=GAPI.CALENDAR_THROW_REASONS+[GAPI.NOT_FOUND, GAPI.DELETED, GAPI.FORBIDDEN,
|
|
39056
39068
|
GAPI.INVALID, GAPI.REQUIRED, GAPI.TIME_RANGE_EMPTY, GAPI.EVENT_DURATION_EXCEEDS_LIMIT,
|
|
39057
|
-
GAPI.REQUIRED_ACCESS_LEVEL, GAPI.CANNOT_CHANGE_ORGANIZER_OF_INSTANCE
|
|
39069
|
+
GAPI.REQUIRED_ACCESS_LEVEL, GAPI.CANNOT_CHANGE_ORGANIZER_OF_INSTANCE,
|
|
39070
|
+
GAPI.MALFORMED_WORKING_LOCATION_EVENT],
|
|
39058
39071
|
calendarId=calId, eventId=eventId, conferenceDataVersion=1, sendUpdates=parameters['sendUpdates'], supportsAttachments=True,
|
|
39059
39072
|
body=body, fields=pfields)
|
|
39060
39073
|
if parameters['csvPF'] is None:
|
|
@@ -39069,7 +39082,7 @@ def _updateCalendarEvents(origUser, user, origCal, calIds, count, calendarEventE
|
|
|
39069
39082
|
break
|
|
39070
39083
|
entityActionFailedWarning([Ent.CALENDAR, calId, Ent.EVENT, eventId], str(e), j, jcount)
|
|
39071
39084
|
except (GAPI.forbidden, GAPI.invalid, GAPI.required, GAPI.timeRangeEmpty, GAPI.eventDurationExceedsLimit,
|
|
39072
|
-
GAPI.requiredAccessLevel, GAPI.cannotChangeOrganizerOfInstance) as e:
|
|
39085
|
+
GAPI.requiredAccessLevel, GAPI.cannotChangeOrganizerOfInstance, GAPI.malformedWorkingLocationEvent) as e:
|
|
39073
39086
|
entityActionFailedWarning([Ent.CALENDAR, calId, Ent.EVENT, eventId], str(e), j, jcount)
|
|
39074
39087
|
except GAPI.notACalendarUser:
|
|
39075
39088
|
userCalServiceNotEnabledWarning(calId, i, count)
|
|
@@ -40378,20 +40391,20 @@ def convertExportNameToID(v, nameOrId, matterId, matterNameId):
|
|
|
40378
40391
|
if cg:
|
|
40379
40392
|
try:
|
|
40380
40393
|
export = callGAPI(v.matters().exports(), 'get',
|
|
40381
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN],
|
|
40394
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40382
40395
|
matterId=matterId, exportId=cg.group(1))
|
|
40383
40396
|
return (export['id'], export['name'], formatVaultNameId(export['id'], export['name']))
|
|
40384
40397
|
except (GAPI.notFound, GAPI.badRequest):
|
|
40385
40398
|
entityDoesNotHaveItemExit([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_EXPORT, nameOrId])
|
|
40386
|
-
except GAPI.forbidden:
|
|
40387
|
-
ClientAPIAccessDeniedExit()
|
|
40399
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
40400
|
+
ClientAPIAccessDeniedExit(str(e))
|
|
40388
40401
|
nameOrIdlower = nameOrId.lower()
|
|
40389
40402
|
try:
|
|
40390
40403
|
exports = callGAPIpages(v.matters().exports(), 'list', 'exports',
|
|
40391
|
-
throwReasons=[GAPI.FORBIDDEN],
|
|
40404
|
+
throwReasons=[GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40392
40405
|
matterId=matterId, fields='exports(id,name),nextPageToken')
|
|
40393
|
-
except GAPI.forbidden:
|
|
40394
|
-
ClientAPIAccessDeniedExit()
|
|
40406
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
40407
|
+
ClientAPIAccessDeniedExit(str(e))
|
|
40395
40408
|
for export in exports:
|
|
40396
40409
|
if export['name'].lower() == nameOrIdlower:
|
|
40397
40410
|
return (export['id'], export['name'], formatVaultNameId(export['id'], export['name']))
|
|
@@ -40402,20 +40415,20 @@ def convertHoldNameToID(v, nameOrId, matterId, matterNameId):
|
|
|
40402
40415
|
if cg:
|
|
40403
40416
|
try:
|
|
40404
40417
|
hold = callGAPI(v.matters().holds(), 'get',
|
|
40405
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN],
|
|
40418
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40406
40419
|
matterId=matterId, holdId=cg.group(1))
|
|
40407
40420
|
return (hold['holdId'], hold['name'], formatVaultNameId(hold['holdId'], hold['name']))
|
|
40408
40421
|
except (GAPI.notFound, GAPI.badRequest):
|
|
40409
40422
|
entityDoesNotHaveItemExit([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, nameOrId])
|
|
40410
|
-
except GAPI.forbidden:
|
|
40411
|
-
ClientAPIAccessDeniedExit()
|
|
40423
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
40424
|
+
ClientAPIAccessDeniedExit(str(e))
|
|
40412
40425
|
nameOrIdlower = nameOrId.lower()
|
|
40413
40426
|
try:
|
|
40414
40427
|
holds = callGAPIpages(v.matters().holds(), 'list', 'holds',
|
|
40415
|
-
throwReasons=[GAPI.FORBIDDEN],
|
|
40428
|
+
throwReasons=[GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40416
40429
|
matterId=matterId, fields='holds(holdId,name),nextPageToken')
|
|
40417
|
-
except GAPI.forbidden:
|
|
40418
|
-
ClientAPIAccessDeniedExit()
|
|
40430
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
40431
|
+
ClientAPIAccessDeniedExit(str(e))
|
|
40419
40432
|
for hold in holds:
|
|
40420
40433
|
if hold['name'].lower() == nameOrIdlower:
|
|
40421
40434
|
return (hold['holdId'], hold['name'], formatVaultNameId(hold['holdId'], hold['name']))
|
|
@@ -40426,17 +40439,17 @@ def convertMatterNameToID(v, nameOrId, state=None):
|
|
|
40426
40439
|
if cg:
|
|
40427
40440
|
try:
|
|
40428
40441
|
matter = callGAPI(v.matters(), 'get',
|
|
40429
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.FORBIDDEN],
|
|
40442
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40430
40443
|
matterId=cg.group(1), view='BASIC', fields='matterId,name,state')
|
|
40431
40444
|
return (matter['matterId'], matter['name'], formatVaultNameId(matter['name'], matter['matterId']), matter['state'])
|
|
40432
40445
|
except (GAPI.notFound, GAPI.forbidden):
|
|
40433
40446
|
entityDoesNotExistExit(Ent.VAULT_MATTER, nameOrId)
|
|
40434
40447
|
try:
|
|
40435
40448
|
matters = callGAPIpages(v.matters(), 'list', 'matters',
|
|
40436
|
-
throwReasons=[GAPI.FORBIDDEN],
|
|
40449
|
+
throwReasons=[GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40437
40450
|
view='BASIC', state=state, fields='matters(matterId,name,state),nextPageToken')
|
|
40438
|
-
except GAPI.forbidden:
|
|
40439
|
-
ClientAPIAccessDeniedExit()
|
|
40451
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
40452
|
+
ClientAPIAccessDeniedExit(str(e))
|
|
40440
40453
|
nameOrIdlower = nameOrId.lower()
|
|
40441
40454
|
ids = []
|
|
40442
40455
|
states = []
|
|
@@ -40457,20 +40470,20 @@ def convertQueryNameToID(v, nameOrId, matterId, matterNameId):
|
|
|
40457
40470
|
if cg:
|
|
40458
40471
|
try:
|
|
40459
40472
|
query = callGAPI(v.matters().savedQueries(), 'get',
|
|
40460
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN],
|
|
40473
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40461
40474
|
matterId=matterId, savedQueryId=cg.group(1))
|
|
40462
40475
|
return (query['savedQueryId'], query['displayName'], formatVaultNameId(query['savedQueryId'], query['displayName']))
|
|
40463
40476
|
except (GAPI.notFound, GAPI.badRequest):
|
|
40464
40477
|
entityDoesNotHaveItemExit([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, nameOrId])
|
|
40465
|
-
except GAPI.forbidden:
|
|
40466
|
-
ClientAPIAccessDeniedExit()
|
|
40478
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
40479
|
+
ClientAPIAccessDeniedExit(str(e))
|
|
40467
40480
|
nameOrIdlower = nameOrId.lower()
|
|
40468
40481
|
try:
|
|
40469
40482
|
queries = callGAPIpages(v.matters().savedQueries(), 'list', 'savedQueries',
|
|
40470
|
-
throwReasons=[GAPI.FORBIDDEN],
|
|
40483
|
+
throwReasons=[GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40471
40484
|
matterId=matterId, fields='savedQueries(savedQueryId,displayName),nextPageToken')
|
|
40472
|
-
except GAPI.forbidden:
|
|
40473
|
-
ClientAPIAccessDeniedExit()
|
|
40485
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
40486
|
+
ClientAPIAccessDeniedExit(str(e))
|
|
40474
40487
|
for query in queries:
|
|
40475
40488
|
if query['displayName'].lower() == nameOrIdlower:
|
|
40476
40489
|
return (query['savedQueryId'], query['displayName'], formatVaultNameId(query['savedQueryId'], query['displayName']))
|
|
@@ -40484,9 +40497,9 @@ def warnMatterNotOpen(v, matter, matterNameId, j, jcount):
|
|
|
40484
40497
|
if v is not None:
|
|
40485
40498
|
try:
|
|
40486
40499
|
matter['state'] = callGAPI(v.matters(), 'get',
|
|
40487
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.FORBIDDEN],
|
|
40500
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40488
40501
|
matterId=matter['matterId'], view='BASIC', fields='state')['state']
|
|
40489
|
-
except (GAPI.notFound, GAPI.forbidden):
|
|
40502
|
+
except (GAPI.notFound, GAPI.forbidden, GAPI.invalidArgument):
|
|
40490
40503
|
matter['state'] = 'Unknown'
|
|
40491
40504
|
else:
|
|
40492
40505
|
setSysExitRC(DATA_NOT_AVALIABLE_RC)
|
|
@@ -40802,10 +40815,10 @@ def doDeleteVaultExport():
|
|
|
40802
40815
|
unknownArgumentExit()
|
|
40803
40816
|
try:
|
|
40804
40817
|
callGAPI(v.matters().exports(), 'delete',
|
|
40805
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN],
|
|
40818
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40806
40819
|
matterId=matterId, exportId=exportId)
|
|
40807
40820
|
entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_EXPORT, exportNameId])
|
|
40808
|
-
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden) as e:
|
|
40821
|
+
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
40809
40822
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_EXPORT, exportNameId], str(e))
|
|
40810
40823
|
|
|
40811
40824
|
VAULT_EXPORT_FIELDS_CHOICE_MAP = {
|
|
@@ -40856,10 +40869,10 @@ def doInfoVaultExport():
|
|
|
40856
40869
|
fields = getFieldsFromFieldsList(fieldsList)
|
|
40857
40870
|
try:
|
|
40858
40871
|
export = callGAPI(v.matters().exports(), 'get',
|
|
40859
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN],
|
|
40872
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40860
40873
|
matterId=matterId, exportId=exportId, fields=fields)
|
|
40861
40874
|
_showVaultExport(matterNameId, export, cd, FJQC)
|
|
40862
|
-
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden) as e:
|
|
40875
|
+
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
40863
40876
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_EXPORT, exportNameId], str(e))
|
|
40864
40877
|
|
|
40865
40878
|
VAULT_EXPORT_STATUS_MAP = {'completed': 'COMPLETED', 'failed': 'FAILED', 'inprogress': 'IN_PROGRESS'}
|
|
@@ -40922,9 +40935,9 @@ def doPrintShowVaultExports():
|
|
|
40922
40935
|
try:
|
|
40923
40936
|
results = callGAPIpages(v.matters(), 'list', 'matters',
|
|
40924
40937
|
pageMessage=getPageMessage(),
|
|
40925
|
-
throwReasons=[GAPI.FORBIDDEN],
|
|
40938
|
+
throwReasons=[GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40926
40939
|
view='BASIC', state='OPEN', fields='matters(matterId,name,state),nextPageToken')
|
|
40927
|
-
except GAPI.forbidden as e:
|
|
40940
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
40928
40941
|
entityActionFailedWarning([Ent.VAULT_EXPORT, None], str(e))
|
|
40929
40942
|
return
|
|
40930
40943
|
else:
|
|
@@ -40952,12 +40965,12 @@ def doPrintShowVaultExports():
|
|
|
40952
40965
|
try:
|
|
40953
40966
|
exports = callGAPIpages(v.matters().exports(), 'list', 'exports',
|
|
40954
40967
|
pageMessage=pageMessage,
|
|
40955
|
-
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN],
|
|
40968
|
+
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
40956
40969
|
matterId=matterId, fields=fields)
|
|
40957
40970
|
except GAPI.failedPrecondition:
|
|
40958
40971
|
warnMatterNotOpen(v, matter, matterNameId, j, jcount)
|
|
40959
40972
|
continue
|
|
40960
|
-
except GAPI.forbidden as e:
|
|
40973
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
40961
40974
|
entityActionFailedWarning([Ent.VAULT_EXPORT, None], str(e))
|
|
40962
40975
|
break
|
|
40963
40976
|
else:
|
|
@@ -41052,9 +41065,9 @@ def doCopyVaultExport():
|
|
|
41052
41065
|
while True:
|
|
41053
41066
|
try:
|
|
41054
41067
|
export = callGAPI(v.matters().exports(), 'get',
|
|
41055
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN],
|
|
41068
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41056
41069
|
matterId=matterId, exportId=exportId)
|
|
41057
|
-
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden) as e:
|
|
41070
|
+
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41058
41071
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_EXPORT, exportNameId], str(e))
|
|
41059
41072
|
return
|
|
41060
41073
|
if export['status'] == 'COMPLETED':
|
|
@@ -41152,9 +41165,9 @@ def doDownloadVaultExport():
|
|
|
41152
41165
|
while True:
|
|
41153
41166
|
try:
|
|
41154
41167
|
export = callGAPI(v.matters().exports(), 'get',
|
|
41155
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN],
|
|
41168
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41156
41169
|
matterId=matterId, exportId=exportId)
|
|
41157
|
-
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden) as e:
|
|
41170
|
+
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41158
41171
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_EXPORT, exportNameId], str(e))
|
|
41159
41172
|
return
|
|
41160
41173
|
if export['status'] == 'COMPLETED':
|
|
@@ -41342,7 +41355,8 @@ def doCreateVaultHold():
|
|
|
41342
41355
|
body['accounts'].append({'accountId': convertEmailAddressToUID(account, cd, accountType, accountsLocation)})
|
|
41343
41356
|
try:
|
|
41344
41357
|
hold = callGAPI(v.matters().holds(), 'create',
|
|
41345
|
-
throwReasons=[GAPI.ALREADY_EXISTS, GAPI.BAD_REQUEST, GAPI.BACKEND_ERROR, GAPI.FAILED_PRECONDITION,
|
|
41358
|
+
throwReasons=[GAPI.ALREADY_EXISTS, GAPI.BAD_REQUEST, GAPI.BACKEND_ERROR, GAPI.FAILED_PRECONDITION,
|
|
41359
|
+
GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41346
41360
|
matterId=matterId, body=body)
|
|
41347
41361
|
if not returnIdOnly:
|
|
41348
41362
|
entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, formatVaultNameId(hold['name'], hold['holdId'])])
|
|
@@ -41350,7 +41364,8 @@ def doCreateVaultHold():
|
|
|
41350
41364
|
_showVaultHold(None, hold, None, None)
|
|
41351
41365
|
else:
|
|
41352
41366
|
writeStdout(f'{hold["holdId"]}\n')
|
|
41353
|
-
except (GAPI.alreadyExists, GAPI.badRequest, GAPI.backendError, GAPI.failedPrecondition,
|
|
41367
|
+
except (GAPI.alreadyExists, GAPI.badRequest, GAPI.backendError, GAPI.failedPrecondition,
|
|
41368
|
+
GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41354
41369
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, body.get('name')], str(e))
|
|
41355
41370
|
|
|
41356
41371
|
# gam update vaulthold|hold <HoldItem> matter <MatterItem>
|
|
@@ -41395,9 +41410,9 @@ def doUpdateVaultHold():
|
|
|
41395
41410
|
missingArgumentExit('matter')
|
|
41396
41411
|
try:
|
|
41397
41412
|
old_body = callGAPI(v.matters().holds(), 'get',
|
|
41398
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN],
|
|
41413
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41399
41414
|
matterId=matterId, holdId=holdId, fields='name,corpus,query,orgUnit')
|
|
41400
|
-
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden) as e:
|
|
41415
|
+
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41401
41416
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, holdNameId], str(e))
|
|
41402
41417
|
return
|
|
41403
41418
|
accountType = 'group' if old_body['corpus'] == 'GROUPS' else 'user'
|
|
@@ -41423,10 +41438,10 @@ def doUpdateVaultHold():
|
|
|
41423
41438
|
if body:
|
|
41424
41439
|
try:
|
|
41425
41440
|
hold = callGAPI(v.matters().holds(), 'update',
|
|
41426
|
-
|
|
41441
|
+
throwReas=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41427
41442
|
matterId=matterId, holdId=holdId, body=body)
|
|
41428
41443
|
entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, holdNameId])
|
|
41429
|
-
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden) as e:
|
|
41444
|
+
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41430
41445
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, holdNameId], str(e))
|
|
41431
41446
|
return
|
|
41432
41447
|
jcount = len(addAccountIds)
|
|
@@ -41439,12 +41454,12 @@ def doUpdateVaultHold():
|
|
|
41439
41454
|
j += 1
|
|
41440
41455
|
try:
|
|
41441
41456
|
callGAPI(v.matters().holds().accounts(), 'create',
|
|
41442
|
-
throwReasons=[GAPI.ALREADY_EXISTS, GAPI.BACKEND_ERROR, GAPI.FORBIDDEN],
|
|
41457
|
+
throwReasons=[GAPI.ALREADY_EXISTS, GAPI.BACKEND_ERROR, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41443
41458
|
matterId=matterId, holdId=holdId, body={'accountId': account['id']})
|
|
41444
41459
|
entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, holdNameId, Ent.ACCOUNT, account['email']], j, jcount)
|
|
41445
41460
|
except (GAPI.alreadyExists, GAPI.backendError) as e:
|
|
41446
41461
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, holdNameId, Ent.ACCOUNT, account['email']], str(e), j, jcount)
|
|
41447
|
-
except GAPI.forbidden as e:
|
|
41462
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41448
41463
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, None], str(e))
|
|
41449
41464
|
return
|
|
41450
41465
|
Ind.Decrement()
|
|
@@ -41460,12 +41475,12 @@ def doUpdateVaultHold():
|
|
|
41460
41475
|
j += 1
|
|
41461
41476
|
try:
|
|
41462
41477
|
callGAPI(v.matters().holds().accounts(), 'delete',
|
|
41463
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.BACKEND_ERROR, GAPI.FORBIDDEN],
|
|
41478
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.BACKEND_ERROR, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41464
41479
|
matterId=matterId, holdId=holdId, accountId=account['id'])
|
|
41465
41480
|
entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, holdNameId, Ent.ACCOUNT, account['email']], j, jcount)
|
|
41466
41481
|
except (GAPI.alreadyExists, GAPI.backendError) as e:
|
|
41467
41482
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, holdNameId, Ent.ACCOUNT, account['email']], str(e), j, jcount)
|
|
41468
|
-
except GAPI.forbidden as e:
|
|
41483
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41469
41484
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, None], str(e))
|
|
41470
41485
|
return
|
|
41471
41486
|
Ind.Decrement()
|
|
@@ -41490,10 +41505,10 @@ def doDeleteVaultHold():
|
|
|
41490
41505
|
unknownArgumentExit()
|
|
41491
41506
|
try:
|
|
41492
41507
|
callGAPI(v.matters().holds(), 'delete',
|
|
41493
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN],
|
|
41508
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41494
41509
|
matterId=matterId, holdId=holdId)
|
|
41495
41510
|
entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, holdNameId])
|
|
41496
|
-
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden) as e:
|
|
41511
|
+
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41497
41512
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, holdNameId], str(e))
|
|
41498
41513
|
|
|
41499
41514
|
VAULT_HOLD_FIELDS_CHOICE_MAP = {
|
|
@@ -41543,10 +41558,10 @@ def doInfoVaultHold():
|
|
|
41543
41558
|
fields = getFieldsFromFieldsList(fieldsList)
|
|
41544
41559
|
try:
|
|
41545
41560
|
hold = callGAPI(v.matters().holds(), 'get',
|
|
41546
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN],
|
|
41561
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41547
41562
|
matterId=matterId, holdId=holdId, fields=fields)
|
|
41548
41563
|
_showVaultHold(matterNameId, hold, cd, FJQC)
|
|
41549
|
-
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden) as e:
|
|
41564
|
+
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41550
41565
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_HOLD, holdNameId], str(e))
|
|
41551
41566
|
|
|
41552
41567
|
PRINT_VAULT_HOLDS_TITLES = ['matterId', 'matterName', 'holdId', 'name', 'updateTime']
|
|
@@ -41597,9 +41612,9 @@ def doPrintShowVaultHolds():
|
|
|
41597
41612
|
try:
|
|
41598
41613
|
results = callGAPIpages(v.matters(), 'list', 'matters',
|
|
41599
41614
|
pageMessage=getPageMessage(),
|
|
41600
|
-
throwReasons=[GAPI.FORBIDDEN],
|
|
41615
|
+
throwReasons=[GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41601
41616
|
view='BASIC', state='OPEN', fields='matters(matterId,name,state),nextPageToken')
|
|
41602
|
-
except GAPI.forbidden as e:
|
|
41617
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41603
41618
|
entityActionFailedWarning([Ent.VAULT_HOLD, None], str(e))
|
|
41604
41619
|
return
|
|
41605
41620
|
else:
|
|
@@ -41626,12 +41641,12 @@ def doPrintShowVaultHolds():
|
|
|
41626
41641
|
try:
|
|
41627
41642
|
holds = callGAPIpages(v.matters().holds(), 'list', 'holds',
|
|
41628
41643
|
pageMessage=pageMessage,
|
|
41629
|
-
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN],
|
|
41644
|
+
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41630
41645
|
matterId=matterId, fields=fields)
|
|
41631
41646
|
except GAPI.failedPrecondition:
|
|
41632
41647
|
warnMatterNotOpen(v, matter, matterNameId, j, jcount)
|
|
41633
41648
|
continue
|
|
41634
|
-
except GAPI.forbidden as e:
|
|
41649
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41635
41650
|
entityActionFailedWarning([Ent.VAULT_HOLD, None], str(e))
|
|
41636
41651
|
break
|
|
41637
41652
|
else:
|
|
@@ -41677,9 +41692,9 @@ def printShowUserVaultHolds(entityList):
|
|
|
41677
41692
|
try:
|
|
41678
41693
|
matters = callGAPIpages(v.matters(), 'list', 'matters',
|
|
41679
41694
|
pageMessage=getPageMessage(),
|
|
41680
|
-
throwReasons=[GAPI.FORBIDDEN],
|
|
41695
|
+
throwReasons=[GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41681
41696
|
view='BASIC', state='OPEN', fields='matters(matterId,name,state),nextPageToken')
|
|
41682
|
-
except GAPI.forbidden as e:
|
|
41697
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41683
41698
|
entityActionFailedWarning([Ent.VAULT_HOLD, None], str(e))
|
|
41684
41699
|
return
|
|
41685
41700
|
jcount = len(matters)
|
|
@@ -41693,11 +41708,11 @@ def printShowUserVaultHolds(entityList):
|
|
|
41693
41708
|
try:
|
|
41694
41709
|
matter['holds'] = callGAPIpages(v.matters().holds(), 'list', 'holds',
|
|
41695
41710
|
pageMessage=getPageMessageForWhom(),
|
|
41696
|
-
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN],
|
|
41711
|
+
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41697
41712
|
matterId=matterId, fields='holds(holdId,name,accounts(accountId,email),orgUnit(orgUnitId)),nextPageToken')
|
|
41698
41713
|
except GAPI.failedPrecondition:
|
|
41699
41714
|
warnMatterNotOpen(v, matter, matterNameId, j, jcount)
|
|
41700
|
-
except GAPI.forbidden as e:
|
|
41715
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41701
41716
|
entityActionFailedWarning([Ent.VAULT_HOLD, None], str(e), j, jcount)
|
|
41702
41717
|
totalHolds = 0
|
|
41703
41718
|
_, _, entityList = getEntityArgument(entityList)
|
|
@@ -41808,10 +41823,10 @@ def doInfoVaultQuery():
|
|
|
41808
41823
|
fields = getFieldsFromFieldsList(fieldsList)
|
|
41809
41824
|
try:
|
|
41810
41825
|
query = callGAPI(v.matters().savedQueries(), 'get',
|
|
41811
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN],
|
|
41826
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41812
41827
|
matterId=matterId, savedQueryId=queryId, fields=fields)
|
|
41813
41828
|
_showVaultQuery(matterNameId, query, cd, FJQC)
|
|
41814
|
-
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden) as e:
|
|
41829
|
+
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41815
41830
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, queryNameId], str(e))
|
|
41816
41831
|
|
|
41817
41832
|
PRINT_VAULT_QUERIES_TITLES = ['matterId', 'matterName', 'savedQueryId', 'displayName']
|
|
@@ -41852,9 +41867,9 @@ def doPrintShowVaultQueries():
|
|
|
41852
41867
|
try:
|
|
41853
41868
|
results = callGAPIpages(v.matters(), 'list', 'matters',
|
|
41854
41869
|
pageMessage=getPageMessage(),
|
|
41855
|
-
throwReasons=[GAPI.FORBIDDEN],
|
|
41870
|
+
throwReasons=[GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41856
41871
|
view='BASIC', state='OPEN', fields='matters(matterId,name,state),nextPageToken')
|
|
41857
|
-
except GAPI.forbidden as e:
|
|
41872
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41858
41873
|
entityActionFailedWarning([Ent.VAULT_QUERY, None], str(e))
|
|
41859
41874
|
return
|
|
41860
41875
|
else:
|
|
@@ -41881,12 +41896,12 @@ def doPrintShowVaultQueries():
|
|
|
41881
41896
|
try:
|
|
41882
41897
|
queries = callGAPIpages(v.matters().savedQueries(), 'list', 'savedQueries',
|
|
41883
41898
|
pageMessage=pageMessage,
|
|
41884
|
-
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN],
|
|
41899
|
+
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41885
41900
|
matterId=matterId, fields=fields)
|
|
41886
41901
|
except GAPI.failedPrecondition:
|
|
41887
41902
|
warnMatterNotOpen(v, matter, matterNameId, j, jcount)
|
|
41888
41903
|
continue
|
|
41889
|
-
except GAPI.forbidden as e:
|
|
41904
|
+
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41890
41905
|
entityActionFailedWarning([Ent.VAULT_QUERY, None], str(e))
|
|
41891
41906
|
break
|
|
41892
41907
|
else:
|
|
@@ -41973,7 +41988,7 @@ def doCreateVaultMatter():
|
|
|
41973
41988
|
body['name'] = f'GAM Matter - {ISOformatTimeStamp(todaysTime())}'
|
|
41974
41989
|
try:
|
|
41975
41990
|
matter = callGAPI(v.matters(), 'create',
|
|
41976
|
-
throwReasons=[GAPI.ALREADY_EXISTS, GAPI.FORBIDDEN],
|
|
41991
|
+
throwReasons=[GAPI.ALREADY_EXISTS, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41977
41992
|
body=body)
|
|
41978
41993
|
matterId = matter['matterId']
|
|
41979
41994
|
matterNameId = formatVaultNameId(matter['name'], matterId)
|
|
@@ -41981,7 +41996,7 @@ def doCreateVaultMatter():
|
|
|
41981
41996
|
entityActionPerformed([Ent.VAULT_MATTER, matterNameId])
|
|
41982
41997
|
else:
|
|
41983
41998
|
writeStdout(f'{matterId}\n')
|
|
41984
|
-
except (GAPI.alreadyExists, GAPI.forbidden) as e:
|
|
41999
|
+
except (GAPI.alreadyExists, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41985
42000
|
entityActionFailedWarning([Ent.VAULT_MATTER, body['name']], str(e))
|
|
41986
42001
|
return
|
|
41987
42002
|
jcount = len(collaborators)
|
|
@@ -41996,11 +42011,11 @@ def doCreateVaultMatter():
|
|
|
41996
42011
|
cbody['matterPermission']['accountId'] = collaborator['id']
|
|
41997
42012
|
try:
|
|
41998
42013
|
callGAPI(v.matters(), 'addPermissions',
|
|
41999
|
-
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN],
|
|
42014
|
+
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
42000
42015
|
matterId=matterId, body=cbody)
|
|
42001
42016
|
if not returnIdOnly:
|
|
42002
42017
|
entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.COLLABORATOR, collaborator['email']], j, jcount)
|
|
42003
|
-
except (GAPI.failedPrecondition, GAPI.forbidden) as e:
|
|
42018
|
+
except (GAPI.failedPrecondition, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
42004
42019
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId], str(e))
|
|
42005
42020
|
break
|
|
42006
42021
|
Ind.Decrement()
|
|
@@ -42024,10 +42039,10 @@ def doActionVaultMatter(action, matterId=None, matterNameId=None, v=None):
|
|
|
42024
42039
|
action_kwargs = {} if action == 'delete' else {'body': {}}
|
|
42025
42040
|
try:
|
|
42026
42041
|
callGAPI(v.matters(), action,
|
|
42027
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN],
|
|
42042
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
42028
42043
|
matterId=matterId, **action_kwargs)
|
|
42029
42044
|
entityActionPerformed([Ent.VAULT_MATTER, matterNameId])
|
|
42030
|
-
except (GAPI.notFound, GAPI.failedPrecondition, GAPI.forbidden) as e:
|
|
42045
|
+
except (GAPI.notFound, GAPI.failedPrecondition, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
42031
42046
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId], str(e))
|
|
42032
42047
|
|
|
42033
42048
|
# gam close vaultmatter|matter <MatterItem>
|
|
@@ -42080,7 +42095,7 @@ def doUpdateVaultMatter():
|
|
|
42080
42095
|
if 'name' not in body or 'description' not in body:
|
|
42081
42096
|
# bah, API requires name/description to be sent on update even when it's not changing
|
|
42082
42097
|
result = callGAPI(v.matters(), 'get',
|
|
42083
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.FORBIDDEN],
|
|
42098
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
42084
42099
|
matterId=matterId, view='BASIC')
|
|
42085
42100
|
body.setdefault('name', result['name'])
|
|
42086
42101
|
body.setdefault('description', result.get('description'))
|
|
@@ -42088,7 +42103,7 @@ def doUpdateVaultMatter():
|
|
|
42088
42103
|
throwReasons=[GAPI.NOT_FOUND, GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN],
|
|
42089
42104
|
matterId=matterId, body=body)
|
|
42090
42105
|
entityActionPerformed([Ent.VAULT_MATTER, matterNameId])
|
|
42091
|
-
except (GAPI.notFound, GAPI.failedPrecondition, GAPI.forbidden) as e:
|
|
42106
|
+
except (GAPI.notFound, GAPI.failedPrecondition, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
42092
42107
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId], str(e))
|
|
42093
42108
|
return
|
|
42094
42109
|
jcount = len(addCollaborators)
|
|
@@ -42101,10 +42116,10 @@ def doUpdateVaultMatter():
|
|
|
42101
42116
|
j += 1
|
|
42102
42117
|
try:
|
|
42103
42118
|
callGAPI(v.matters(), 'addPermissions',
|
|
42104
|
-
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN],
|
|
42119
|
+
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
42105
42120
|
matterId=matterId, body={'matterPermission': {'role': 'COLLABORATOR', 'accountId': collaborator['id']}})
|
|
42106
42121
|
entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.COLLABORATOR, collaborator['email']], j, jcount)
|
|
42107
|
-
except (GAPI.failedPrecondition, GAPI.forbidden) as e:
|
|
42122
|
+
except (GAPI.failedPrecondition, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
42108
42123
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId], str(e))
|
|
42109
42124
|
break
|
|
42110
42125
|
Ind.Decrement()
|
|
@@ -42118,10 +42133,10 @@ def doUpdateVaultMatter():
|
|
|
42118
42133
|
j += 1
|
|
42119
42134
|
try:
|
|
42120
42135
|
callGAPI(v.matters(), 'removePermissions',
|
|
42121
|
-
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN],
|
|
42136
|
+
throwReasons=[GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
42122
42137
|
matterId=matterId, body={'accountId': collaborator['id']})
|
|
42123
42138
|
entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.COLLABORATOR, collaborator['email']], j, jcount)
|
|
42124
|
-
except (GAPI.failedPrecondition, GAPI.forbidden) as e:
|
|
42139
|
+
except (GAPI.failedPrecondition, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
42125
42140
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId], str(e))
|
|
42126
42141
|
break
|
|
42127
42142
|
Ind.Decrement()
|
|
@@ -42154,11 +42169,11 @@ def doInfoVaultMatter():
|
|
|
42154
42169
|
fields = getFieldsFromFieldsList(fieldsList)
|
|
42155
42170
|
try:
|
|
42156
42171
|
matter = callGAPI(v.matters(), 'get',
|
|
42157
|
-
throwReasons=[GAPI.NOT_FOUND, GAPI.FORBIDDEN],
|
|
42172
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
42158
42173
|
matterId=matterId, view=view, fields=fields)
|
|
42159
42174
|
cd = buildGAPIObject(API.DIRECTORY) if 'matterPermissions' in matter else None
|
|
42160
42175
|
_showVaultMatter(matter, cd, FJQC)
|
|
42161
|
-
except (GAPI.notFound, GAPI.forbidden) as e:
|
|
42176
|
+
except (GAPI.notFound, GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
42162
42177
|
entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId], str(e))
|
|
42163
42178
|
|
|
42164
42179
|
VAULT_MATTER_STATE_MAP = {'open': 'OPEN', 'closed': 'CLOSED', 'deleted': 'DELETED'}
|
|
@@ -42214,9 +42229,9 @@ def doPrintShowVaultMatters():
|
|
|
42214
42229
|
try:
|
|
42215
42230
|
matters = callGAPIpages(v.matters(), 'list', 'matters',
|
|
42216
42231
|
pageMessage=getPageMessage(),
|
|
42217
|
-
throwReasons=[GAPI.FORBIDDEN],
|
|
42232
|
+
throwReasons=[GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT, GAPI.INVALID_ARGUMENT],
|
|
42218
42233
|
view=view, state=stateParm, fields=fields)
|
|
42219
|
-
except GAPI.forbidden as e:
|
|
42234
|
+
except (GAPI.forbidden, GAPI.invalidArgument, GAPI.invalidArgument) as e:
|
|
42220
42235
|
entityActionFailedWarning([Ent.VAULT_MATTER, None], str(e))
|
|
42221
42236
|
return
|
|
42222
42237
|
jcount = len(matters)
|
|
@@ -42407,6 +42422,8 @@ class PasswordOptions():
|
|
|
42407
42422
|
self.makeCleanPassword = True
|
|
42408
42423
|
self.cleanPasswordLen = 25
|
|
42409
42424
|
self.randomPasswordChars = None
|
|
42425
|
+
self.promptForPassword = False
|
|
42426
|
+
self.promptForUniquePassword = False
|
|
42410
42427
|
self.notifyPasswordSet = False
|
|
42411
42428
|
self.updateCmd = updateCmd
|
|
42412
42429
|
self.filename = ''
|
|
@@ -42453,7 +42470,7 @@ class PasswordOptions():
|
|
|
42453
42470
|
self.makeCleanPassword = True
|
|
42454
42471
|
notFoundBody[up] = self.CreateRandomPassword()
|
|
42455
42472
|
self.notFoundPassword = notFoundBody[up]
|
|
42456
|
-
elif myarg
|
|
42473
|
+
elif myarg in {'lograndompassword', 'logpassword'}:
|
|
42457
42474
|
self.filename = getString(Cmd.OB_FILE_NAME)
|
|
42458
42475
|
else:
|
|
42459
42476
|
return False
|
|
@@ -42474,7 +42491,8 @@ class PasswordOptions():
|
|
|
42474
42491
|
password = self.GetPassword()
|
|
42475
42492
|
if password:
|
|
42476
42493
|
body[up] = password
|
|
42477
|
-
self.makeRandomPassword = self.makeUniqueRandomPassword
|
|
42494
|
+
self.makeRandomPassword = self.makeUniqueRandomPassword =\
|
|
42495
|
+
self.promptForPassword = self.promptForUniquePassword = False
|
|
42478
42496
|
if password.lower() == 'blocklogin':
|
|
42479
42497
|
self.makeRandomPassword = True
|
|
42480
42498
|
self.makeCleanPassword = False
|
|
@@ -42487,6 +42505,13 @@ class PasswordOptions():
|
|
|
42487
42505
|
self.makeUniqueRandomPassword = self.makeCleanPassword = True
|
|
42488
42506
|
else:
|
|
42489
42507
|
self.makeRandomPassword = self.makeCleanPassword = True
|
|
42508
|
+
elif password.lower() == 'prompt':
|
|
42509
|
+
self.promptForPassword = True
|
|
42510
|
+
elif password.lower() == 'uniqueprompt':
|
|
42511
|
+
if self.updateCmd:
|
|
42512
|
+
self.promptForUniquePassword = True
|
|
42513
|
+
else:
|
|
42514
|
+
self.promptForPassword = True
|
|
42490
42515
|
elif up == 'hashFunction':
|
|
42491
42516
|
body[up] = self.HASH_FUNCTION_MAP[myarg]
|
|
42492
42517
|
self.clearPassword = self.hashPassword = False
|
|
@@ -42509,11 +42534,17 @@ class PasswordOptions():
|
|
|
42509
42534
|
except Exception:
|
|
42510
42535
|
pass
|
|
42511
42536
|
|
|
42512
|
-
def AssignPassword(self, body, notify, notFoundBody, createIfNotFound):
|
|
42537
|
+
def AssignPassword(self, body, notify, notFoundBody, createIfNotFound, user=None):
|
|
42513
42538
|
up = 'password'
|
|
42514
42539
|
if self.makeRandomPassword or self.makeUniqueRandomPassword:
|
|
42515
42540
|
body[up] = self.CreateRandomPassword()
|
|
42516
42541
|
self.password = body[up]
|
|
42542
|
+
elif user and (self.promptForPassword or self.promptForUniquePassword):
|
|
42543
|
+
body[up] = readStdin(f'Enter password for {user}: ')
|
|
42544
|
+
self.password = body[up]
|
|
42545
|
+
elif self.promptForPassword:
|
|
42546
|
+
body[up] = readStdin('Enter password: ')
|
|
42547
|
+
self.password = body[up]
|
|
42517
42548
|
if up in body:
|
|
42518
42549
|
self.FinalizePassword(body, notify, up)
|
|
42519
42550
|
elif 'hashFunction' in body:
|
|
@@ -43147,7 +43178,12 @@ def getUserAttributes(cd, updateCmd, noUid=False):
|
|
|
43147
43178
|
body[up][schemaName][fieldName] = None
|
|
43148
43179
|
else:
|
|
43149
43180
|
unknownArgumentExit()
|
|
43150
|
-
if
|
|
43181
|
+
if PwdOpts.promptForPassword or PwdOpts.promptForUniquePassword:
|
|
43182
|
+
if not updateCmd:
|
|
43183
|
+
PwdOpts.AssignPassword(body, notify, notFoundBody, parameters['createIfNotFound'], body['primaryEmail'])
|
|
43184
|
+
elif not PwdOpts.promptForUniquePassword:
|
|
43185
|
+
PwdOpts.AssignPassword(body, notify, notFoundBody, parameters['createIfNotFound'])
|
|
43186
|
+
elif not PwdOpts.makeUniqueRandomPassword:
|
|
43151
43187
|
PwdOpts.AssignPassword(body, notify, notFoundBody, parameters['createIfNotFound'])
|
|
43152
43188
|
return (body, notify, tagReplacements, addGroups, addAliases, PwdOpts,
|
|
43153
43189
|
updatePrimaryEmail, notFoundBody, groupOrgUnitMap, parameters,
|
|
@@ -43181,7 +43217,7 @@ def createUserAddAliases(cd, user, aliasList, i, count):
|
|
|
43181
43217
|
# [replyto <EmailAaddress>]
|
|
43182
43218
|
# [<NotifyMessageContent>]
|
|
43183
43219
|
# (replace <Tag> <UserReplacement>)*]
|
|
43184
|
-
# [
|
|
43220
|
+
# [logpassword <FileName>] [ignorenullpassword]
|
|
43185
43221
|
# [verifynotinvitable]
|
|
43186
43222
|
# [addnumericsuffixonduplicate <Number>]
|
|
43187
43223
|
def doCreateUser():
|
|
@@ -43286,7 +43322,7 @@ def verifyUserPrimaryEmail(cd, user, createIfNotFound, i, count):
|
|
|
43286
43322
|
# [<NotifyMessageContent>]
|
|
43287
43323
|
# (replace <Tag> <UserReplacement>)*]
|
|
43288
43324
|
# [notifyonupdate [<Boolean>]]
|
|
43289
|
-
# [
|
|
43325
|
+
# [logpassword <FileName>] [ignorenullpassword]
|
|
43290
43326
|
def updateUsers(entityList):
|
|
43291
43327
|
def waitingForCreationToComplete(sleep_time):
|
|
43292
43328
|
writeStderr(Ind.Spaces()+Msg.WAITING_FOR_ITEM_CREATION_TO_COMPLETE_SLEEPING.format(Ent.Singular(Ent.USER), sleep_time))
|
|
@@ -43368,8 +43404,8 @@ def updateUsers(entityList):
|
|
|
43368
43404
|
if isInvitableUser:
|
|
43369
43405
|
entityActionNotPerformedWarning([Ent.USER, body['primaryEmail']], Msg.EMAIL_ADDRESS_IS_UNMANAGED_ACCOUNT, i, count)
|
|
43370
43406
|
continue
|
|
43371
|
-
if PwdOpts.makeUniqueRandomPassword:
|
|
43372
|
-
PwdOpts.AssignPassword(body, notify, notFoundBody, parameters['createIfNotFound'])
|
|
43407
|
+
if PwdOpts.makeUniqueRandomPassword or PwdOpts.promptForUniquePassword:
|
|
43408
|
+
PwdOpts.AssignPassword(body, notify, notFoundBody, parameters['createIfNotFound'], userKey)
|
|
43373
43409
|
retry = 0
|
|
43374
43410
|
while True:
|
|
43375
43411
|
try:
|
gam/gamlib/glgapi.py
CHANGED
|
@@ -273,7 +273,7 @@ LOOKERSTUDIO_THROW_REASONS = [INVALID_ARGUMENT, SERVICE_NOT_AVAILABLE, BAD_REQUE
|
|
|
273
273
|
MEMBERS_THROW_REASONS = [GROUP_NOT_FOUND, DOMAIN_NOT_FOUND, DOMAIN_CANNOT_USE_APIS, INVALID, FORBIDDEN, SERVICE_NOT_AVAILABLE]
|
|
274
274
|
MEMBERS_RETRY_REASONS = [SYSTEM_ERROR, SERVICE_NOT_AVAILABLE]
|
|
275
275
|
ORGUNIT_GET_THROW_REASONS = [INVALID_ORGUNIT, ORGUNIT_NOT_FOUND, BACKEND_ERROR, BAD_REQUEST, INVALID_CUSTOMER_ID, LOGIN_REQUIRED]
|
|
276
|
-
PEOPLE_ACCESS_THROW_REASONS = [SERVICE_NOT_AVAILABLE, FORBIDDEN, PERMISSION_DENIED]
|
|
276
|
+
PEOPLE_ACCESS_THROW_REASONS = [SERVICE_NOT_AVAILABLE, FORBIDDEN, PERMISSION_DENIED, FAILED_PRECONDITION]
|
|
277
277
|
RESELLER_THROW_REASONS = [BAD_REQUEST, RESOURCE_NOT_FOUND, FORBIDDEN, INVALID]
|
|
278
278
|
SHEETS_ACCESS_THROW_REASONS = DRIVE_USER_THROW_REASONS+[NOT_FOUND, PERMISSION_DENIED, FORBIDDEN, INTERNAL_ERROR, INSUFFICIENT_FILE_PERMISSIONS,
|
|
279
279
|
BAD_REQUEST, INVALID, INVALID_ARGUMENT, FAILED_PRECONDITION]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
gam/__init__.py,sha256=
|
|
1
|
+
gam/__init__.py,sha256=0VP1nWMVS7s80KV7vRP-w5PeBVxPPai8MF-k3IWFVf4,3480758
|
|
2
2
|
gam/__main__.py,sha256=amz0-959ph6zkZKqjaar4n60yho-T37w6qWI36qx0CA,1049
|
|
3
3
|
gam/cacerts.pem,sha256=nJuWha0xm5dHw_5ptGphwRoO-r36Ccpqiww9pCEDbSc,67484
|
|
4
4
|
gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
|
|
@@ -27,7 +27,7 @@ gam/gamlib/glapi.py,sha256=EAQXkaM13t6jjh9vL4eHJqIZRI5kmzeneiFs5xcWXfg,34304
|
|
|
27
27
|
gam/gamlib/glcfg.py,sha256=cV011FpIWge4oi5_dJrdof66vUqX6UCvTGWWTNVmYEg,28055
|
|
28
28
|
gam/gamlib/glclargs.py,sha256=ptSTGELZHQS6SfvGGJ3NrXRoHAToO108NTYsFQE-C4c,42200
|
|
29
29
|
gam/gamlib/glentity.py,sha256=ZLbyMl9NhN-MBf9Rxmho2dBYeS4SNLMctpeaKFZSbQ4,33801
|
|
30
|
-
gam/gamlib/glgapi.py,sha256=
|
|
30
|
+
gam/gamlib/glgapi.py,sha256=TYPc91Ab-tNr-_nRArhPdRaB_6FbCZjBBNpEmRJuXrw,38295
|
|
31
31
|
gam/gamlib/glgdata.py,sha256=weRppttWm6uRyqtBoGPKoHiNZ2h28nhfUV4J_mbCszY,2707
|
|
32
32
|
gam/gamlib/glglobals.py,sha256=B0kCz4K6PO1-n3eZI_lvdRG99Ane1-dH4zS4J4aymlI,9566
|
|
33
33
|
gam/gamlib/glindent.py,sha256=RfBa2LDfLIqPLL5vMfC689TCVmqn8xf-qulSzkiatrc,1228
|
|
@@ -65,8 +65,8 @@ gam/googleapiclient/discovery_cache/base.py,sha256=yCDPtxnbNN-p5_9fzBacC6P3wcUPl
|
|
|
65
65
|
gam/googleapiclient/discovery_cache/file_cache.py,sha256=sim3Mg4HgRYo3vX75jvcKy_aV568EvIrtBfvfbw-044,4774
|
|
66
66
|
gam/iso8601/__init__.py,sha256=Z2PsYbXgAH5a5xzUvgczCboPzqWpm65kRcIngCnhViU,1218
|
|
67
67
|
gam/iso8601/iso8601.py,sha256=Li2FHZ4sBTWuthuQhyCvmvj0j6At8JbGzkSv2fc2RHU,4384
|
|
68
|
-
gam7-7.5.
|
|
69
|
-
gam7-7.5.
|
|
70
|
-
gam7-7.5.
|
|
71
|
-
gam7-7.5.
|
|
72
|
-
gam7-7.5.
|
|
68
|
+
gam7-7.5.5.dist-info/METADATA,sha256=rxgTKAvDjeNdo6glMn1MVmjTCjLxBwe1rAPN-0VHmzY,2888
|
|
69
|
+
gam7-7.5.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
70
|
+
gam7-7.5.5.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
|
|
71
|
+
gam7-7.5.5.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
72
|
+
gam7-7.5.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|