gam7 7.5.17__py3-none-any.whl → 7.5.19__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 +86 -40
- gam/gamlib/glmsgs.py +1 -0
- {gam7-7.5.17.dist-info → gam7-7.5.19.dist-info}/METADATA +1 -1
- {gam7-7.5.17.dist-info → gam7-7.5.19.dist-info}/RECORD +7 -7
- {gam7-7.5.17.dist-info → gam7-7.5.19.dist-info}/WHEEL +0 -0
- {gam7-7.5.17.dist-info → gam7-7.5.19.dist-info}/entry_points.txt +0 -0
- {gam7-7.5.17.dist-info → gam7-7.5.19.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.19'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -4088,13 +4088,8 @@ def SetGlobalVariables():
|
|
|
4088
4088
|
GC.Values[GC.OUTPUT_DATEFORMAT] = GM.Globals[GM.OUTPUT_DATEFORMAT]
|
|
4089
4089
|
if not GC.Values[GC.OUTPUT_TIMEFORMAT]:
|
|
4090
4090
|
GC.Values[GC.OUTPUT_TIMEFORMAT] = GM.Globals[GM.OUTPUT_TIMEFORMAT]
|
|
4091
|
-
#
|
|
4092
|
-
|
|
4093
|
-
fileName = f'{GC.Values[GC.OAUTH2_TXT]}.lock'
|
|
4094
|
-
if not os.path.isfile(fileName):
|
|
4095
|
-
closeFile(openFile(fileName, mode=DEFAULT_FILE_APPEND_MODE))
|
|
4096
|
-
os.chmod(fileName, 0o666)
|
|
4097
|
-
GM.Globals[GM.OAUTH2_TXT_LOCK] = fileName
|
|
4091
|
+
# Define lockfile: oauth2.txt.lock
|
|
4092
|
+
GM.Globals[GM.OAUTH2_TXT_LOCK] = f'{GC.Values[GC.OAUTH2_TXT]}.lock'
|
|
4098
4093
|
# Override httplib2 settings
|
|
4099
4094
|
httplib2.debuglevel = GC.Values[GC.DEBUG_LEVEL]
|
|
4100
4095
|
# Reset global variables if required
|
|
@@ -4113,7 +4108,7 @@ def SetGlobalVariables():
|
|
|
4113
4108
|
if checkArgumentPresent(Cmd.MULTIPROCESSEXIT_CMD):
|
|
4114
4109
|
_setMultiprocessExit()
|
|
4115
4110
|
# redirect csv <FileName> [multiprocess] [append] [noheader] [charset <CharSet>]
|
|
4116
|
-
# [columndelimiter <Character>] [
|
|
4111
|
+
# [columndelimiter <Character>] [quotechar <Character>]] [noescapechar [<Boolean>]]
|
|
4117
4112
|
# [sortheaders <StringList>] [timestampcolumn <String>] [transpose [<Boolean>]]
|
|
4118
4113
|
# [todrive <ToDriveAttribute>*]
|
|
4119
4114
|
# redirect stdout <FileName> [multiprocess] [append]
|
|
@@ -14522,7 +14517,13 @@ def _initTagReplacements():
|
|
|
14522
14517
|
'fieldsSet': set(), 'fields': '',
|
|
14523
14518
|
'schemasSet': set(), 'customFieldMask': None}
|
|
14524
14519
|
|
|
14525
|
-
def _getTagReplacement(tagReplacements, allowSubs):
|
|
14520
|
+
def _getTagReplacement(myarg, tagReplacements, allowSubs):
|
|
14521
|
+
if myarg == 'replace':
|
|
14522
|
+
trregex = None
|
|
14523
|
+
elif myarg == 'replaceregex':
|
|
14524
|
+
trregex = (getREPattern(re.IGNORECASE), getString(Cmd.OB_STRING, minLen=0))
|
|
14525
|
+
else:
|
|
14526
|
+
return False
|
|
14526
14527
|
matchTag = getString(Cmd.OB_TAG)
|
|
14527
14528
|
matchReplacement = getString(Cmd.OB_STRING, minLen=0)
|
|
14528
14529
|
if matchReplacement.startswith('field:'):
|
|
@@ -14567,7 +14568,8 @@ def _getTagReplacement(tagReplacements, allowSubs):
|
|
|
14567
14568
|
tagReplacements['fieldsSet'].add(field)
|
|
14568
14569
|
tagReplacements['fields'] = ','.join(tagReplacements['fieldsSet'])
|
|
14569
14570
|
tagReplacements['tags'][matchTag] = {'field': field, 'subfield': subfield,
|
|
14570
|
-
'matchfield': matchfield, 'matchvalue': matchvalue, 'value': ''
|
|
14571
|
+
'matchfield': matchfield, 'matchvalue': matchvalue, 'value': '',
|
|
14572
|
+
'trregex': trregex}
|
|
14571
14573
|
if field == 'locations' and subfield == 'buildingName':
|
|
14572
14574
|
_makeBuildingIdNameMap()
|
|
14573
14575
|
elif matchReplacement.startswith('schema:'):
|
|
@@ -14585,15 +14587,24 @@ def _getTagReplacement(tagReplacements, allowSubs):
|
|
|
14585
14587
|
tagReplacements['fields'] = ','.join(tagReplacements['fieldsSet'])
|
|
14586
14588
|
tagReplacements['schemasSet'].add(schemaName)
|
|
14587
14589
|
tagReplacements['customFieldMask'] = ','.join(tagReplacements['schemasSet'])
|
|
14588
|
-
tagReplacements['tags'][matchTag] = {'schema': schemaName, 'schemafield': schemaField, 'value': ''
|
|
14590
|
+
tagReplacements['tags'][matchTag] = {'schema': schemaName, 'schemafield': schemaField, 'value': '',
|
|
14591
|
+
'trregex': trregex}
|
|
14589
14592
|
elif ((matchReplacement.find('#') >= 0) and
|
|
14590
14593
|
(matchReplacement.find('#user#') >= 0) or (matchReplacement.find('#email#') >= 0) or (matchReplacement.find('#username#') >= 0)):
|
|
14591
14594
|
if not allowSubs:
|
|
14592
14595
|
usageErrorExit(Msg.USER_SUBS_NOT_ALLOWED_TAG_REPLACEMENT)
|
|
14593
14596
|
tagReplacements['subs'] = True
|
|
14594
|
-
tagReplacements['tags'][matchTag] = {'template': matchReplacement, 'value': ''
|
|
14597
|
+
tagReplacements['tags'][matchTag] = {'template': matchReplacement, 'value': '',
|
|
14598
|
+
'trregex': trregex}
|
|
14595
14599
|
else:
|
|
14596
|
-
|
|
14600
|
+
if trregex is None:
|
|
14601
|
+
tagReplacements['tags'][matchTag] = {'value': matchReplacement}
|
|
14602
|
+
else:
|
|
14603
|
+
try:
|
|
14604
|
+
tagReplacements['tags'][matchTag] = {'value': re.sub(trregex[0], trregex[1], matchReplacement)}
|
|
14605
|
+
except re.error as e:
|
|
14606
|
+
systemErrorExit(ACTION_FAILED_RC, Msg.REGEX_REPLACEMENT_ERROR.format(trregex[1], str(e)))
|
|
14607
|
+
return True
|
|
14597
14608
|
|
|
14598
14609
|
def _getTagReplacementFieldValues(user, i, count, tagReplacements, results=None):
|
|
14599
14610
|
if results is None:
|
|
@@ -14675,6 +14686,12 @@ def _getTagReplacementFieldValues(user, i, count, tagReplacements, results=None)
|
|
|
14675
14686
|
tag['value'] = str(results.get('customSchemas', {}).get(tag['schema'], {}).get(tag['schemafield'], ''))
|
|
14676
14687
|
elif tag.get('template'):
|
|
14677
14688
|
tag['value'] = _substituteForUser(tag['template'], user, userName)
|
|
14689
|
+
trregex = tag.get('trregex', None)
|
|
14690
|
+
if trregex is not None:
|
|
14691
|
+
try:
|
|
14692
|
+
tag['value'] = re.sub(trregex[0], trregex[1], tag['value'])
|
|
14693
|
+
except re.error as e:
|
|
14694
|
+
systemErrorExit(ACTION_FAILED_RC, Msg.REGEX_REPLACEMENT_ERROR.format(trregex[1], str(e)))
|
|
14678
14695
|
|
|
14679
14696
|
RTL_PATTERN = re.compile(r'(?s){RTL}.*?{/RTL}')
|
|
14680
14697
|
RT_PATTERN = re.compile(r'(?s){RT}.*?{/RT}')
|
|
@@ -14927,7 +14944,9 @@ def getRecipients():
|
|
|
14927
14944
|
# gam sendemail [recipient|to] <RecipientEntity> [from <EmailAddress>] [mailbox <EmailAddress>] [replyto <EmailAddress>]
|
|
14928
14945
|
# [cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
|
14929
14946
|
# [subject <String>]
|
|
14930
|
-
# [<MessageContent>]
|
|
14947
|
+
# [<MessageContent>]
|
|
14948
|
+
# (replace <Tag> <String>)*
|
|
14949
|
+
# (replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
14931
14950
|
# [html [<Boolean>]] (attach <FileName> [charset <CharSet>])*
|
|
14932
14951
|
# (embedimage <FileName> <String>)*
|
|
14933
14952
|
# [newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
|
@@ -14935,7 +14954,9 @@ def getRecipients():
|
|
|
14935
14954
|
# gam <UserTypeEntity> sendemail recipient <RecipientEntity> [replyto <EmailAddress>]
|
|
14936
14955
|
# [cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
|
14937
14956
|
# [subject <String>]
|
|
14938
|
-
# [<MessageContent>]
|
|
14957
|
+
# [<MessageContent>]
|
|
14958
|
+
# (replace <Tag> <String>)*
|
|
14959
|
+
# (replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
14939
14960
|
# [html [<Boolean>]] (attach <FileName> [charset <CharSet>])*
|
|
14940
14961
|
# (embedimage <FileName> <String>)*
|
|
14941
14962
|
# [newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
|
@@ -14943,7 +14964,9 @@ def getRecipients():
|
|
|
14943
14964
|
# gam <UserTypeEntity> sendemail from <EmailAddress> [replyto <EmailAddress>]
|
|
14944
14965
|
# [cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
|
14945
14966
|
# [subject <String>]
|
|
14946
|
-
# [<MessageContent>]
|
|
14967
|
+
# [<MessageContent>]
|
|
14968
|
+
# (replace <Tag> <String>)*
|
|
14969
|
+
# (replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
14947
14970
|
# [html [<Boolean>]] (attach <FileName> [charset <CharSet>])*
|
|
14948
14971
|
# (embedimage <FileName> <String>)*
|
|
14949
14972
|
# [newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
|
@@ -15006,8 +15029,8 @@ def doSendEmail(users=None):
|
|
|
15006
15029
|
body['name']['familyName'] = getString(Cmd.OB_STRING, minLen=0, maxLen=60)
|
|
15007
15030
|
elif myarg in {'password', 'notifypassword'}:
|
|
15008
15031
|
body['password'] = notify['password'] = getString(Cmd.OB_PASSWORD, maxLen=100)
|
|
15009
|
-
elif myarg
|
|
15010
|
-
|
|
15032
|
+
elif _getTagReplacement(myarg, tagReplacements, False):
|
|
15033
|
+
pass
|
|
15011
15034
|
elif myarg == 'attach':
|
|
15012
15035
|
attachments.append((getFilename(), getCharSet()))
|
|
15013
15036
|
elif myarg == 'embedimage':
|
|
@@ -39086,7 +39109,10 @@ def _updateCalendarEvents(origUser, user, origCal, calIds, count, calendarEventE
|
|
|
39086
39109
|
if 'description' in updateFieldList and 'description' in event:
|
|
39087
39110
|
body['description'] = event['description']
|
|
39088
39111
|
for replacement in parameters['replaceDescription']:
|
|
39089
|
-
|
|
39112
|
+
try:
|
|
39113
|
+
body['description'] = re.sub(replacement[0], replacement[1], body['description'])
|
|
39114
|
+
except re.error as e:
|
|
39115
|
+
systemErrorExit(ACTION_FAILED_RC, Msg.REGEX_REPLACEMENT_ERROR.format(replacement[1], str(e)))
|
|
39090
39116
|
if 'attendees' in updateFieldList:
|
|
39091
39117
|
if not parameters['clearAttendees']:
|
|
39092
39118
|
if 'attendees' in event:
|
|
@@ -39410,7 +39436,10 @@ def _showCalendarEvent(primaryEmail, calId, eventEntityType, event, k, kcount, F
|
|
|
39410
39436
|
Ind.Increment()
|
|
39411
39437
|
for field in EVENT_SHOW_ORDER:
|
|
39412
39438
|
if field in event:
|
|
39413
|
-
|
|
39439
|
+
if field != 'description':
|
|
39440
|
+
showJSON(field, event[field], skipObjects, EVENT_TIME_OBJECTS)
|
|
39441
|
+
else:
|
|
39442
|
+
printKeyValueWithCRsNLs(field, event[field])
|
|
39414
39443
|
skipObjects.add(field)
|
|
39415
39444
|
showJSON(None, event, skipObjects)
|
|
39416
39445
|
Ind.Decrement()
|
|
@@ -42837,8 +42866,8 @@ def getUserAttributes(cd, updateCmd, noUid=False):
|
|
|
42837
42866
|
notify['mailbox'] = getString(Cmd.OB_EMAIL_ADDRESS)
|
|
42838
42867
|
elif PwdOpts.ProcessArgument(myarg, notify, notFoundBody):
|
|
42839
42868
|
pass
|
|
42840
|
-
elif myarg
|
|
42841
|
-
|
|
42869
|
+
elif _getTagReplacement(myarg, tagReplacements, True):
|
|
42870
|
+
pass
|
|
42842
42871
|
elif myarg == 'admin':
|
|
42843
42872
|
value = getBoolean()
|
|
42844
42873
|
if updateCmd or value:
|
|
@@ -43255,9 +43284,9 @@ def createUserAddAliases(cd, user, aliasList, i, count):
|
|
|
43255
43284
|
# [from <EmailAaddress>]
|
|
43256
43285
|
# [replyto <EmailAaddress>]
|
|
43257
43286
|
# [<NotifyMessageContent>]
|
|
43258
|
-
# (replace <Tag> <UserReplacement>)*
|
|
43287
|
+
# (replace <Tag> <UserReplacement>)*
|
|
43288
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
43259
43289
|
# [logpassword <FileName>] [ignorenullpassword]
|
|
43260
|
-
# [verifynotinvitable]
|
|
43261
43290
|
# [addnumericsuffixonduplicate <Number>]
|
|
43262
43291
|
def doCreateUser():
|
|
43263
43292
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
@@ -43356,8 +43385,9 @@ def verifyUserPrimaryEmail(cd, user, createIfNotFound, i, count):
|
|
|
43356
43385
|
# [notifypassword <String>]
|
|
43357
43386
|
# [from <EmailAaddress>]
|
|
43358
43387
|
# [replyto <EmailAaddress>]
|
|
43359
|
-
# [<NotifyMessageContent>
|
|
43360
|
-
#
|
|
43388
|
+
# [<NotifyMessageContent>
|
|
43389
|
+
# (replace <Tag> <UserReplacement>)*
|
|
43390
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
43361
43391
|
# [notifyonupdate [<Boolean>]]
|
|
43362
43392
|
# [logpassword <FileName>] [ignorenullpassword]
|
|
43363
43393
|
def updateUsers(entityList):
|
|
@@ -57350,7 +57380,10 @@ def writeReturnIdLink(returnIdLink, mimeType, result):
|
|
|
57350
57380
|
|
|
57351
57381
|
def processFilenameReplacements(name, replacements):
|
|
57352
57382
|
for replacement in replacements:
|
|
57353
|
-
|
|
57383
|
+
try:
|
|
57384
|
+
name = re.sub(replacement[0], replacement[1], name)
|
|
57385
|
+
except re.error as e:
|
|
57386
|
+
systemErrorExit(ACTION_FAILED_RC, Msg.REGEX_REPLACEMENT_ERROR.format(replacement[1], str(e)))
|
|
57354
57387
|
return name
|
|
57355
57388
|
|
|
57356
57389
|
def addTimestampToFilename(parameters, body):
|
|
@@ -69993,8 +70026,8 @@ def _draftImportInsertMessage(users, operation):
|
|
|
69993
70026
|
internalDateSource = 'dateHeader'
|
|
69994
70027
|
if checkArgumentPresent('emlutf8'):
|
|
69995
70028
|
emlEncoding = UTF8
|
|
69996
|
-
elif myarg
|
|
69997
|
-
|
|
70029
|
+
elif _getTagReplacement(myarg, tagReplacements, True):
|
|
70030
|
+
pass
|
|
69998
70031
|
elif operation in IMPORT_INSERT and myarg == 'addlabel':
|
|
69999
70032
|
addLabelNames.append(getString(Cmd.OB_LABEL_NAME, minLen=1))
|
|
70000
70033
|
elif operation in IMPORT_INSERT and myarg == 'labels':
|
|
@@ -70129,7 +70162,9 @@ def _draftImportInsertMessage(users, operation):
|
|
|
70129
70162
|
userGmailServiceNotEnabledWarning(user, i, count)
|
|
70130
70163
|
|
|
70131
70164
|
# gam <UserTypeEntity> draft message
|
|
70132
|
-
# <MessageContent>
|
|
70165
|
+
# <MessageContent>
|
|
70166
|
+
# (replace <Tag> <UserReplacement>)*
|
|
70167
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
70133
70168
|
# (<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
70134
70169
|
# (attach <FileName> [charset <CharSet>])*
|
|
70135
70170
|
# (embedimage <FileName> <String>)*
|
|
@@ -70137,7 +70172,9 @@ def draftMessage(users):
|
|
|
70137
70172
|
_draftImportInsertMessage(users, 'draft')
|
|
70138
70173
|
|
|
70139
70174
|
# gam <UserTypeEntity> import message
|
|
70140
|
-
# <MessageContent>
|
|
70175
|
+
# <MessageContent>
|
|
70176
|
+
# (replace <Tag> <UserReplacement>)*
|
|
70177
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
70141
70178
|
# (<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
70142
70179
|
# (addlabel <LabelName>)* [labels <LabelNameList>]
|
|
70143
70180
|
# (attach <FileName> [charset <CharSet>])*
|
|
@@ -70147,7 +70184,9 @@ def importMessage(users):
|
|
|
70147
70184
|
_draftImportInsertMessage(users, 'import')
|
|
70148
70185
|
|
|
70149
70186
|
# gam <UserTypeEntity> insert message
|
|
70150
|
-
# <MessageContent>
|
|
70187
|
+
# <MessageContent>
|
|
70188
|
+
# (replace <Tag> <UserReplacement>)*
|
|
70189
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
70151
70190
|
# (<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
70152
70191
|
# (addlabel <LabelName>)* [labels <LabelNameList>]
|
|
70153
70192
|
# (attach <FileName> [charset <CharSet>])*
|
|
@@ -72434,8 +72473,8 @@ def _processSendAs(user, i, count, entityType, emailAddress, j, jcount, gmail, f
|
|
|
72434
72473
|
return userDefined
|
|
72435
72474
|
|
|
72436
72475
|
def getSendAsAttributes(myarg, body, tagReplacements):
|
|
72437
|
-
if myarg
|
|
72438
|
-
|
|
72476
|
+
if _getTagReplacement(myarg, tagReplacements, True):
|
|
72477
|
+
pass
|
|
72439
72478
|
elif myarg == 'name':
|
|
72440
72479
|
body['displayName'] = getString(Cmd.OB_NAME, minLen=0)
|
|
72441
72480
|
elif myarg == 'replyto':
|
|
@@ -72454,13 +72493,17 @@ SMTPMSA_SECURITY_MODES = ['none', 'ssl', 'starttls']
|
|
|
72454
72493
|
SMTPMSA_REQUIRED_FIELDS = ['host', 'port', 'username', 'password']
|
|
72455
72494
|
|
|
72456
72495
|
# gam <UserTypeEntity> [create] sendas <EmailAddress> [name] <String>
|
|
72457
|
-
# [<SendAsContent>
|
|
72496
|
+
# [<SendAsContent>
|
|
72497
|
+
# (replace <Tag> <UserReplacement>)*
|
|
72498
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
72458
72499
|
# [html [<Boolean>]] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
|
72459
72500
|
# [smtpmsa.host <SMTPHostName> smtpmsa.port 25|465|587
|
|
72460
72501
|
# smtpmsa.username <UserName> smtpmsa.password <Password>
|
|
72461
72502
|
# [smtpmsa.securitymode none|ssl|starttls]]
|
|
72462
72503
|
# gam <UserTypeEntity> update sendas <EmailAddress> [name <String>]
|
|
72463
|
-
# [<SendAsContent>
|
|
72504
|
+
# [<SendAsContent>
|
|
72505
|
+
# (replace <Tag> <UserReplacement>)*
|
|
72506
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
72464
72507
|
# [html [<Boolean>]] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
|
72465
72508
|
def createUpdateSendAs(users):
|
|
72466
72509
|
updateCmd = Act.Get() == Act.UPDATE
|
|
@@ -73297,6 +73340,7 @@ def printShowCSEKeyPairs(users):
|
|
|
73297
73340
|
# gam <UserTypeEntity> signature|sig
|
|
73298
73341
|
# <SignatureContent>
|
|
73299
73342
|
# (replace <Tag> <String>)*
|
|
73343
|
+
# (replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
73300
73344
|
# [html [<Boolean>]] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
|
73301
73345
|
# [name <String>]
|
|
73302
73346
|
# [primary]
|
|
@@ -73390,7 +73434,9 @@ def _showVacation(user, i, count, result, showDisabled, sigReplyFormat):
|
|
|
73390
73434
|
Ind.Decrement()
|
|
73391
73435
|
|
|
73392
73436
|
# gam <UserTypeEntity> vacation [<Boolean>] [subject <String>]
|
|
73393
|
-
# [<VacationMessageContent>
|
|
73437
|
+
# [<VacationMessageContent>
|
|
73438
|
+
# (replace <Tag> <UserReplacement>)*
|
|
73439
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
73394
73440
|
# [html [<Boolean>]] [contactsonly [<Boolean>]] [domainonly [<Boolean>]]
|
|
73395
73441
|
# [start|startdate <Date>|Started] [end|enddate <Date>|NotSpecified]
|
|
73396
73442
|
def setVacation(users):
|
|
@@ -73408,8 +73454,8 @@ def setVacation(users):
|
|
|
73408
73454
|
message, _, html = getStringOrFile(myarg)
|
|
73409
73455
|
if html:
|
|
73410
73456
|
responseBodyType = 'responseBodyHtml'
|
|
73411
|
-
elif myarg
|
|
73412
|
-
|
|
73457
|
+
elif _getTagReplacement(myarg, tagReplacements, True):
|
|
73458
|
+
pass
|
|
73413
73459
|
elif myarg == 'html':
|
|
73414
73460
|
if getBoolean():
|
|
73415
73461
|
responseBodyType = 'responseBodyHtml'
|
gam/gamlib/glmsgs.py
CHANGED
|
@@ -465,6 +465,7 @@ REASON_ONLY_VALID_WITH_CONTENTRESTRICTIONS_READONLY_TRUE = 'reason only valid wi
|
|
|
465
465
|
REAUTHENTICATION_IS_NEEDED = 'Reauthentication is needed, please run\n\ngam oauth create'
|
|
466
466
|
RECOMMEND_RUNNING_GAM_ROTATE_SAKEY = 'Recommend running "gam rotate sakey" to get a new key\n'
|
|
467
467
|
REFUSING_TO_DEPROVISION_DEVICES = 'Refusing to deprovision {0} devices because acknowledge_device_touch_requirement not specified.\nDeprovisioning a device means the device will have to be physically wiped and re-enrolled to be managed by your domain again.\nThis requires physical access to the device and is very time consuming to perform for each device.\nPlease add "acknowledge_device_touch_requirement" to the GAM command if you understand this and wish to proceed with the deprovision.\nPlease also be aware that deprovisioning can have an effect on your device license count.\nSee https://support.google.com/chrome/a/answer/3523633 for full details.'
|
|
468
|
+
REGEX_REPLACEMENT_ERROR = 'Regular expression replacement string "{0}" error: {1}'
|
|
468
469
|
REPLY_TO_CUSTOM_REQUIRES_EMAIL_ADDRESS = 'replyto REPLY_TO_CUSTOM requires customReplyTo <EmailAddress>'
|
|
469
470
|
REQUEST_COMPLETED_NO_FILES = 'Request completed but no results/files were returned, try requesting again'
|
|
470
471
|
REQUEST_NOT_COMPLETE = 'Request needs to be completed before downloading, current status is: {0}'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
gam/__init__.py,sha256=
|
|
1
|
+
gam/__init__.py,sha256=XuZ_5ceIxgqn-VYNSrK4KU2p5hIo4P7Mog_krW4HT2k,3485098
|
|
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
|
|
@@ -31,7 +31,7 @@ gam/gamlib/glgapi.py,sha256=49PPbxiW6EpPE4E8fAlLMx1mSMcQra1zwi-CSXPa7rk,38473
|
|
|
31
31
|
gam/gamlib/glgdata.py,sha256=weRppttWm6uRyqtBoGPKoHiNZ2h28nhfUV4J_mbCszY,2707
|
|
32
32
|
gam/gamlib/glglobals.py,sha256=Y73xM1RNhIbtcqnMv1gcZF3wDWOeLWW-7SvoQyWw6tA,9659
|
|
33
33
|
gam/gamlib/glindent.py,sha256=RfBa2LDfLIqPLL5vMfC689TCVmqn8xf-qulSzkiatrc,1228
|
|
34
|
-
gam/gamlib/glmsgs.py,sha256=
|
|
34
|
+
gam/gamlib/glmsgs.py,sha256=PSXjYGbGni2UyL7tK1e9U721UC-KKoK1lL1TNqIH8YY,33343
|
|
35
35
|
gam/gamlib/glskus.py,sha256=Gi0jjrSGwhCD4SvtqQfuAXwtEiL2zU4c8qXdxO1yY9k,15058
|
|
36
36
|
gam/gamlib/gluprop.py,sha256=IyPLCyvn7-NHTUenM71YPQPXRZXx6CB5q-GtJ-FYd1c,11461
|
|
37
37
|
gam/gamlib/glverlibs.py,sha256=XXYhmjOVti78JTy7NNr4ShIwiOX7LrfrmFSlqSWixrE,1077
|
|
@@ -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.19.dist-info/METADATA,sha256=H_FrSYW592jWsjzAy0w16hDLsT8WWc6ttJJF0Vz6NX4,2889
|
|
69
|
+
gam7-7.5.19.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
70
|
+
gam7-7.5.19.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
|
|
71
|
+
gam7-7.5.19.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
72
|
+
gam7-7.5.19.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|