gam7 7.27.2__py3-none-any.whl → 7.27.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 +122 -51
- gam/gamlib/glmsgs.py +3 -1
- {gam7-7.27.2.dist-info → gam7-7.27.4.dist-info}/METADATA +1 -1
- {gam7-7.27.2.dist-info → gam7-7.27.4.dist-info}/RECORD +7 -7
- {gam7-7.27.2.dist-info → gam7-7.27.4.dist-info}/WHEEL +0 -0
- {gam7-7.27.2.dist-info → gam7-7.27.4.dist-info}/entry_points.txt +0 -0
- {gam7-7.27.2.dist-info → gam7-7.27.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.27.
|
|
28
|
+
__version__ = '7.27.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
|
|
@@ -26776,14 +26776,14 @@ def getChatSpaceParameters(myarg, body, typeChoicesMap, updateMask):
|
|
|
26776
26776
|
|
|
26777
26777
|
CHAT_MEMBER_ROLE_MAP = {
|
|
26778
26778
|
'member': 'ROLE_MEMBER',
|
|
26779
|
-
'manager': '
|
|
26780
|
-
'owner': '
|
|
26779
|
+
'manager': 'ROLE_ASSISTANT_MANAGER',
|
|
26780
|
+
'owner': 'ROLE_MANAGER',
|
|
26781
26781
|
}
|
|
26782
26782
|
|
|
26783
26783
|
CHAT_ROLE_ENTITY_TYPE_MAP = {
|
|
26784
26784
|
'ROLE_MEMBER': Ent.CHAT_MEMBER_USER,
|
|
26785
|
-
'
|
|
26786
|
-
'
|
|
26785
|
+
'ROLE_ASSISTANT_MANAGER': Ent.CHAT_MANAGER_USER,
|
|
26786
|
+
'ROLE_MANAGER': Ent.CHAT_OWNER_USER,
|
|
26787
26787
|
}
|
|
26788
26788
|
|
|
26789
26789
|
CHAT_MEMBER_TYPE_MAP = {
|
|
@@ -26917,7 +26917,8 @@ CHAT_UPDATE_SPACE_TYPE_MAP = {
|
|
|
26917
26917
|
}
|
|
26918
26918
|
|
|
26919
26919
|
CHAT_SPACE_ROLE_PERMISSIONS_MAP = {
|
|
26920
|
-
'
|
|
26920
|
+
'owners': 'managersAllowed',
|
|
26921
|
+
'managers': 'assistantManagersAllowed',
|
|
26921
26922
|
'members': 'membersAllowed',
|
|
26922
26923
|
}
|
|
26923
26924
|
|
|
@@ -26937,13 +26938,13 @@ CHAT_UPDATE_SPACE_PERMISSIONS_MAP = {
|
|
|
26937
26938
|
# [type space]
|
|
26938
26939
|
# [description <String>] [guidelines|rules <String>]
|
|
26939
26940
|
# [history <Boolean>])
|
|
26940
|
-
# managemembersandgroups managers|members
|
|
26941
|
-
# modifyspacedetails managers|members
|
|
26942
|
-
# togglehistory managers|members
|
|
26943
|
-
# useatmentionall managers|members
|
|
26944
|
-
# manageapps managers|members
|
|
26945
|
-
# managewebhooks managers|members
|
|
26946
|
-
# replymessages managers|members
|
|
26941
|
+
# [managemembersandgroups owners|managers|members]
|
|
26942
|
+
# [modifyspacedetails owners|managers|members]
|
|
26943
|
+
# [togglehistory owners|managers|members]
|
|
26944
|
+
# [useatmentionall owners|managers|members]
|
|
26945
|
+
# [manageapps owners|managers|members]
|
|
26946
|
+
# [managewebhooks owners|managers|members]
|
|
26947
|
+
2# [replymessages owners|managers|members]
|
|
26947
26948
|
# [formatjson]
|
|
26948
26949
|
def updateChatSpace(users):
|
|
26949
26950
|
FJQC = FormatJSONQuoteChar()
|
|
@@ -26961,9 +26962,13 @@ def updateChatSpace(users):
|
|
|
26961
26962
|
body.setdefault('permissionSettings', {})
|
|
26962
26963
|
permissionSetting = CHAT_UPDATE_SPACE_PERMISSIONS_MAP[myarg]
|
|
26963
26964
|
role = getChoice(CHAT_SPACE_ROLE_PERMISSIONS_MAP, mapChoice=True)
|
|
26964
|
-
body['permissionSettings'][permissionSetting] = {
|
|
26965
|
+
body['permissionSettings'][permissionSetting] = {}
|
|
26966
|
+
body['permissionSettings'][permissionSetting][role] = True
|
|
26965
26967
|
if role == 'membersAllowed':
|
|
26966
|
-
body['permissionSettings'][permissionSetting]
|
|
26968
|
+
body['permissionSettings'][permissionSetting]['assistantManagersAllowed'] = True
|
|
26969
|
+
body['permissionSettings'][permissionSetting]['managersAllowed'] = True
|
|
26970
|
+
elif role == 'assistantManagersAllowed':
|
|
26971
|
+
body['permissionSettings'][permissionSetting]['managersAllowed'] = True
|
|
26967
26972
|
updateMask.add(f'permissionSettings.{permissionSetting}')
|
|
26968
26973
|
else:
|
|
26969
26974
|
FJQC.GetFormatJSON(myarg)
|
|
@@ -27337,12 +27342,12 @@ def getGroupMemberID(cd, group, groupList):
|
|
|
27337
27342
|
groupList.append(convertEmailAddressToUID(group, cd, emailType='group'))
|
|
27338
27343
|
|
|
27339
27344
|
# gam <UserTypeEntity> create chatmember <ChatSpace>
|
|
27340
|
-
# [type human|bot] [role member|manager]
|
|
27345
|
+
# [type human|bot] [role member|manager|owner]
|
|
27341
27346
|
# (user <UserItem>)* (members <UserTypeEntity>)*
|
|
27342
27347
|
# (group <GroupItem>)* (groups <GroupEntity>)*
|
|
27343
27348
|
# [formatjson|returnidonly]
|
|
27344
27349
|
# gam <UserItem> create chatmember asadmin <ChatSpace>
|
|
27345
|
-
# [type human|bot] [role member|manager]
|
|
27350
|
+
# [type human|bot] [role member|manager|owner]
|
|
27346
27351
|
# (user <UserItem>)* (members <UserTypeEntity>)*
|
|
27347
27352
|
# (group <GroupItem>)* (groups <GroupEntity>)*
|
|
27348
27353
|
# [formatjson|returnidonly]
|
|
@@ -27471,16 +27476,16 @@ def _deleteChatMembers(chat, kvList, jcount, memberNames, i, count, kwargsUAA):
|
|
|
27471
27476
|
# gam <UserItem> remove chatmember asadmin
|
|
27472
27477
|
# members <ChatMemberList>
|
|
27473
27478
|
# gam <UserTypeEntity> update chatmember <ChatSpace>
|
|
27474
|
-
# role member|manager
|
|
27479
|
+
# role member|manager|owner
|
|
27475
27480
|
# ((user <UserItem>)|(members <UserTypeEntity>))+
|
|
27476
27481
|
# gam <UserTypeEntity> modify chatmember
|
|
27477
|
-
# role member|manager
|
|
27482
|
+
# role member|manager|owner
|
|
27478
27483
|
# members <ChatMemberList>
|
|
27479
27484
|
# gam <UserItem> update chatmember asadmin<ChatSpace>
|
|
27480
|
-
# role member|manager
|
|
27485
|
+
# role member|manager|owner
|
|
27481
27486
|
# ((user <UserItem>)|(members <UserTypeEntity>))+
|
|
27482
27487
|
# gam <UserItem> modify chatmember asadmin
|
|
27483
|
-
# role member|manager
|
|
27488
|
+
# role member|manager|owner
|
|
27484
27489
|
# members <ChatMemberList>
|
|
27485
27490
|
def deleteUpdateChatMember(users):
|
|
27486
27491
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
@@ -27574,7 +27579,7 @@ def deleteUpdateChatMember(users):
|
|
|
27574
27579
|
CHAT_SYNC_PREVIEW_TITLES = ['space', 'member', 'role', 'action', 'message']
|
|
27575
27580
|
|
|
27576
27581
|
# gam <UserTypeEntity> sync chatmembers [asadmin] <ChatSpace>
|
|
27577
|
-
# [role member|manager] [type human|bot]
|
|
27582
|
+
# [role member|manager|owner] [type human|bot]
|
|
27578
27583
|
# [addonly|removeonly]
|
|
27579
27584
|
# [preview [actioncsv]]
|
|
27580
27585
|
# (users <UserTypeEntity>)* (groups <GroupEntity>)*
|
|
@@ -44231,6 +44236,28 @@ USER_JSON_SKIP_FIELDS = ['agreedToTerms', 'aliases', 'creationTime', 'customerId
|
|
|
44231
44236
|
|
|
44232
44237
|
ALLOW_EMPTY_CUSTOM_TYPE = 'allowEmptyCustomType'
|
|
44233
44238
|
|
|
44239
|
+
def getNotifyArguments(myarg, notify, userNotification):
|
|
44240
|
+
if myarg == 'notify':
|
|
44241
|
+
if userNotification:
|
|
44242
|
+
notify['recipients'].extend(getNormalizedEmailAddressEntity(shlexSplit=True, noLower=True))
|
|
44243
|
+
else: #delegateNotificatiomn
|
|
44244
|
+
notify['notify'] = getBoolean()
|
|
44245
|
+
elif myarg == 'subject':
|
|
44246
|
+
notify['subject'] = getString(Cmd.OB_STRING)
|
|
44247
|
+
elif myarg in SORF_MSG_FILE_ARGUMENTS:
|
|
44248
|
+
notify['message'], notify['charset'], notify['html'] = getStringOrFile(myarg)
|
|
44249
|
+
elif myarg == 'html':
|
|
44250
|
+
notify['html'] = getBoolean()
|
|
44251
|
+
elif myarg == 'from':
|
|
44252
|
+
notify['from'] = getString(Cmd.OB_EMAIL_ADDRESS)
|
|
44253
|
+
elif myarg == 'mailbox':
|
|
44254
|
+
notify['mailbox'] = getString(Cmd.OB_EMAIL_ADDRESS)
|
|
44255
|
+
elif myarg == 'replyto':
|
|
44256
|
+
notify['replyto'] = getString(Cmd.OB_EMAIL_ADDRESS)
|
|
44257
|
+
else:
|
|
44258
|
+
return False
|
|
44259
|
+
return True
|
|
44260
|
+
|
|
44234
44261
|
def getUserAttributes(cd, updateCmd, noUid=False):
|
|
44235
44262
|
def getKeywordAttribute(keywords, attrdict, **opts):
|
|
44236
44263
|
if Cmd.ArgumentsRemaining():
|
|
@@ -44346,22 +44373,10 @@ def getUserAttributes(cd, updateCmd, noUid=False):
|
|
|
44346
44373
|
resolveConflictAccount = True
|
|
44347
44374
|
while Cmd.ArgumentsRemaining():
|
|
44348
44375
|
myarg = getArgument()
|
|
44349
|
-
if myarg
|
|
44350
|
-
|
|
44376
|
+
if getNotifyArguments(myarg, notify, True):
|
|
44377
|
+
pass
|
|
44351
44378
|
elif myarg == 'notifyrecoveryemail':
|
|
44352
44379
|
parameters['notifyRecoveryEmail'] = True
|
|
44353
|
-
elif myarg == 'subject':
|
|
44354
|
-
notify['subject'] = getString(Cmd.OB_STRING)
|
|
44355
|
-
elif myarg in SORF_MSG_FILE_ARGUMENTS:
|
|
44356
|
-
notify['message'], notify['charset'], notify['html'] = getStringOrFile(myarg)
|
|
44357
|
-
elif myarg == 'html':
|
|
44358
|
-
notify['html'] = getBoolean()
|
|
44359
|
-
elif myarg == 'from':
|
|
44360
|
-
notify['from'] = getString(Cmd.OB_EMAIL_ADDRESS)
|
|
44361
|
-
elif myarg == 'replyto':
|
|
44362
|
-
notify['replyto'] = getString(Cmd.OB_EMAIL_ADDRESS)
|
|
44363
|
-
elif myarg == 'mailbox':
|
|
44364
|
-
notify['mailbox'] = getString(Cmd.OB_EMAIL_ADDRESS)
|
|
44365
44380
|
elif PwdOpts.ProcessArgument(myarg, notify, notFoundBody):
|
|
44366
44381
|
pass
|
|
44367
44382
|
elif _getTagReplacement(myarg, tagReplacements, True):
|
|
@@ -44767,12 +44782,12 @@ def createUserAddAliases(cd, user, aliasList, i, count):
|
|
|
44767
44782
|
# [license <SKUID> [product|productid <ProductID>]]
|
|
44768
44783
|
# [[notify <EmailAddressList>] [notifyrecoveryemail]
|
|
44769
44784
|
# [subject <String>]
|
|
44770
|
-
# [
|
|
44771
|
-
# [from <EmailAaddress>]
|
|
44785
|
+
# [from <EmailAaddress>] [mailbox <EmailAddress>]
|
|
44772
44786
|
# [replyto <EmailAaddress>]
|
|
44773
|
-
# [<
|
|
44774
|
-
#
|
|
44775
|
-
#
|
|
44787
|
+
# [notifypassword <String>]
|
|
44788
|
+
# [<NotifyMessageContent>] [html [<Boolean>]]
|
|
44789
|
+
# (replace <Tag> <UserReplacement>)*
|
|
44790
|
+
# (replaceregex <REMatchPattern> <RESubstitution> <Tag> <UserReplacement>)*]
|
|
44776
44791
|
# [logpassword <FileName>] [ignorenullpassword]
|
|
44777
44792
|
# [addnumericsuffixonduplicate <Number>]
|
|
44778
44793
|
def doCreateUser():
|
|
@@ -44871,12 +44886,12 @@ def verifyUserPrimaryEmail(cd, user, createIfNotFound, i, count):
|
|
|
44871
44886
|
# [alias|aliases <EmailAddressList>]
|
|
44872
44887
|
# [[notify <EmailAddressList>] [notifyrecoveryemail]
|
|
44873
44888
|
# [subject <String>]
|
|
44874
|
-
# [
|
|
44875
|
-
# [from <EmailAaddress>]
|
|
44889
|
+
# [from <EmailAaddress>] [mailbox <EmailAddress>]
|
|
44876
44890
|
# [replyto <EmailAaddress>]
|
|
44877
|
-
# [<NotifyMessageContent>
|
|
44891
|
+
# [<NotifyMessageContent> [html [<Boolean>]]
|
|
44878
44892
|
# (replace <Tag> <UserReplacement>)*
|
|
44879
44893
|
# (replaceregex <REMatchPattern> <RESubstitution> <Tag> <UserReplacement>)*]
|
|
44894
|
+
# [notifypassword <String>]]
|
|
44880
44895
|
# [notifyonupdate [<Boolean>]]
|
|
44881
44896
|
# [logpassword <FileName>] [ignorenullpassword]
|
|
44882
44897
|
def updateUsers(entityList):
|
|
@@ -73918,14 +73933,58 @@ def printShowMessages(users):
|
|
|
73918
73933
|
def printShowThreads(users):
|
|
73919
73934
|
printShowMessagesThreads(users, Ent.THREAD)
|
|
73920
73935
|
|
|
73936
|
+
def sendCreateDelegateNotification(user, delegate, basenotify, i=0, count=0, msgFrom=None):
|
|
73937
|
+
# Substitute for #user#, #delegate#
|
|
73938
|
+
def _substituteForPattern(field, pattern, value):
|
|
73939
|
+
if field.find('#') == -1:
|
|
73940
|
+
return field
|
|
73941
|
+
return field.replace(pattern, value)
|
|
73942
|
+
|
|
73943
|
+
def _makeSubstitutions(field):
|
|
73944
|
+
notify[field] = _substituteForPattern(notify[field], '#user#', user)
|
|
73945
|
+
notify[field] = _substituteForPattern(notify[field], '#delegate#', delegate)
|
|
73946
|
+
|
|
73947
|
+
notify = basenotify.copy()
|
|
73948
|
+
if not notify['subject']:
|
|
73949
|
+
notify['subject'] = Msg.CREATE_DELEGATE_NOTIFY_SUBJECT
|
|
73950
|
+
_makeSubstitutions('subject')
|
|
73951
|
+
if not notify['message']:
|
|
73952
|
+
notify['message'] = Msg.CREATE_DELEGATE_NOTIFY_MESSAGE
|
|
73953
|
+
elif notify['html']:
|
|
73954
|
+
notify['message'] = notify['message'].replace('\r', '').replace('\\n', '<br/>')
|
|
73955
|
+
else:
|
|
73956
|
+
notify['message'] = notify['message'].replace('\r', '').replace('\\n', '\n')
|
|
73957
|
+
_makeSubstitutions('message')
|
|
73958
|
+
if 'from' in notify:
|
|
73959
|
+
msgFrom = notify['from']
|
|
73960
|
+
msgReplyTo = notify.get('replyto', None)
|
|
73961
|
+
mailBox = notify.get('mailbox', None)
|
|
73962
|
+
send_email(notify['subject'], notify['message'], delegate, i, count,
|
|
73963
|
+
msgFrom=msgFrom, msgReplyTo=msgReplyTo, html=notify['html'], charset=notify['charset'], mailBox=mailBox)
|
|
73964
|
+
|
|
73921
73965
|
# gam <UserTypeEntity> create delegate|delegates [convertalias] <UserEntity>
|
|
73966
|
+
# [notify [<Boolean>]
|
|
73967
|
+
# [subject <String>]
|
|
73968
|
+
# [from <EmailAaddress>] [mailbox <EmailAddress>]
|
|
73969
|
+
# [replyto <EmailAaddress>]
|
|
73970
|
+
# [<NotifyMessageContent>] [html [<Boolean>]]
|
|
73971
|
+
# ]
|
|
73922
73972
|
# gam <UserTypeEntity> delete delegate|delegates [convertalias] <UserEntity>
|
|
73923
73973
|
def processDelegates(users):
|
|
73924
73974
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
73925
|
-
|
|
73975
|
+
createCmd = Act.Get() != Act.DELETE
|
|
73926
73976
|
aliasAllowed = not checkArgumentPresent(['convertalias'])
|
|
73927
73977
|
delegateEntity = getUserObjectEntity(Cmd.OB_USER_ENTITY, Ent.DELEGATE)
|
|
73928
|
-
|
|
73978
|
+
notify = {'notify': False, 'subject': '', 'message': '', 'html': False, 'charset': UTF8}
|
|
73979
|
+
if createCmd:
|
|
73980
|
+
while Cmd.ArgumentsRemaining():
|
|
73981
|
+
myarg = getArgument()
|
|
73982
|
+
if getNotifyArguments(myarg, notify, False):
|
|
73983
|
+
pass
|
|
73984
|
+
else:
|
|
73985
|
+
unknownArgumentExit()
|
|
73986
|
+
else:
|
|
73987
|
+
checkForExtraneousArguments()
|
|
73929
73988
|
i, count, users = getEntityArgument(users)
|
|
73930
73989
|
for user in users:
|
|
73931
73990
|
i += 1
|
|
@@ -73937,25 +73996,37 @@ def processDelegates(users):
|
|
|
73937
73996
|
for delegate in delegates:
|
|
73938
73997
|
j += 1
|
|
73939
73998
|
delegateEmail = convertUIDtoEmailAddress(delegate, cd=cd, emailTypes=['user', 'group'], aliasAllowed=aliasAllowed)
|
|
73999
|
+
kvList = [Ent.USER, user, Ent.DELEGATE, delegateEmail]
|
|
73940
74000
|
try:
|
|
73941
|
-
if
|
|
73942
|
-
callGAPI(gmail.users().settings().delegates(),
|
|
74001
|
+
if createCmd:
|
|
74002
|
+
callGAPI(gmail.users().settings().delegates(), 'create',
|
|
73943
74003
|
throwReasons=GAPI.GMAIL_THROW_REASONS+[GAPI.ALREADY_EXISTS, GAPI.FAILED_PRECONDITION, GAPI.INVALID,
|
|
73944
74004
|
GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
|
|
73945
74005
|
userId='me', body={'delegateEmail': delegateEmail})
|
|
74006
|
+
entityActionPerformed(kvList, j, jcount)
|
|
74007
|
+
if notify['notify']:
|
|
74008
|
+
Ind.Increment()
|
|
74009
|
+
sendCreateDelegateNotification(user, delegateEmail, notify, j, jcount)
|
|
74010
|
+
Ind.Decrement()
|
|
73946
74011
|
else:
|
|
73947
|
-
callGAPI(gmail.users().settings().delegates(),
|
|
74012
|
+
callGAPI(gmail.users().settings().delegates(), 'delete',
|
|
73948
74013
|
throwReasons=GAPI.GMAIL_THROW_REASONS+[GAPI.NOT_FOUND, GAPI.INVALID_INPUT, GAPI.PERMISSION_DENIED],
|
|
73949
74014
|
userId='me', delegateEmail=delegateEmail)
|
|
73950
|
-
|
|
74015
|
+
entityActionPerformed(kvList, j, jcount)
|
|
73951
74016
|
except (GAPI.alreadyExists, GAPI.failedPrecondition, GAPI.invalid,
|
|
73952
74017
|
GAPI.notFound, GAPI.invalidArgument, GAPI.permissionDenied) as e:
|
|
73953
|
-
entityActionFailedWarning(
|
|
74018
|
+
entityActionFailedWarning(kvList, str(e), j, jcount)
|
|
73954
74019
|
except GAPI.serviceNotAvailable:
|
|
73955
74020
|
userGmailServiceNotEnabledWarning(user, i, count)
|
|
73956
74021
|
Ind.Decrement()
|
|
73957
74022
|
|
|
73958
74023
|
# gam <UserTypeEntity> delegate to [convertalias] <UserEntity>
|
|
74024
|
+
# [notify [<Boolean>]
|
|
74025
|
+
# [subject <String>]
|
|
74026
|
+
# [from <EmailAaddress>] [mailbox <EmailAddress>]
|
|
74027
|
+
# [replyto <EmailAaddress>]
|
|
74028
|
+
# [<NotifyMessageContent>] [html [<Boolean>]]
|
|
74029
|
+
# ]
|
|
73959
74030
|
def delegateTo(users):
|
|
73960
74031
|
checkArgumentPresent('to', required=True)
|
|
73961
74032
|
processDelegates(users)
|
gam/gamlib/glmsgs.py
CHANGED
|
@@ -224,6 +224,8 @@ COUNT_N_EXCEEDS_MAX_TO_PROCESS_M = 'Count {0} exceeds maximum to {1} {2}'
|
|
|
224
224
|
CORRUPT_FILE = 'Corrupt file'
|
|
225
225
|
COULD_NOT_FIND_ANY_YUBIKEY = 'Could not find any YubiKey\n'
|
|
226
226
|
COULD_NOT_FIND_YUBIKEY_WITH_SERIAL = 'Could not find YubiKey with serial number {0}\n'
|
|
227
|
+
CREATE_DELEGATE_NOTIFY_MESSAGE = '#user# has granted you #delegate# access to read, delete and send mail on their behalf.'
|
|
228
|
+
CREATE_DELEGATE_NOTIFY_SUBJECT = '#user# mail delegation to #delegate#'
|
|
227
229
|
CREATE_USER_NOTIFY_MESSAGE = 'Hello #givenname# #familyname#,\n\nYou have a new account at #domain#\nAccount details:\nUsername: #user#\nPassword: #password#\nStart using your new account by signing in at\nhttps://www.google.com/accounts/AccountChooser?Email=#user#&continue=https://workspace.google.com/dashboard\n'
|
|
228
230
|
CREATE_USER_NOTIFY_SUBJECT = 'Welcome to #domain#'
|
|
229
231
|
CSV_DATA_ALREADY_SAVED = 'CSV data already saved'
|
|
@@ -516,7 +518,7 @@ To set up Google Chat for your current project, please go to:
|
|
|
516
518
|
|
|
517
519
|
and follow the instructions at:
|
|
518
520
|
|
|
519
|
-
https://github.com/GAM-team/GAM/wiki/Chat-Bot#set-up-a-chat-bot
|
|
521
|
+
https://github.com/GAM-team/GAM/wiki/Chat-Bot-Setup-Use#set-up-a-chat-bot
|
|
520
522
|
|
|
521
523
|
You'll use projects/{1}/topics/no-topic in Connection settings Cloud Pub/Sub Topic Name
|
|
522
524
|
"""
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
gam/__init__.py,sha256=
|
|
1
|
+
gam/__init__.py,sha256=ezWRtUli0pIMM9dMgTN_FzHCzS5NalnUjOQRio_zJmo,3629588
|
|
2
2
|
gam/__main__.py,sha256=VwEYS7a9vYQPbT6iLduMOoVUJ6p4R-HZgerZQmM1NpE,1307
|
|
3
3
|
gam/cacerts.pem,sha256=DUsVo2XlFYwfkhe3gnxa-Km4Z4noz74hSApXwTT-nQE,44344
|
|
4
4
|
gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
|
|
@@ -30,7 +30,7 @@ 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=U1eCXHOkWAtwVXG8-0HL4ZzQP0YcbeFlhJxbOa_x1QI,9804
|
|
32
32
|
gam/gamlib/glindent.py,sha256=RfBa2LDfLIqPLL5vMfC689TCVmqn8xf-qulSzkiatrc,1228
|
|
33
|
-
gam/gamlib/glmsgs.py,sha256=
|
|
33
|
+
gam/gamlib/glmsgs.py,sha256=TkLg6p8o9elVIbe_4Kq0hac6qSM-qoIMuQvXoEn4Q_c,34254
|
|
34
34
|
gam/gamlib/glskus.py,sha256=29vlBLBJCL4u9GawCt3eNeZq9HQG3hGFZk9-EainNng,15384
|
|
35
35
|
gam/gamlib/gluprop.py,sha256=IyPLCyvn7-NHTUenM71YPQPXRZXx6CB5q-GtJ-FYd1c,11461
|
|
36
36
|
gam/gamlib/glverlibs.py,sha256=mDphdXVN_dJlGUVGuLqOEA3yHBNBeqRV4DRoTX7Wl7A,982
|
|
@@ -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.27.
|
|
51
|
-
gam7-7.27.
|
|
52
|
-
gam7-7.27.
|
|
53
|
-
gam7-7.27.
|
|
54
|
-
gam7-7.27.
|
|
50
|
+
gam7-7.27.4.dist-info/METADATA,sha256=xxXl0dxVoU3Qr_D_k38_AeeyLfP0smoiVPSFbIcSpzs,3093
|
|
51
|
+
gam7-7.27.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
52
|
+
gam7-7.27.4.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
|
|
53
|
+
gam7-7.27.4.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
54
|
+
gam7-7.27.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|