gam7 7.22.0__py3-none-any.whl → 7.22.4__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 +131 -80
- {gam7-7.22.0.dist-info → gam7-7.22.4.dist-info}/METADATA +3 -2
- {gam7-7.22.0.dist-info → gam7-7.22.4.dist-info}/RECORD +6 -6
- {gam7-7.22.0.dist-info → gam7-7.22.4.dist-info}/WHEEL +0 -0
- {gam7-7.22.0.dist-info → gam7-7.22.4.dist-info}/entry_points.txt +0 -0
- {gam7-7.22.0.dist-info → gam7-7.22.4.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.22.
|
|
28
|
+
__version__ = '7.22.04'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -18989,10 +18989,10 @@ def doPrintAliases():
|
|
|
18989
18989
|
pass
|
|
18990
18990
|
elif myarg == 'select':
|
|
18991
18991
|
_, users = getEntityToModify(defaultEntityType=Cmd.ENTITY_USERS)
|
|
18992
|
-
elif myarg
|
|
18993
|
-
isSuspended =
|
|
18994
|
-
elif myarg
|
|
18995
|
-
isArchived =
|
|
18992
|
+
elif myarg == 'issuspended':
|
|
18993
|
+
isSuspended = getBoolean()
|
|
18994
|
+
elif myarg == 'isarchived':
|
|
18995
|
+
isArchived = getBoolean()
|
|
18996
18996
|
elif myarg in {'user','users'}:
|
|
18997
18997
|
users.extend(convertEntityToList(getString(Cmd.OB_EMAIL_ADDRESS_LIST, minLen=0)))
|
|
18998
18998
|
elif myarg in {'group', 'groups'}:
|
|
@@ -41654,7 +41654,7 @@ def convertQueryNameToID(v, nameOrId, matterId, matterNameId):
|
|
|
41654
41654
|
query = callGAPI(v.matters().savedQueries(), 'get',
|
|
41655
41655
|
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41656
41656
|
matterId=matterId, savedQueryId=cg.group(1))
|
|
41657
|
-
return (query['savedQueryId'], query['displayName'], formatVaultNameId(query['savedQueryId'], query['displayName']))
|
|
41657
|
+
return (query['savedQueryId'], query['displayName'], formatVaultNameId(query['savedQueryId'], query['displayName']), query['query'])
|
|
41658
41658
|
except (GAPI.notFound, GAPI.badRequest):
|
|
41659
41659
|
entityDoesNotHaveItemExit([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, nameOrId])
|
|
41660
41660
|
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
@@ -41663,12 +41663,12 @@ def convertQueryNameToID(v, nameOrId, matterId, matterNameId):
|
|
|
41663
41663
|
try:
|
|
41664
41664
|
queries = callGAPIpages(v.matters().savedQueries(), 'list', 'savedQueries',
|
|
41665
41665
|
throwReasons=[GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41666
|
-
matterId=matterId, fields='savedQueries(savedQueryId,displayName),nextPageToken')
|
|
41666
|
+
matterId=matterId, fields='savedQueries(savedQueryId,displayName,query),nextPageToken')
|
|
41667
41667
|
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41668
41668
|
ClientAPIAccessDeniedExit(str(e))
|
|
41669
41669
|
for query in queries:
|
|
41670
41670
|
if query['displayName'].lower() == nameOrIdlower:
|
|
41671
|
-
return (query['savedQueryId'], query['displayName'], formatVaultNameId(query['savedQueryId'], query['displayName']))
|
|
41671
|
+
return (query['savedQueryId'], query['displayName'], formatVaultNameId(query['savedQueryId'], query['displayName']), query['query'])
|
|
41672
41672
|
entityDoesNotHaveItemExit([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, nameOrId])
|
|
41673
41673
|
|
|
41674
41674
|
def getMatterItem(v, state=None):
|
|
@@ -41896,7 +41896,8 @@ def _buildVaultQuery(myarg, query, corpusArgumentMap):
|
|
|
41896
41896
|
query.setdefault('mailOptions', {})['clientSideEncryptedOption'] = getChoice(VAULT_CSE_OPTION_MAP, mapChoice=True)
|
|
41897
41897
|
# voice
|
|
41898
41898
|
elif myarg == 'covereddata':
|
|
41899
|
-
query
|
|
41899
|
+
query.setdefault('voiceOptions', {'coveredData': []})
|
|
41900
|
+
query['voiceOptions']['coveredData'].append(getChoice(VAULT_VOICE_COVERED_DATA_MAP, mapChoice=True))
|
|
41900
41901
|
|
|
41901
41902
|
def _validateVaultQuery(body, corpusArgumentMap):
|
|
41902
41903
|
if 'corpus' not in body['query']:
|
|
@@ -41957,7 +41958,8 @@ def doCreateVaultExport():
|
|
|
41957
41958
|
elif myarg == 'includeaccessinfo':
|
|
41958
41959
|
body['exportOptions'].setdefault('driveOptions', {})['includeAccessInfo'] = getBoolean()
|
|
41959
41960
|
elif myarg == 'covereddata':
|
|
41960
|
-
body['exportOptions'].setdefault('voiceOptions', {
|
|
41961
|
+
body['exportOptions'].setdefault('voiceOptions', {'coveredData': []})
|
|
41962
|
+
body['exportOptions']['voiceOptions']['coveredData'].append(getChoice(VAULT_VOICE_COVERED_DATA_MAP, mapChoice=True))
|
|
41961
41963
|
elif myarg == 'showdetails':
|
|
41962
41964
|
showDetails = True
|
|
41963
41965
|
returnIdOnly = False
|
|
@@ -42459,6 +42461,34 @@ def _showVaultHold(matterNameId, hold, cd, FJQC, k=0, kcount=0):
|
|
|
42459
42461
|
showJSON(None, hold, timeObjects=VAULT_HOLD_TIME_OBJECTS)
|
|
42460
42462
|
Ind.Decrement()
|
|
42461
42463
|
|
|
42464
|
+
def _useVaultQuery(v, matterId, matterNameId, body):
|
|
42465
|
+
_, _, _, query = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
|
|
42466
|
+
body['corpus'] = query['corpus']
|
|
42467
|
+
method = query.get('method')
|
|
42468
|
+
if method == 'ACCOUNT':
|
|
42469
|
+
body['accounts'] = []
|
|
42470
|
+
for email in query['accountInfo']['emails']:
|
|
42471
|
+
body['accounts'].append({'email': email})
|
|
42472
|
+
elif method == 'ORG_UNIT':
|
|
42473
|
+
body['orgUnit'] = {'orgUnitId': query['orgUnitInfo']['orgUnitId']}
|
|
42474
|
+
queryType = VAULT_CORPUS_QUERY_MAP[query['corpus']]
|
|
42475
|
+
if queryType is None:
|
|
42476
|
+
return
|
|
42477
|
+
body['query'] = {queryType: {}}
|
|
42478
|
+
if query['corpus'] == 'DRIVE':
|
|
42479
|
+
body['query'][queryType]['includeSharedDriveFiles'] = query['driveOptions'].get('includeSharedDrives', False)
|
|
42480
|
+
elif query['corpus'] in {'GROUPS', 'MAIL'}:
|
|
42481
|
+
if query.get('terms'):
|
|
42482
|
+
body['query'][queryType]['terms'] = query['terms']
|
|
42483
|
+
if query.get('startTime'):
|
|
42484
|
+
body['query'][queryType]['startTime'] = query['startTime']
|
|
42485
|
+
if query.get('endTime'):
|
|
42486
|
+
body['query'][queryType]['endTime'] = query['endTime']
|
|
42487
|
+
elif query['corpus'] == 'HANGOUTS_CHAT':
|
|
42488
|
+
body['query'][queryType]['includeRooms'] = query['hangoutsChatOptions'].get('includeRooms', False)
|
|
42489
|
+
elif query['corpus'] == 'VOICE':
|
|
42490
|
+
body['query'][queryType]['coveredData'] = query['voiceOptions']['coveredData']
|
|
42491
|
+
|
|
42462
42492
|
def _getHoldQueryParameters(myarg, queryParameters):
|
|
42463
42493
|
if myarg == 'query':
|
|
42464
42494
|
queryParameters['queryLocation'] = Cmd.Location()
|
|
@@ -42474,7 +42504,8 @@ def _getHoldQueryParameters(myarg, queryParameters):
|
|
|
42474
42504
|
elif myarg in {'includeshareddrives', 'includeteamdrives'}:
|
|
42475
42505
|
queryParameters['includeSharedDriveFiles'] = getBoolean()
|
|
42476
42506
|
elif myarg == 'covereddata':
|
|
42477
|
-
queryParameters
|
|
42507
|
+
queryParameters.setdefault('coveredData', [])
|
|
42508
|
+
queryParameters['coveredData'].append(getChoice(VAULT_VOICE_COVERED_DATA_MAP, mapChoice=True))
|
|
42478
42509
|
else:
|
|
42479
42510
|
return False
|
|
42480
42511
|
return True
|
|
@@ -42509,7 +42540,11 @@ def _setHoldQuery(body, queryParameters):
|
|
|
42509
42540
|
if queryParameters.get('coveredData'):
|
|
42510
42541
|
body['query'][queryType]['coveredData'] = queryParameters['coveredData']
|
|
42511
42542
|
|
|
42512
|
-
# gam create vaulthold|hold matter <MatterItem> [name <String>]
|
|
42543
|
+
# gam create vaulthold|hold matter <MatterItem> [name <String>]
|
|
42544
|
+
# vaultquery <QueryItem>
|
|
42545
|
+
# [showdetails|returnidonly]
|
|
42546
|
+
# gam create vaulthold|hold matter <MatterItem> [name <String>]
|
|
42547
|
+
# corpus calendar|drive|mail|groups|hangouts_chat|voice
|
|
42513
42548
|
# [(accounts|groups|users <EmailItemList>) | (orgunit|org|ou <OrgUnit>)]
|
|
42514
42549
|
# [query <QueryVaultCorpus>]
|
|
42515
42550
|
# [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
|
@@ -42523,13 +42558,16 @@ def doCreateVaultHold():
|
|
|
42523
42558
|
matterId = None
|
|
42524
42559
|
accounts = []
|
|
42525
42560
|
queryParameters = {}
|
|
42526
|
-
returnIdOnly = showDetails = False
|
|
42561
|
+
returnIdOnly = showDetails = usedVaultQuery = False
|
|
42527
42562
|
while Cmd.ArgumentsRemaining():
|
|
42528
42563
|
myarg = getArgument()
|
|
42529
42564
|
if myarg == 'matter':
|
|
42530
42565
|
matterId, matterNameId = getMatterItem(v)
|
|
42531
42566
|
elif myarg == 'name':
|
|
42532
42567
|
body['name'] = getString(Cmd.OB_STRING)
|
|
42568
|
+
elif matterId is not None and myarg == 'vaultquery':
|
|
42569
|
+
_useVaultQuery(v, matterId, matterNameId, body)
|
|
42570
|
+
usedVaultQuery = True
|
|
42533
42571
|
elif myarg == 'corpus':
|
|
42534
42572
|
body['corpus'] = getChoice(VAULT_CORPUS_ARGUMENT_MAP, mapChoice=True)
|
|
42535
42573
|
elif myarg in {'accounts', 'users', 'groups'}:
|
|
@@ -42553,7 +42591,8 @@ def doCreateVaultHold():
|
|
|
42553
42591
|
missingArgumentExit(f'corpus {"|".join(VAULT_CORPUS_ARGUMENT_MAP)}')
|
|
42554
42592
|
if 'name' not in body:
|
|
42555
42593
|
body['name'] = f'GAM {body["corpus"]} Hold - {ISOformatTimeStamp(todaysTime())}'
|
|
42556
|
-
|
|
42594
|
+
if not usedVaultQuery:
|
|
42595
|
+
_setHoldQuery(body, queryParameters)
|
|
42557
42596
|
if accounts:
|
|
42558
42597
|
body['accounts'] = []
|
|
42559
42598
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
@@ -43006,7 +43045,7 @@ def doInfoVaultQuery():
|
|
|
43006
43045
|
v = buildGAPIObject(API.VAULT)
|
|
43007
43046
|
if not Cmd.ArgumentIsAhead('matter'):
|
|
43008
43047
|
matterId, matterNameId = getMatterItem(v)
|
|
43009
|
-
queryId, queryName, queryNameId = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
|
|
43048
|
+
queryId, queryName, queryNameId, _ = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
|
|
43010
43049
|
else:
|
|
43011
43050
|
queryName = getString(Cmd.OB_QUERY_ITEM)
|
|
43012
43051
|
cd = drive = None
|
|
@@ -43016,7 +43055,7 @@ def doInfoVaultQuery():
|
|
|
43016
43055
|
myarg = getArgument()
|
|
43017
43056
|
if myarg == 'matter':
|
|
43018
43057
|
matterId, matterNameId = getMatterItem(v)
|
|
43019
|
-
queryId, queryName, queryNameId = convertQueryNameToID(v, queryName, matterId, matterNameId)
|
|
43058
|
+
queryId, queryName, queryNameId, _ = convertQueryNameToID(v, queryName, matterId, matterNameId)
|
|
43020
43059
|
elif myarg == 'shownames':
|
|
43021
43060
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
43022
43061
|
_, drive = buildGAPIServiceObject(API.DRIVE3, _getAdminEmail())
|
|
@@ -45754,71 +45793,81 @@ def doPrintUsers(entityList=None):
|
|
|
45754
45793
|
csvPF.WriteRowNoFilter(row)
|
|
45755
45794
|
|
|
45756
45795
|
def _printUser(userEntity, i, count):
|
|
45757
|
-
if isSuspended is None
|
|
45758
|
-
|
|
45759
|
-
|
|
45760
|
-
|
|
45761
|
-
|
|
45762
|
-
|
|
45763
|
-
|
|
45764
|
-
|
|
45765
|
-
|
|
45766
|
-
|
|
45767
|
-
|
|
45768
|
-
|
|
45769
|
-
|
|
45770
|
-
|
|
45771
|
-
|
|
45772
|
-
|
|
45773
|
-
|
|
45774
|
-
|
|
45775
|
-
|
|
45776
|
-
|
|
45777
|
-
|
|
45778
|
-
|
|
45779
|
-
|
|
45780
|
-
|
|
45781
|
-
|
|
45782
|
-
|
|
45783
|
-
|
|
45784
|
-
|
|
45785
|
-
|
|
45786
|
-
|
|
45787
|
-
|
|
45788
|
-
|
|
45789
|
-
|
|
45790
|
-
|
|
45791
|
-
|
|
45792
|
-
|
|
45793
|
-
|
|
45794
|
-
|
|
45795
|
-
|
|
45796
|
-
|
|
45797
|
-
if aliasMatchPattern and 'aliases' in userEntity:
|
|
45798
|
-
userEntity['aliases'] = [alias for alias in userEntity['aliases'] if aliasMatchPattern.match(alias)]
|
|
45799
|
-
if printOptions['getLicenseFeed'] or printOptions['getLicenseFeedByUser']:
|
|
45800
|
-
if printOptions['getLicenseFeed']:
|
|
45801
|
-
u_licenses = licenses.get(userEmail.lower(), [])
|
|
45796
|
+
if (isSuspended is None and isArchived is None):
|
|
45797
|
+
showUser = True
|
|
45798
|
+
elif (isSuspended is not None and isArchived is None):
|
|
45799
|
+
showUser = isSuspended == userEntity.get('suspended', isSuspended)
|
|
45800
|
+
elif (isSuspended is None and isArchived is not None):
|
|
45801
|
+
showUser = isArchived == userEntity.get('archived', isArchived)
|
|
45802
|
+
else:
|
|
45803
|
+
showUser = ((isSuspended == userEntity.get('suspended', isSuspended)) or
|
|
45804
|
+
(isArchived == userEntity.get('archived', isArchived)))
|
|
45805
|
+
if not showUser:
|
|
45806
|
+
return
|
|
45807
|
+
if showValidColumn:
|
|
45808
|
+
userEntity[showValidColumn] = True
|
|
45809
|
+
userEmail = userEntity['primaryEmail']
|
|
45810
|
+
if printOptions['emailParts']:
|
|
45811
|
+
if userEmail.find('@') != -1:
|
|
45812
|
+
userEntity['primaryEmailLocal'], userEntity['primaryEmailDomain'] = splitEmailAddress(userEmail)
|
|
45813
|
+
if 'languages' in userEntity and not FJQC.formatJSON:
|
|
45814
|
+
userEntity['languages'] = _formatLanguagesList(userEntity.pop('languages'), delimiter)
|
|
45815
|
+
for location in userEntity.get('locations', []):
|
|
45816
|
+
location['buildingName'] = _getBuildingNameById(cd, location.get('buildingId', ''))
|
|
45817
|
+
if quotePlusPhoneNumbers:
|
|
45818
|
+
for phone in userEntity.get('phones', []):
|
|
45819
|
+
phoneNumber = phone.get('value', '')
|
|
45820
|
+
if phoneNumber.startswith('+'):
|
|
45821
|
+
phone['value'] = "'"+phoneNumber
|
|
45822
|
+
if schemaParms['selectedSchemaFields']:
|
|
45823
|
+
_filterSchemaFields(userEntity, schemaParms)
|
|
45824
|
+
if printOptions['getGroupFeed']:
|
|
45825
|
+
printGettingAllEntityItemsForWhom(Ent.GROUP_MEMBERSHIP, userEmail, i, count)
|
|
45826
|
+
try:
|
|
45827
|
+
groups = callGAPIpages(cd.groups(), 'list', 'groups',
|
|
45828
|
+
pageMessage=getPageMessageForWhom(),
|
|
45829
|
+
throwReasons=GAPI.GROUP_LIST_USERKEY_THROW_REASONS,
|
|
45830
|
+
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
45831
|
+
userKey=userEmail, orderBy='email', fields='nextPageToken,groups(email)')
|
|
45832
|
+
numGroups = len(groups)
|
|
45833
|
+
if not printOptions['groupsInColumns']:
|
|
45834
|
+
userEntity['GroupsCount'] = numGroups
|
|
45835
|
+
userEntity['Groups'] = delimiter.join([groupname['email'] for groupname in groups])
|
|
45802
45836
|
else:
|
|
45803
|
-
|
|
45804
|
-
|
|
45805
|
-
userEntity['
|
|
45806
|
-
|
|
45807
|
-
userEntity['
|
|
45808
|
-
|
|
45837
|
+
if numGroups > printOptions['maxGroups']:
|
|
45838
|
+
printOptions['maxGroups'] = numGroups
|
|
45839
|
+
userEntity['Groups'] = numGroups
|
|
45840
|
+
for j, group in enumerate(groups):
|
|
45841
|
+
userEntity[f'Groups{GC.Values[GC.CSV_OUTPUT_SUBFIELD_DELIMITER]}{j}'] = group['email']
|
|
45842
|
+
except (GAPI.invalidMember, GAPI.invalidInput):
|
|
45843
|
+
badRequestWarning(Ent.GROUP, Ent.MEMBER, userEmail)
|
|
45844
|
+
except (GAPI.resourceNotFound, GAPI.domainNotFound, GAPI.forbidden, GAPI.badRequest):
|
|
45845
|
+
accessErrorExit(cd)
|
|
45846
|
+
if aliasMatchPattern and 'aliases' in userEntity:
|
|
45847
|
+
userEntity['aliases'] = [alias for alias in userEntity['aliases'] if aliasMatchPattern.match(alias)]
|
|
45848
|
+
if printOptions['getLicenseFeed'] or printOptions['getLicenseFeedByUser']:
|
|
45849
|
+
if printOptions['getLicenseFeed']:
|
|
45850
|
+
u_licenses = licenses.get(userEmail.lower(), [])
|
|
45809
45851
|
else:
|
|
45810
|
-
u_licenses =
|
|
45852
|
+
u_licenses = getUserLicenses(lic, userEntity, skus)
|
|
45811
45853
|
if not oneLicensePerRow:
|
|
45812
|
-
|
|
45813
|
-
else:
|
|
45854
|
+
userEntity['LicensesCount'] = len(u_licenses)
|
|
45814
45855
|
if u_licenses:
|
|
45815
|
-
|
|
45816
|
-
|
|
45817
|
-
|
|
45818
|
-
|
|
45819
|
-
|
|
45820
|
-
|
|
45856
|
+
userEntity['Licenses'] = delimiter.join(u_licenses)
|
|
45857
|
+
userEntity['LicensesDisplay'] = delimiter.join([SKU.skuIdToDisplayName(skuId) for skuId in u_licenses])
|
|
45858
|
+
else:
|
|
45859
|
+
u_licenses = []
|
|
45860
|
+
if not oneLicensePerRow:
|
|
45861
|
+
_writeUserEntity(userEntity)
|
|
45862
|
+
else:
|
|
45863
|
+
if u_licenses:
|
|
45864
|
+
for skuId in u_licenses:
|
|
45865
|
+
userEntity['License'] = skuId
|
|
45866
|
+
userEntity['LicenseDisplay'] = SKU.skuIdToDisplayName(skuId)
|
|
45821
45867
|
_writeUserEntity(userEntity)
|
|
45868
|
+
else:
|
|
45869
|
+
userEntity['License'] = userEntity['LicenseDisplay'] = ''
|
|
45870
|
+
_writeUserEntity(userEntity)
|
|
45822
45871
|
|
|
45823
45872
|
def _updateDomainCounts(emailAddress):
|
|
45824
45873
|
nonlocal domainCounts
|
|
@@ -45911,10 +45960,10 @@ def doPrintUsers(entityList=None):
|
|
|
45911
45960
|
showDeleted = True
|
|
45912
45961
|
elif entityList is None and myarg == 'select':
|
|
45913
45962
|
_, entityList = getEntityToModify(defaultEntityType=Cmd.ENTITY_USERS)
|
|
45914
|
-
elif myarg
|
|
45915
|
-
isSuspended =
|
|
45916
|
-
elif myarg
|
|
45917
|
-
isArchived =
|
|
45963
|
+
elif myarg == 'issuspended':
|
|
45964
|
+
isSuspended = getBoolean()
|
|
45965
|
+
elif myarg == 'isarchived':
|
|
45966
|
+
isArchived = getBoolean()
|
|
45918
45967
|
elif myarg == 'orderby':
|
|
45919
45968
|
orderBy, sortOrder = getOrderBySortOrder(USERS_ORDERBY_CHOICE_MAP)
|
|
45920
45969
|
elif myarg == 'userview':
|
|
@@ -46092,6 +46141,8 @@ def doPrintUsers(entityList=None):
|
|
|
46092
46141
|
# If no individual fields were specified (allfields, basic, full) or individual fields other than primaryEmail were specified, look up each user
|
|
46093
46142
|
if isSuspended is not None and fieldsList:
|
|
46094
46143
|
fieldsList.append('suspended')
|
|
46144
|
+
if isArchived is not None and fieldsList:
|
|
46145
|
+
fieldsList.append('archived')
|
|
46095
46146
|
if projectionSet or len(set(fieldsList)) > 1 or showValidColumn:
|
|
46096
46147
|
jcount = len(entityList)
|
|
46097
46148
|
fields = getFieldsFromFieldsList(fieldsList)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gam7
|
|
3
|
-
Version: 7.22.
|
|
3
|
+
Version: 7.22.4
|
|
4
4
|
Summary: CLI tool to manage Google Workspace
|
|
5
5
|
Project-URL: Homepage, https://github.com/GAM-team/GAM
|
|
6
6
|
Project-URL: Issues, https://github.com/GAM-team/GAM/issues
|
|
@@ -27,10 +27,11 @@ Requires-Dist: google-api-python-client>=2.167.0
|
|
|
27
27
|
Requires-Dist: google-auth-httplib2>=0.2.0
|
|
28
28
|
Requires-Dist: google-auth-oauthlib>=1.2.2
|
|
29
29
|
Requires-Dist: google-auth>=2.39.0
|
|
30
|
-
Requires-Dist: httplib2>=0.
|
|
30
|
+
Requires-Dist: httplib2>=0.31.0
|
|
31
31
|
Requires-Dist: lxml>=5.4.0
|
|
32
32
|
Requires-Dist: passlib>=1.7.4
|
|
33
33
|
Requires-Dist: pathvalidate>=3.2.3
|
|
34
|
+
Requires-Dist: pysocks>=1.7.1
|
|
34
35
|
Provides-Extra: yubikey
|
|
35
36
|
Requires-Dist: yubikey-manager>=5.6.1; extra == 'yubikey'
|
|
36
37
|
Description-Content-Type: text/markdown
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
gam/__init__.py,sha256=
|
|
1
|
+
gam/__init__.py,sha256=2bPGrpvBvJlhIm2RB--NdcPovJV1lruV2KngQgPiPVE,3612155
|
|
2
2
|
gam/__main__.py,sha256=amz0-959ph6zkZKqjaar4n60yho-T37w6qWI36qx0CA,1049
|
|
3
3
|
gam/cacerts.pem,sha256=DUsVo2XlFYwfkhe3gnxa-Km4Z4noz74hSApXwTT-nQE,44344
|
|
4
4
|
gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
|
|
@@ -47,8 +47,8 @@ gam/gdata/apps/audit/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrK
|
|
|
47
47
|
gam/gdata/apps/audit/service.py,sha256=Z1eueThcNeVUMWP1DRWc_DGHrJCiJI8W_xj6L-cqu-Q,9658
|
|
48
48
|
gam/gdata/apps/contacts/__init__.py,sha256=Um6zgIkiahZns7yAEuC3pxHSMD8iciZ_EoynSLoYPfU,30463
|
|
49
49
|
gam/gdata/apps/contacts/service.py,sha256=5lNb-Ii1Gyek6ePFji3kyoYtCBc8CuJTwagx2BL2o14,15684
|
|
50
|
-
gam7-7.22.
|
|
51
|
-
gam7-7.22.
|
|
52
|
-
gam7-7.22.
|
|
53
|
-
gam7-7.22.
|
|
54
|
-
gam7-7.22.
|
|
50
|
+
gam7-7.22.4.dist-info/METADATA,sha256=gr6AsDjt7Td27C_dEL3sBhO6U7uzVJLnT_-eHCVjeOw,3092
|
|
51
|
+
gam7-7.22.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
52
|
+
gam7-7.22.4.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
|
|
53
|
+
gam7-7.22.4.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
54
|
+
gam7-7.22.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|