gam7 7.27.1__py3-none-any.whl → 7.27.3__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 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.01'
28
+ __version__ = '7.27.03'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -9182,7 +9182,7 @@ def showJSON(showName, showValue, skipObjects=None, timeObjects=None,
9182
9182
  return
9183
9183
  if objectName is not None:
9184
9184
  printJSONKey(objectName)
9185
- subObjectKey = dictObjectsKey.get(objectName)
9185
+ subObjectKey = dictObjectsKey.get(objectName)
9186
9186
  if isinstance(objectValue, list):
9187
9187
  if objectName in simpleLists:
9188
9188
  printJSONValue(' '.join(objectValue))
@@ -26506,14 +26506,18 @@ CHAT_TIME_OBJECTS = {'createTime', 'deleteTime', 'eventTime', 'lastActiveTime',
26506
26506
  def _showChatItem(citem, entityType, FJQC, i=0, count=0):
26507
26507
  if entityType == Ent.CHAT_SPACE:
26508
26508
  _cleanChatSpace(citem)
26509
+ dictObjectsKey = {None: 'displayName'}
26509
26510
  elif entityType == Ent.CHAT_MESSAGE:
26510
26511
  _cleanChatMessage(citem)
26512
+ dictObjectsKey = {None: 'text'}
26513
+ else:
26514
+ dictObjectsKey={}
26511
26515
  if FJQC.formatJSON:
26512
26516
  printLine(json.dumps(cleanJSON(citem, timeObjects=CHAT_TIME_OBJECTS), ensure_ascii=False, sort_keys=True))
26513
26517
  return
26514
26518
  printEntity([entityType, citem['name']], i, count)
26515
26519
  Ind.Increment()
26516
- showJSON(None, citem, timeObjects=CHAT_TIME_OBJECTS)
26520
+ showJSON(None, citem, timeObjects=CHAT_TIME_OBJECTS, dictObjectsKey=dictObjectsKey)
26517
26521
  Ind.Decrement()
26518
26522
 
26519
26523
  def _printChatItem(user, citem, parent, entityType, csvPF, FJQC, addCSVData=None):
@@ -26772,14 +26776,14 @@ def getChatSpaceParameters(myarg, body, typeChoicesMap, updateMask):
26772
26776
 
26773
26777
  CHAT_MEMBER_ROLE_MAP = {
26774
26778
  'member': 'ROLE_MEMBER',
26775
- 'manager': 'ROLE_MANAGER',
26776
- 'owner': 'ROLE_OWNER',
26779
+ 'manager': 'ROLE_ASSISTANT_MANAGER',
26780
+ 'owner': 'ROLE_MANAGER',
26777
26781
  }
26778
26782
 
26779
26783
  CHAT_ROLE_ENTITY_TYPE_MAP = {
26780
26784
  'ROLE_MEMBER': Ent.CHAT_MEMBER_USER,
26781
- 'ROLE_MANAGER': Ent.CHAT_MANAGER_USER,
26782
- 'ROLE_OWNER': Ent.CHAT_OWNER_USER,
26785
+ 'ROLE_ASSISTANT_MANAGER': Ent.CHAT_MANAGER_USER,
26786
+ 'ROLE_MANAGER': Ent.CHAT_OWNER_USER,
26783
26787
  }
26784
26788
 
26785
26789
  CHAT_MEMBER_TYPE_MAP = {
@@ -26913,7 +26917,8 @@ CHAT_UPDATE_SPACE_TYPE_MAP = {
26913
26917
  }
26914
26918
 
26915
26919
  CHAT_SPACE_ROLE_PERMISSIONS_MAP = {
26916
- 'managers': 'managersAllowed',
26920
+ 'owners': 'managersAllowed',
26921
+ 'managers': 'assistantManagersAllowed',
26917
26922
  'members': 'membersAllowed',
26918
26923
  }
26919
26924
 
@@ -26933,13 +26938,13 @@ CHAT_UPDATE_SPACE_PERMISSIONS_MAP = {
26933
26938
  # [type space]
26934
26939
  # [description <String>] [guidelines|rules <String>]
26935
26940
  # [history <Boolean>])
26936
- # managemembersandgroups managers|members
26937
- # modifyspacedetails managers|members
26938
- # togglehistory managers|members
26939
- # useatmentionall managers|members
26940
- # manageapps managers|members
26941
- # managewebhooks managers|members
26942
- # 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]
26943
26948
  # [formatjson]
26944
26949
  def updateChatSpace(users):
26945
26950
  FJQC = FormatJSONQuoteChar()
@@ -26957,9 +26962,13 @@ def updateChatSpace(users):
26957
26962
  body.setdefault('permissionSettings', {})
26958
26963
  permissionSetting = CHAT_UPDATE_SPACE_PERMISSIONS_MAP[myarg]
26959
26964
  role = getChoice(CHAT_SPACE_ROLE_PERMISSIONS_MAP, mapChoice=True)
26960
- body['permissionSettings'][permissionSetting] = {'managersAllowed': True}
26965
+ body['permissionSettings'][permissionSetting] = {}
26966
+ body['permissionSettings'][permissionSetting][role] = True
26961
26967
  if role == 'membersAllowed':
26962
- body['permissionSettings'][permissionSetting].update({'membersAllowed': True})
26968
+ body['permissionSettings'][permissionSetting]['assistantManagersAllowed'] = True
26969
+ body['permissionSettings'][permissionSetting]['managersAllowed'] = True
26970
+ elif role == 'assistantManagersAllowed':
26971
+ body['permissionSettings'][permissionSetting]['managersAllowed'] = True
26963
26972
  updateMask.add(f'permissionSettings.{permissionSetting}')
26964
26973
  else:
26965
26974
  FJQC.GetFormatJSON(myarg)
@@ -27333,12 +27342,12 @@ def getGroupMemberID(cd, group, groupList):
27333
27342
  groupList.append(convertEmailAddressToUID(group, cd, emailType='group'))
27334
27343
 
27335
27344
  # gam <UserTypeEntity> create chatmember <ChatSpace>
27336
- # [type human|bot] [role member|manager]
27345
+ # [type human|bot] [role member|manager|owner]
27337
27346
  # (user <UserItem>)* (members <UserTypeEntity>)*
27338
27347
  # (group <GroupItem>)* (groups <GroupEntity>)*
27339
27348
  # [formatjson|returnidonly]
27340
27349
  # gam <UserItem> create chatmember asadmin <ChatSpace>
27341
- # [type human|bot] [role member|manager]
27350
+ # [type human|bot] [role member|manager|owner]
27342
27351
  # (user <UserItem>)* (members <UserTypeEntity>)*
27343
27352
  # (group <GroupItem>)* (groups <GroupEntity>)*
27344
27353
  # [formatjson|returnidonly]
@@ -27467,16 +27476,16 @@ def _deleteChatMembers(chat, kvList, jcount, memberNames, i, count, kwargsUAA):
27467
27476
  # gam <UserItem> remove chatmember asadmin
27468
27477
  # members <ChatMemberList>
27469
27478
  # gam <UserTypeEntity> update chatmember <ChatSpace>
27470
- # role member|manager
27479
+ # role member|manager|owner
27471
27480
  # ((user <UserItem>)|(members <UserTypeEntity>))+
27472
27481
  # gam <UserTypeEntity> modify chatmember
27473
- # role member|manager
27482
+ # role member|manager|owner
27474
27483
  # members <ChatMemberList>
27475
27484
  # gam <UserItem> update chatmember asadmin<ChatSpace>
27476
- # role member|manager
27485
+ # role member|manager|owner
27477
27486
  # ((user <UserItem>)|(members <UserTypeEntity>))+
27478
27487
  # gam <UserItem> modify chatmember asadmin
27479
- # role member|manager
27488
+ # role member|manager|owner
27480
27489
  # members <ChatMemberList>
27481
27490
  def deleteUpdateChatMember(users):
27482
27491
  cd = buildGAPIObject(API.DIRECTORY)
@@ -27570,7 +27579,7 @@ def deleteUpdateChatMember(users):
27570
27579
  CHAT_SYNC_PREVIEW_TITLES = ['space', 'member', 'role', 'action', 'message']
27571
27580
 
27572
27581
  # gam <UserTypeEntity> sync chatmembers [asadmin] <ChatSpace>
27573
- # [role member|manager] [type human|bot]
27582
+ # [role member|manager|owner] [type human|bot]
27574
27583
  # [addonly|removeonly]
27575
27584
  # [preview [actioncsv]]
27576
27585
  # (users <UserTypeEntity>)* (groups <GroupEntity>)*
@@ -27986,10 +27995,11 @@ def _getChatSenderEmail(cd, sender):
27986
27995
  sender['email'], _ = convertUIDtoEmailAddressWithType(f'uid:{senderUid}', cd, None, emailTypes=['user'])
27987
27996
 
27988
27997
  def trimChatMessageIfRequired(body):
27989
- msgLen = len(body['text'])
27990
- if msgLen > 4096:
27991
- stderrWarningMsg(Msg.TRIMMED_MESSAGE_FROM_LENGTH_TO_MAXIMUM.format(msgLen, 4096))
27992
- body['text'] = body['text'][:4095]
27998
+ if 'text' in body:
27999
+ msgLen = len(body['text'])
28000
+ if msgLen > 4096:
28001
+ stderrWarningMsg(Msg.TRIMMED_MESSAGE_FROM_LENGTH_TO_MAXIMUM.format(msgLen, 4096))
28002
+ body['text'] = body['text'][:4095]
27993
28003
 
27994
28004
  CHAT_MESSAGE_REPLY_OPTION_MAP = {
27995
28005
  'fail': 'REPLY_MESSAGE_OR_FAIL',
@@ -28066,22 +28076,29 @@ def doCreateChatMessage():
28066
28076
  createChatMessage([None])
28067
28077
 
28068
28078
  # gam [<UserTypeMessage>] update chatmessage name <ChatMessage>
28069
- # <ChatContent>
28079
+ # [<ChatContent>] [clearattachments <String>]
28070
28080
  def updateChatMessage(users):
28071
28081
  name = None
28072
28082
  body = {}
28083
+ updateMask = []
28084
+ clearMsg = ''
28073
28085
  while Cmd.ArgumentsRemaining():
28074
28086
  myarg = getArgument()
28075
28087
  if myarg == 'name':
28076
28088
  name = getString(Cmd.OB_CHAT_MESSAGE)
28077
28089
  elif myarg in SORF_TEXT_ARGUMENTS:
28078
28090
  body['text'] = getStringOrFile(myarg, minLen=0, unescapeCRLF=True)[0]
28091
+ updateMask.append('text')
28092
+ elif myarg == 'clearattachments':
28093
+ clearMsg = getString(Cmd.OB_STRING, minLen=0)
28094
+ body['attachment'] = []
28095
+ updateMask.append('attachment')
28079
28096
  else:
28080
28097
  unknownArgumentExit()
28081
28098
  if not name:
28082
28099
  missingArgumentExit('name')
28083
- if 'text' not in body:
28084
- missingArgumentExit('text or textfile')
28100
+ if not updateMask:
28101
+ missingArgumentExit('text|textfile|clearattachments')
28085
28102
  trimChatMessageIfRequired(body)
28086
28103
  i, count, users = getEntityArgument(users)
28087
28104
  for user in users:
@@ -28090,9 +28107,19 @@ def updateChatMessage(users):
28090
28107
  if not chat:
28091
28108
  continue
28092
28109
  try:
28110
+ if 'attachment' in updateMask and 'text' not in updateMask:
28111
+ resp = callGAPI(chat.spaces().messages(), 'get',
28112
+ throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
28113
+ name=name, fields='text')
28114
+ body['text'] = resp.get('text', '')
28115
+ if clearMsg:
28116
+ body['text'] += clearMsg
28117
+ elif not body['text']:
28118
+ body['text'] = 'Attachments cleared'
28119
+ updateMask.append('text')
28093
28120
  resp = callGAPI(chat.spaces().messages(), 'patch',
28094
28121
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
28095
- name=name, updateMask='text', body=body)
28122
+ name=name, updateMask=','.join(updateMask), body=body)
28096
28123
  kvList.extend([Ent.CHAT_THREAD, resp['thread']['name']])
28097
28124
  entityActionPerformed(kvList, i, count)
28098
28125
  except (GAPI.notFound, GAPI.invalidArgument, GAPI.permissionDenied) as e:
@@ -33001,6 +33028,8 @@ def doCreateGroup(ciGroupsAPI=False):
33001
33028
  initialGroupConfig = 'WITH_INITIAL_OWNER'
33002
33029
  elif ciGroupsAPI and myarg in {'security', 'makesecuritygroup'}:
33003
33030
  body['labels'][CIGROUP_SECURITY_LABEL] = ''
33031
+ elif ciGroupsAPI and myarg in ['locked']:
33032
+ body['labels'][CIGROUP_LOCKED_LABEL] = ''
33004
33033
  elif myarg == 'verifynotinvitable':
33005
33034
  verifyNotInvitable = True
33006
33035
  else:
gam/gamlib/glmsgs.py CHANGED
@@ -516,7 +516,7 @@ To set up Google Chat for your current project, please go to:
516
516
 
517
517
  and follow the instructions at:
518
518
 
519
- https://github.com/GAM-team/GAM/wiki/Chat-Bot#set-up-a-chat-bot
519
+ https://github.com/GAM-team/GAM/wiki/Chat-Bot-Setup-Use#set-up-a-chat-bot
520
520
 
521
521
  You'll use projects/{1}/topics/no-topic in Connection settings Cloud Pub/Sub Topic Name
522
522
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.27.1
3
+ Version: 7.27.3
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
@@ -1,4 +1,4 @@
1
- gam/__init__.py,sha256=eQm09vyLeuYY4iZZEbxoD60q7RbJbimSYPH4ErnAwv0,3625714
1
+ gam/__init__.py,sha256=6tDyyHCVxCJwXYuFC70EhWj4crFEOwmfG7y62BVRL9M,3627187
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=ODq-KS3jhXH5DB5DEo6eCX1DHhy4OGv_jeQjiLVPOHM,34049
33
+ gam/gamlib/glmsgs.py,sha256=Cgb_81itIGaEMtLPVVkYZtfxIMsqECa-eBjh7fA_o7A,34059
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.1.dist-info/METADATA,sha256=0Z9A1tL--zNCZuYz8Lkec0dxYMpTkQQQHVWYNwKftGs,3093
51
- gam7-7.27.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
52
- gam7-7.27.1.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
53
- gam7-7.27.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
54
- gam7-7.27.1.dist-info/RECORD,,
50
+ gam7-7.27.3.dist-info/METADATA,sha256=W85d4Rkgn2NKOZskyT90_iagAzpPGwCuiCC6OFh8GSo,3093
51
+ gam7-7.27.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
52
+ gam7-7.27.3.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
53
+ gam7-7.27.3.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
54
+ gam7-7.27.3.dist-info/RECORD,,
File without changes