gam7 7.22.6__py3-none-any.whl → 7.23.0__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 +58 -23
- gam/gamlib/glcfg.py +4 -0
- gam/gamlib/glentity.py +2 -0
- {gam7-7.22.6.dist-info → gam7-7.23.0.dist-info}/METADATA +1 -1
- {gam7-7.22.6.dist-info → gam7-7.23.0.dist-info}/RECORD +8 -8
- {gam7-7.22.6.dist-info → gam7-7.23.0.dist-info}/WHEEL +0 -0
- {gam7-7.22.6.dist-info → gam7-7.23.0.dist-info}/entry_points.txt +0 -0
- {gam7-7.22.6.dist-info → gam7-7.23.0.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.
|
|
28
|
+
__version__ = '7.23.00'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -26579,7 +26579,7 @@ def printShowChatEmojis(users):
|
|
|
26579
26579
|
pageMessage=_getChatPageMessage(Ent.CHAT_EMOJI, user, i, count, pfilter),
|
|
26580
26580
|
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
|
|
26581
26581
|
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
26582
|
-
pageSize=
|
|
26582
|
+
pageSize=GC.Values[GC.CHAT_MAX_RESULTS], filter=pfilter)
|
|
26583
26583
|
except (GAPI.notFound, GAPI.invalidArgument, GAPI.permissionDenied) as e:
|
|
26584
26584
|
exitIfChatNotConfigured(chat, kvList, str(e), i, count)
|
|
26585
26585
|
continue
|
|
@@ -26649,7 +26649,14 @@ def getChatSpaceParameters(myarg, body, typeChoicesMap, updateMask):
|
|
|
26649
26649
|
|
|
26650
26650
|
CHAT_MEMBER_ROLE_MAP = {
|
|
26651
26651
|
'member': 'ROLE_MEMBER',
|
|
26652
|
-
'manager': 'ROLE_MANAGER'
|
|
26652
|
+
'manager': 'ROLE_MANAGER',
|
|
26653
|
+
'owner': 'ROLE_OWNER',
|
|
26654
|
+
}
|
|
26655
|
+
|
|
26656
|
+
CHAT_ROLE_ENTITY_TYPE_MAP = {
|
|
26657
|
+
'ROLE_MEMBER': Ent.CHAT_MEMBER_USER,
|
|
26658
|
+
'ROLE_MANAGER': Ent.CHAT_MANAGER_USER,
|
|
26659
|
+
'ROLE_OWNER': Ent.CHAT_OWNER_USER,
|
|
26653
26660
|
}
|
|
26654
26661
|
|
|
26655
26662
|
CHAT_MEMBER_TYPE_MAP = {
|
|
@@ -27006,7 +27013,6 @@ def _getChatSpaceSearchParms(myarg, queries, queryTimes, OBY):
|
|
|
27006
27013
|
return False
|
|
27007
27014
|
return True
|
|
27008
27015
|
|
|
27009
|
-
CHAT_PAGE_SIZE = 1000
|
|
27010
27016
|
CHAT_SPACES_ADMIN_ORDERBY_CHOICE_MAP = {
|
|
27011
27017
|
'createtime': 'createTime',
|
|
27012
27018
|
'lastactivetime': 'lastActiveTime',
|
|
@@ -27086,7 +27092,7 @@ def printShowChatSpaces(users):
|
|
|
27086
27092
|
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.INTERNAL_ERROR,
|
|
27087
27093
|
GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
|
|
27088
27094
|
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
27089
|
-
fields=fields, pageSize=
|
|
27095
|
+
fields=fields, pageSize=GC.Values[GC.CHAT_MAX_RESULTS], **kwargsCS)
|
|
27090
27096
|
if showAccessSettings:
|
|
27091
27097
|
for space in spaces:
|
|
27092
27098
|
if space['spaceType'] == 'SPACE':
|
|
@@ -27152,7 +27158,7 @@ def _getChatSpaceMembers(cd, chatSpace, ciGroupName):
|
|
|
27152
27158
|
pageMessage=_getChatPageMessage(Ent.CHAT_MEMBER, user, 0, 0, qfilter),
|
|
27153
27159
|
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
|
|
27154
27160
|
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
27155
|
-
parent=chatSpace, fields=fields, pageSize=
|
|
27161
|
+
parent=chatSpace, fields=fields, pageSize=GC.Values[GC.CHAT_MAX_RESULTS], **kwargsUAA)
|
|
27156
27162
|
for member in members:
|
|
27157
27163
|
_getChatMemberEmail(cd, member)
|
|
27158
27164
|
gmember = {}
|
|
@@ -27289,7 +27295,7 @@ def createChatMember(users):
|
|
|
27289
27295
|
missingArgumentExit('space')
|
|
27290
27296
|
if not userList and not groupList:
|
|
27291
27297
|
missingArgumentExit('user|members|group|groups')
|
|
27292
|
-
userEntityType =
|
|
27298
|
+
userEntityType = CHAT_ROLE_ENTITY_TYPE_MAP[role]
|
|
27293
27299
|
userMembers = []
|
|
27294
27300
|
for user in userList:
|
|
27295
27301
|
userMembers.append({'member': {'name': f'users/{user}', 'type': mtype}})
|
|
@@ -27546,7 +27552,7 @@ def syncChatMembers(users):
|
|
|
27546
27552
|
unknownArgumentExit()
|
|
27547
27553
|
if not parent:
|
|
27548
27554
|
missingArgumentExit('space')
|
|
27549
|
-
userEntityType =
|
|
27555
|
+
userEntityType = CHAT_ROLE_ENTITY_TYPE_MAP[role]
|
|
27550
27556
|
userMembers = {}
|
|
27551
27557
|
syncUsersSet = set()
|
|
27552
27558
|
for user in userList:
|
|
@@ -27576,7 +27582,7 @@ def syncChatMembers(users):
|
|
|
27576
27582
|
pageMessage=_getChatPageMessage(Ent.CHAT_MEMBER, user, i, count, qfilter),
|
|
27577
27583
|
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
|
|
27578
27584
|
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
27579
|
-
parent=parent, showGroups=groupsSpecified, pageSize=
|
|
27585
|
+
parent=parent, showGroups=groupsSpecified, pageSize=GC.Values[GC.CHAT_MAX_RESULTS], **kwargs, **kwargsUAA)
|
|
27580
27586
|
for member in members:
|
|
27581
27587
|
if 'member' in member:
|
|
27582
27588
|
if member['member']['type'] == mtype and member['role'] == role:
|
|
@@ -27777,7 +27783,7 @@ def printShowChatMembers(users):
|
|
|
27777
27783
|
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.INTERNAL_ERROR,
|
|
27778
27784
|
GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
|
|
27779
27785
|
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
27780
|
-
fields="nextPageToken,spaces(name,displayName,spaceType,membershipCount)", pageSize=
|
|
27786
|
+
fields="nextPageToken,spaces(name,displayName,spaceType,membershipCount)", pageSize=GC.Values[GC.CHAT_MAX_RESULTS],
|
|
27781
27787
|
**kwargsCS)
|
|
27782
27788
|
for space in sorted(spaces, key=lambda k: k[sortName]):
|
|
27783
27789
|
if space['spaceType'] == 'SPACE' and 'membershipCount' in space:
|
|
@@ -27794,7 +27800,7 @@ def printShowChatMembers(users):
|
|
|
27794
27800
|
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.INTERNAL_ERROR,
|
|
27795
27801
|
GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
|
|
27796
27802
|
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
27797
|
-
fields="nextPageToken,spaces(name,displayName,spaceType,membershipCount)", pageSize=
|
|
27803
|
+
fields="nextPageToken,spaces(name,displayName,spaceType,membershipCount)", pageSize=GC.Values[GC.CHAT_MAX_RESULTS],
|
|
27798
27804
|
**kwargsCS)
|
|
27799
27805
|
for space in sorted(spaces, key=lambda k: k[sortName]):
|
|
27800
27806
|
# if 'membershipCount' in space:
|
|
@@ -27825,7 +27831,7 @@ def printShowChatMembers(users):
|
|
|
27825
27831
|
pageMessage=_getChatPageMessage(Ent.CHAT_MEMBER, user, j, jcount, qfilter),
|
|
27826
27832
|
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
|
|
27827
27833
|
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
27828
|
-
parent=parentName, fields=fields, pageSize=
|
|
27834
|
+
parent=parentName, fields=fields, pageSize=GC.Values[GC.CHAT_MAX_RESULTS], **kwargs, **kwargsUAA)
|
|
27829
27835
|
for member in members:
|
|
27830
27836
|
_getChatMemberEmail(cd, member)
|
|
27831
27837
|
except (GAPI.notFound, GAPI.invalidArgument, GAPI.permissionDenied) as e:
|
|
@@ -28139,7 +28145,7 @@ def printShowChatMessages(users):
|
|
|
28139
28145
|
pageMessage=_getChatPageMessage(Ent.CHAT_MESSAGE, user, i, count, qfilter),
|
|
28140
28146
|
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
|
|
28141
28147
|
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
28142
|
-
pageSize=
|
|
28148
|
+
pageSize=GC.Values[GC.CHAT_MAX_RESULTS], parent=parentName, filter=pfilter, showDeleted=showDeleted,
|
|
28143
28149
|
fields=fields)
|
|
28144
28150
|
for message in messages:
|
|
28145
28151
|
if 'sender' in message:
|
|
@@ -28257,7 +28263,7 @@ def printShowChatEvents(users):
|
|
|
28257
28263
|
pageMessage=_getChatPageMessage(Ent.CHAT_EVENT, user, i, count, qfilter),
|
|
28258
28264
|
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
|
|
28259
28265
|
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
28260
|
-
pageSize=
|
|
28266
|
+
pageSize=GC.Values[GC.CHAT_MAX_RESULTS], parent=parentName, filter=pfilter)
|
|
28261
28267
|
except (GAPI.notFound, GAPI.invalidArgument, GAPI.permissionDenied) as e:
|
|
28262
28268
|
exitIfChatNotConfigured(chat, kvList, str(e), i, count)
|
|
28263
28269
|
continue
|
|
@@ -41814,11 +41820,13 @@ VAULT_QUERY_ARGS = [
|
|
|
41814
41820
|
# drive
|
|
41815
41821
|
'driveclientsideencryption', 'driveversiondate', 'includeshareddrives', 'includeteamdrives', 'shareddrivesoption',
|
|
41816
41822
|
# hangoutsChat
|
|
41817
|
-
'includerooms',
|
|
41823
|
+
'includerooms',
|
|
41818
41824
|
# mail
|
|
41819
41825
|
'mailclientsideencryption', 'excludedrafts',
|
|
41820
41826
|
# voice
|
|
41821
41827
|
'covereddata',
|
|
41828
|
+
# all
|
|
41829
|
+
'json',
|
|
41822
41830
|
] + list(VAULT_SEARCH_METHODS_MAP.keys())
|
|
41823
41831
|
|
|
41824
41832
|
def _buildVaultQuery(myarg, query, corpusArgumentMap):
|
|
@@ -41835,11 +41843,11 @@ def _buildVaultQuery(myarg, query, corpusArgumentMap):
|
|
|
41835
41843
|
elif myarg == 'scope':
|
|
41836
41844
|
query['dataScope'] = getChoice(VAULT_EXPORT_DATASCOPE_MAP, mapChoice=True)
|
|
41837
41845
|
elif myarg in VAULT_SEARCH_METHODS_MAP:
|
|
41838
|
-
if query.get('
|
|
41846
|
+
if query.get('method'):
|
|
41839
41847
|
Cmd.Backup()
|
|
41840
41848
|
usageErrorExit(Msg.MULTIPLE_SEARCH_METHODS_SPECIFIED.format(formatChoiceList(VAULT_SEARCH_METHODS_MAP)))
|
|
41841
41849
|
searchMethod = VAULT_SEARCH_METHODS_MAP[myarg]
|
|
41842
|
-
query['
|
|
41850
|
+
query['method'] = searchMethod
|
|
41843
41851
|
if searchMethod == 'ACCOUNT':
|
|
41844
41852
|
query['accountInfo'] = {'emails': getNormalizedEmailAddressEntity()}
|
|
41845
41853
|
elif searchMethod == 'ORG_UNIT':
|
|
@@ -41901,11 +41909,19 @@ def _buildVaultQuery(myarg, query, corpusArgumentMap):
|
|
|
41901
41909
|
elif myarg == 'covereddata':
|
|
41902
41910
|
query.setdefault('voiceOptions', {'coveredData': []})
|
|
41903
41911
|
query['voiceOptions']['coveredData'].append(getChoice(VAULT_VOICE_COVERED_DATA_MAP, mapChoice=True))
|
|
41912
|
+
# all
|
|
41913
|
+
elif myarg == 'json':
|
|
41914
|
+
jsonData = getJSON([])
|
|
41915
|
+
if 'query' in jsonData:
|
|
41916
|
+
query.update(jsonData['query'])
|
|
41917
|
+
else:
|
|
41918
|
+
query.update(jsonData)
|
|
41919
|
+
|
|
41904
41920
|
|
|
41905
41921
|
def _validateVaultQuery(body, corpusArgumentMap):
|
|
41906
41922
|
if 'corpus' not in body['query']:
|
|
41907
41923
|
missingArgumentExit(f'corpus {formatChoiceList(corpusArgumentMap)}')
|
|
41908
|
-
if '
|
|
41924
|
+
if 'method' not in body['query']:
|
|
41909
41925
|
missingArgumentExit(formatChoiceList(VAULT_SEARCH_METHODS_MAP))
|
|
41910
41926
|
if 'exportOptions' in body:
|
|
41911
41927
|
for corpus, options in VAULT_CORPUS_OPTIONS_MAP.items():
|
|
@@ -41935,6 +41951,7 @@ def _validateVaultQuery(body, corpusArgumentMap):
|
|
|
41935
41951
|
# [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
|
41936
41952
|
# [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
|
41937
41953
|
# (covereddata calllogs|textmessages|voicemails)*
|
|
41954
|
+
# [<JSONData>]
|
|
41938
41955
|
# [driveclientsideencryption any|encrypted|unencrypted]
|
|
41939
41956
|
# [includeaccessinfo <Boolean>]
|
|
41940
41957
|
# [excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
|
@@ -43054,6 +43071,7 @@ def doCreateCopyVaultQuery(copyCmd):
|
|
|
43054
43071
|
targetId = None
|
|
43055
43072
|
cd = drive = None
|
|
43056
43073
|
FJQC = FormatJSONQuoteChar()
|
|
43074
|
+
returnIdOnly = showDetails = False
|
|
43057
43075
|
while Cmd.ArgumentsRemaining():
|
|
43058
43076
|
myarg = getArgument()
|
|
43059
43077
|
if myarg == 'name':
|
|
@@ -43067,6 +43085,12 @@ def doCreateCopyVaultQuery(copyCmd):
|
|
|
43067
43085
|
_, drive = buildGAPIServiceObject(API.DRIVE3, _getAdminEmail())
|
|
43068
43086
|
if drive is None:
|
|
43069
43087
|
return
|
|
43088
|
+
elif myarg == 'showdetails':
|
|
43089
|
+
showDetails = True
|
|
43090
|
+
returnIdOnly = False
|
|
43091
|
+
elif myarg == 'returnidonly':
|
|
43092
|
+
returnIdOnly = True
|
|
43093
|
+
showDetails = False
|
|
43070
43094
|
else:
|
|
43071
43095
|
FJQC.GetFormatJSON(myarg)
|
|
43072
43096
|
if copyCmd:
|
|
@@ -43078,6 +43102,7 @@ def doCreateCopyVaultQuery(copyCmd):
|
|
|
43078
43102
|
resultId = targetId
|
|
43079
43103
|
resultNameId = targetNameId
|
|
43080
43104
|
else:
|
|
43105
|
+
_validateVaultQuery(body, VAULT_CORPUS_ARGUMENT_MAP)
|
|
43081
43106
|
if not body['displayName']:
|
|
43082
43107
|
body['displayName'] = 'GAM {body["query"]["corpus"]} Query - {ISOformatTimeStamp(todaysTime())}'
|
|
43083
43108
|
resultId = matterId
|
|
@@ -43086,7 +43111,13 @@ def doCreateCopyVaultQuery(copyCmd):
|
|
|
43086
43111
|
result = callGAPI(v.matters().savedQueries(), 'create',
|
|
43087
43112
|
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT, GAPI.ALREADY_EXISTS],
|
|
43088
43113
|
matterId=resultId, body=body)
|
|
43089
|
-
|
|
43114
|
+
if not returnIdOnly:
|
|
43115
|
+
if not FJQC.formatJSON:
|
|
43116
|
+
entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, formatVaultNameId(result['displayName'], result['savedQueryId'])])
|
|
43117
|
+
if showDetails or FJQC.formatJSON:
|
|
43118
|
+
_showVaultQuery(resultNameId, result, cd, drive, FJQC)
|
|
43119
|
+
else:
|
|
43120
|
+
writeStdout(f'{result["savedQueryId"]}\n')
|
|
43090
43121
|
except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument, GAPI.alreadyExists) as e:
|
|
43091
43122
|
entityActionFailedWarning([Ent.VAULT_MATTER, resultNameId, Ent.VAULT_QUERY, body['displayName']], str(e))
|
|
43092
43123
|
|
|
@@ -43105,12 +43136,15 @@ def doCreateCopyVaultQuery(copyCmd):
|
|
|
43105
43136
|
# [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
|
43106
43137
|
# [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
|
43107
43138
|
# (covereddata calllogs|textmessages|voicemails)*
|
|
43108
|
-
# [
|
|
43139
|
+
# [<JSONData>]
|
|
43140
|
+
# [shownames]
|
|
43141
|
+
# [showdetails|returnidonly|formatjson]
|
|
43109
43142
|
def doCreateVaultQuery():
|
|
43110
43143
|
doCreateCopyVaultQuery(False)
|
|
43111
43144
|
|
|
43112
|
-
# gam copy vaultquery <MatterItem> <QueryItem> [targetmatter <MatterItem
|
|
43113
|
-
# [shownames]
|
|
43145
|
+
# gam copy vaultquery <MatterItem> <QueryItem> [targetmatter <MatterItem>] [name <String>]
|
|
43146
|
+
# [shownames]
|
|
43147
|
+
# [showdetails|returnidonly|formatjson]
|
|
43114
43148
|
def doCopyVaultQuery():
|
|
43115
43149
|
doCreateCopyVaultQuery(True)
|
|
43116
43150
|
|
|
@@ -43632,6 +43666,7 @@ PRINT_VAULT_COUNTS_TITLES = ['account', 'count', 'error']
|
|
|
43632
43666
|
# (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone|entireorg
|
|
43633
43667
|
# [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
|
43634
43668
|
# [excludedrafts <Boolean>]
|
|
43669
|
+
# [<JSONData>]
|
|
43635
43670
|
# [wait <Integer>]
|
|
43636
43671
|
# gam print vaultcounts [todrive <ToDriveAttributes>*]
|
|
43637
43672
|
# matter <MatterItem> operation <String> [wait <Integer>]
|
|
@@ -43686,7 +43721,7 @@ def doPrintVaultCounts():
|
|
|
43686
43721
|
doWait = True
|
|
43687
43722
|
response = operation.get('response', {})
|
|
43688
43723
|
query = operation['metadata']['query']
|
|
43689
|
-
search_method = query.get('
|
|
43724
|
+
search_method = query.get('method')
|
|
43690
43725
|
# ARGH count results don't include accounts with zero items.
|
|
43691
43726
|
# so we keep track of which accounts we searched and can report
|
|
43692
43727
|
# zero data for them.
|
gam/gamlib/glcfg.py
CHANGED
|
@@ -69,6 +69,8 @@ CACHE_DISCOVERY_ONLY = 'cache_discovery_only'
|
|
|
69
69
|
CHANNEL_CUSTOMER_ID = 'channel_customer_id'
|
|
70
70
|
# Character set of batch, csv, data files
|
|
71
71
|
CHARSET = 'charset'
|
|
72
|
+
# When retrieving lists of Chat items from API, how many should be retrieved in each chunk
|
|
73
|
+
CHAT_MAX_RESULTS = 'chat_max_results'
|
|
72
74
|
# When retrieving lists of Google Classroom items from API, how many should be retrieved in each chunk
|
|
73
75
|
CLASSROOM_MAX_RESULTS = 'classroom_max_results'
|
|
74
76
|
# Path to client_secrets.json
|
|
@@ -335,6 +337,7 @@ Defaults = {
|
|
|
335
337
|
CACHE_DISCOVERY_ONLY: TRUE,
|
|
336
338
|
CHARSET: DEFAULT_CHARSET,
|
|
337
339
|
CHANNEL_CUSTOMER_ID: '',
|
|
340
|
+
CHAT_MAX_RESULTS: '100',
|
|
338
341
|
CLASSROOM_MAX_RESULTS: '0',
|
|
339
342
|
CLIENT_SECRETS_JSON: FN_CLIENT_SECRETS_JSON,
|
|
340
343
|
CLOCK_SKEW_IN_SECONDS: '10',
|
|
@@ -502,6 +505,7 @@ VAR_INFO = {
|
|
|
502
505
|
CACHE_DISCOVERY_ONLY: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'allcache.txt', VAR_SFFT: (TRUE, FALSE)},
|
|
503
506
|
CHARSET: {VAR_TYPE: TYPE_STRING, VAR_ENVVAR: 'GAM_CHARSET', VAR_LIMITS: (1, None)},
|
|
504
507
|
CHANNEL_CUSTOMER_ID: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
|
|
508
|
+
CHAT_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)},
|
|
505
509
|
CLASSROOM_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (0, 1000)},
|
|
506
510
|
CLIENT_SECRETS_JSON: {VAR_TYPE: TYPE_FILE, VAR_ENVVAR: 'CLIENTSECRETS', VAR_ACCESS: os.R_OK},
|
|
507
511
|
CLOCK_SKEW_IN_SECONDS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (10, 3600)},
|
gam/gamlib/glentity.py
CHANGED
|
@@ -96,6 +96,7 @@ class GamEntity():
|
|
|
96
96
|
CHAT_MEMBER_USER = 'chmu'
|
|
97
97
|
CHAT_MESSAGE = 'chms'
|
|
98
98
|
CHAT_MESSAGE_ID = 'chmi'
|
|
99
|
+
CHAT_OWNER_USER = 'chou'
|
|
99
100
|
CHAT_SPACE = 'chsp'
|
|
100
101
|
CHAT_THREAD = 'chth'
|
|
101
102
|
CHILD_ORGANIZATIONAL_UNIT = 'corg'
|
|
@@ -462,6 +463,7 @@ class GamEntity():
|
|
|
462
463
|
CHAT_MEMBER: ['Chat Members', 'Chat Member'],
|
|
463
464
|
CHAT_MEMBER_GROUP: ['Chat Group Members', 'Chat Group Member'],
|
|
464
465
|
CHAT_MEMBER_USER: ['Chat User Members', 'Chat User Member'],
|
|
466
|
+
CHAT_OWNER_USER: ['Chat User Owners', 'Chat User Owner'],
|
|
465
467
|
CHAT_SPACE: ['Chat Spaces', 'Chat Space'],
|
|
466
468
|
CHAT_THREAD: ['Chat Threads', 'Chat Thread'],
|
|
467
469
|
CHILD_ORGANIZATIONAL_UNIT: ['Child Organizational Units', 'Child Organizational Unit'],
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
gam/__init__.py,sha256=
|
|
1
|
+
gam/__init__.py,sha256=B15MBh8MjHLx7wUI6Mu-cjocTqeiWBLc0Eszj9RcLKk,3618696
|
|
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
|
|
@@ -23,9 +23,9 @@ gam/atom/url.py,sha256=pxO1TlORxyKQTQ1bkBE1unFzjnv9c8LjJkm-UEORShY,4276
|
|
|
23
23
|
gam/gamlib/__init__.py,sha256=z5mF-y0j8pm-YNFBaiuxB4M_GAUPG-cXWwrhYwrVReM,679
|
|
24
24
|
gam/gamlib/glaction.py,sha256=1Il_HrChVnPkzZwiZs5au4mFQVtq4K1Z42uIuR6qdnI,9419
|
|
25
25
|
gam/gamlib/glapi.py,sha256=u97M7Y2BeP3tYEEGYEz-9kY4fdV0fYkeqC3YN-sRwNc,36028
|
|
26
|
-
gam/gamlib/glcfg.py,sha256=
|
|
26
|
+
gam/gamlib/glcfg.py,sha256=jX9IIrqSa8CPZ-UdnMDs2RuGo8vPh3jpgvRhI9VRbII,28325
|
|
27
27
|
gam/gamlib/glclargs.py,sha256=rGcAoRLaCv5L9cBxI56MrPXr0JcImO45bLQNaYahoUY,53251
|
|
28
|
-
gam/gamlib/glentity.py,sha256=
|
|
28
|
+
gam/gamlib/glentity.py,sha256=KWFomkoNE6lLE83zVqVIlJ2rkzfLkhEasW1M0TWGieA,35373
|
|
29
29
|
gam/gamlib/glgapi.py,sha256=pdBbwNtnCwFWxJGaP-_3hdTjSNoOCJF2yo76WdQOi1k,40426
|
|
30
30
|
gam/gamlib/glgdata.py,sha256=weRppttWm6uRyqtBoGPKoHiNZ2h28nhfUV4J_mbCszY,2707
|
|
31
31
|
gam/gamlib/glglobals.py,sha256=oJfaLUQj46XqwrOzRfWhGqO0f1P26xjJZefaILJUFGE,9695
|
|
@@ -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.
|
|
51
|
-
gam7-7.
|
|
52
|
-
gam7-7.
|
|
53
|
-
gam7-7.
|
|
54
|
-
gam7-7.
|
|
50
|
+
gam7-7.23.0.dist-info/METADATA,sha256=6bM_Q9wj9LkT4QtgN-MnPfL6gwaWjLf-c6qSDtSW5dM,3092
|
|
51
|
+
gam7-7.23.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
52
|
+
gam7-7.23.0.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
|
|
53
|
+
gam7-7.23.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
54
|
+
gam7-7.23.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|