gam7 7.4.3__tar.gz → 7.4.4__tar.gz
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.
- {gam7-7.4.3 → gam7-7.4.4}/PKG-INFO +1 -1
- {gam7-7.4.3 → gam7-7.4.4}/src/GamCommands.txt +3 -2
- {gam7-7.4.3 → gam7-7.4.4}/src/GamUpdate.txt +7 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/__init__.py +21 -13
- {gam7-7.4.3 → gam7-7.4.4}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.github/actions/creds.tar.xz.gpg +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.github/actions/decrypt.sh +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.github/actions/entitlements.plist +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.github/stale.yml +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.github/workflows/build.yml +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.github/workflows/get-cacerts.yml +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.github/workflows/pypi.yml +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/.pre-commit-config.yaml +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/LICENSE +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/README.md +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/pyproject.toml +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/.gitignore +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/LICENSE +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/cacerts.pem +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/callgam.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/__main__.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/__init__.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/auth.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/client.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/core.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/data.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/http.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/http_core.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/service.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/token_store.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/atom/url.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/cacerts.pem +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/glapi.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/glclargs.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/glentity.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/glgapi.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/glglobals.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/glmsgs.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/glskus.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gdata/service.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/__init__.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/_auth.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/_helpers.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/channel.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/discovery.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/errors.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/http.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/mimeparse.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/model.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/schema.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/googleapiclient/version.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/iso8601/__init__.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/iso8601/iso8601.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam/six.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam-install.sh +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam-setup.bat +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam.exe.manifest +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam.spec +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/gam.wxs +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/license.rtf +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/project-apis.txt +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/requirements-dev.txt +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/requirements.txt +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/setup.cfg +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/setup.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/tools/mkGamRef.py +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/tools/openssl.props +0 -0
- {gam7-7.4.3 → gam7-7.4.4}/src/version_info.txt.in +0 -0
|
@@ -3997,13 +3997,14 @@ gam print cigroups [todrive <ToDriveAttribute>*]
|
|
|
3997
3997
|
|
|
3998
3998
|
<CIGroupMembersFieldName> ::=
|
|
3999
3999
|
createtime
|
|
4000
|
+
email|useremail|
|
|
4000
4001
|
expiretime|
|
|
4001
4002
|
memberkey|
|
|
4002
4003
|
name|
|
|
4003
4004
|
role|
|
|
4004
4005
|
type|
|
|
4005
|
-
updatetime
|
|
4006
|
-
|
|
4006
|
+
updatetime
|
|
4007
|
+
|
|
4007
4008
|
<CIGroupMembersFieldNameList> ::= "<CIGroupMembersFieldName>(,<CIGroupMembersFieldName>)*"
|
|
4008
4009
|
|
|
4009
4010
|
gam <UserTypeEntity> info cimember <GroupEntity>
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
7.04.04
|
|
2
|
+
|
|
3
|
+
Updated `gam print group-members|cigroup-members` to include the `email` column
|
|
4
|
+
when `fields <MembersFieldNameList>` did not include `email`.
|
|
5
|
+
|
|
1
6
|
7.04.03
|
|
2
7
|
|
|
3
8
|
Added option `minimal|basic|full` to `gam print cigroup-members`:
|
|
@@ -10,6 +15,8 @@ Added option `minimal|basic|full` to `gam show cigroup-members`:
|
|
|
10
15
|
* `basic` - Fields displayed: type, role, email
|
|
11
16
|
* `full` - Fields displayed: type, role, email, createTime, updateTime; this is the default
|
|
12
17
|
|
|
18
|
+
Upgraded `gam print cigroup-members ... recursive` to display sub-group email addresses rather than IDs.
|
|
19
|
+
|
|
13
20
|
7.04.02
|
|
14
21
|
|
|
15
22
|
Improved output formatting for the following commands:
|
|
@@ -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.04.
|
|
28
|
+
__version__ = '7.04.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
|
|
@@ -7324,12 +7324,6 @@ def _getRawFields(requiredField=None):
|
|
|
7324
7324
|
return rawFields
|
|
7325
7325
|
return f'{requiredField},{rawFields}'
|
|
7326
7326
|
|
|
7327
|
-
def _addInitialField(fieldsList, initialField):
|
|
7328
|
-
if isinstance(initialField, list):
|
|
7329
|
-
fieldsList.extend(initialField)
|
|
7330
|
-
else:
|
|
7331
|
-
fieldsList.append(initialField)
|
|
7332
|
-
|
|
7333
7327
|
def CheckInputRowFilterHeaders(titlesList, rowFilter, rowDropFilter):
|
|
7334
7328
|
status = True
|
|
7335
7329
|
for filterVal in rowFilter:
|
|
@@ -7744,6 +7738,12 @@ def RowFilterMatch(row, titlesList, rowFilter, rowFilterModeAll, rowDropFilter,
|
|
|
7744
7738
|
# }
|
|
7745
7739
|
# fieldsList is the list of API fields
|
|
7746
7740
|
def getFieldsList(myarg, fieldsChoiceMap, fieldsList, initialField=None, fieldsArg='fields', onlyFieldsArg=False):
|
|
7741
|
+
def addInitialField():
|
|
7742
|
+
if isinstance(initialField, list):
|
|
7743
|
+
fieldsList.extend(initialField)
|
|
7744
|
+
else:
|
|
7745
|
+
fieldsList.append(initialField)
|
|
7746
|
+
|
|
7747
7747
|
def addMappedFields(mappedFields):
|
|
7748
7748
|
if isinstance(mappedFields, list):
|
|
7749
7749
|
fieldsList.extend(mappedFields)
|
|
@@ -7752,11 +7752,11 @@ def getFieldsList(myarg, fieldsChoiceMap, fieldsList, initialField=None, fieldsA
|
|
|
7752
7752
|
|
|
7753
7753
|
if not onlyFieldsArg and myarg in fieldsChoiceMap:
|
|
7754
7754
|
if not fieldsList and initialField is not None:
|
|
7755
|
-
|
|
7755
|
+
addInitialField()
|
|
7756
7756
|
addMappedFields(fieldsChoiceMap[myarg])
|
|
7757
7757
|
elif myarg == fieldsArg:
|
|
7758
7758
|
if not fieldsList and initialField is not None:
|
|
7759
|
-
|
|
7759
|
+
addInitialField()
|
|
7760
7760
|
for field in _getFieldsList():
|
|
7761
7761
|
if field in fieldsChoiceMap:
|
|
7762
7762
|
addMappedFields(fieldsChoiceMap[field])
|
|
@@ -7933,14 +7933,21 @@ class CSVPrintFile():
|
|
|
7933
7933
|
fieldsList.append(fields)
|
|
7934
7934
|
self.AddTitles(fields.replace('.', GC.Values[GC.CSV_OUTPUT_SUBFIELD_DELIMITER]))
|
|
7935
7935
|
|
|
7936
|
+
def addInitialField(self, initialField, fieldsChoiceMap, fieldsList):
|
|
7937
|
+
if isinstance(initialField, list):
|
|
7938
|
+
for field in initialField:
|
|
7939
|
+
self.AddField(field, fieldsChoiceMap, fieldsList)
|
|
7940
|
+
else:
|
|
7941
|
+
self.AddField(initialField, fieldsChoiceMap, fieldsList)
|
|
7942
|
+
|
|
7936
7943
|
def GetFieldsListTitles(self, fieldName, fieldsChoiceMap, fieldsList, initialField=None):
|
|
7937
7944
|
if fieldName in fieldsChoiceMap:
|
|
7938
7945
|
if not fieldsList and initialField is not None:
|
|
7939
|
-
|
|
7946
|
+
self.addInitialField(initialField, fieldsChoiceMap, fieldsList)
|
|
7940
7947
|
self.AddField(fieldName, fieldsChoiceMap, fieldsList)
|
|
7941
7948
|
elif fieldName == 'fields':
|
|
7942
7949
|
if not fieldsList and initialField is not None:
|
|
7943
|
-
|
|
7950
|
+
self.addInitialField(initialField, fieldsChoiceMap, fieldsList)
|
|
7944
7951
|
for field in _getFieldsList():
|
|
7945
7952
|
if field in fieldsChoiceMap:
|
|
7946
7953
|
self.AddField(field, fieldsChoiceMap, fieldsList)
|
|
@@ -34206,7 +34213,7 @@ def doPrintGroupMembers():
|
|
|
34206
34213
|
pass
|
|
34207
34214
|
elif getMemberMatchOptions(myarg, memberOptions):
|
|
34208
34215
|
pass
|
|
34209
|
-
elif csvPF.GetFieldsListTitles(myarg, GROUPMEMBERS_FIELDS_CHOICE_MAP, fieldsList):
|
|
34216
|
+
elif csvPF.GetFieldsListTitles(myarg, GROUPMEMBERS_FIELDS_CHOICE_MAP, fieldsList, initialField='email'):
|
|
34210
34217
|
pass
|
|
34211
34218
|
elif myarg == 'membernames':
|
|
34212
34219
|
memberOptions[MEMBEROPTION_MEMBERNAMES] = True
|
|
@@ -36223,6 +36230,7 @@ CIGROUPMEMBERS_FIELDS_CHOICE_MAP = {
|
|
|
36223
36230
|
'createtime': 'createTime',
|
|
36224
36231
|
'delivery': 'deliverySetting',
|
|
36225
36232
|
'deliverysettings': 'deliverySetting',
|
|
36233
|
+
'email': 'preferredMemberKey',
|
|
36226
36234
|
'expiretime': 'expireTime',
|
|
36227
36235
|
'id': 'name',
|
|
36228
36236
|
'memberkey': 'preferredMemberKey',
|
|
@@ -36309,7 +36317,7 @@ def doPrintCIGroupMembers():
|
|
|
36309
36317
|
pass
|
|
36310
36318
|
elif getMemberMatchOptions(myarg, memberOptions):
|
|
36311
36319
|
pass
|
|
36312
|
-
elif getFieldsList(myarg, CIGROUPMEMBERS_FIELDS_CHOICE_MAP, fieldsList):
|
|
36320
|
+
elif getFieldsList(myarg, CIGROUPMEMBERS_FIELDS_CHOICE_MAP, fieldsList, initialField='preferredMemberKey'):
|
|
36313
36321
|
pass
|
|
36314
36322
|
elif myarg == 'noduplicates':
|
|
36315
36323
|
memberOptions[MEMBEROPTION_NODUPLICATES] = True
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|