gam7 7.20.3__tar.gz → 7.20.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.20.3 → gam7-7.20.4}/.github/workflows/build.yml +2 -3
- {gam7-7.20.3 → gam7-7.20.4}/.github/workflows/get-cacerts.yml +1 -1
- {gam7-7.20.3 → gam7-7.20.4}/PKG-INFO +1 -1
- {gam7-7.20.3 → gam7-7.20.4}/src/GamUpdate.txt +4 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/__init__.py +33 -37
- gam7-7.20.3/src/gam/iso8601/iso8601.py → gam7-7.20.4/src/gam/gamlib/gliso8601.py +7 -8
- {gam7-7.20.3 → gam7-7.20.4}/src/gam.spec +2 -2
- gam7-7.20.4/src/tools/hooks/hook-googleapiclient.model.py +21 -0
- gam7-7.20.4/src/tools/hooks/hook-httplib2.py +19 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Authorization.md +1 -1
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Licenses.md +1 -1
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Reports.md +103 -101
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Chat.md +1 -0
- gam7-7.20.3/.pre-commit-config.yaml +0 -32
- gam7-7.20.3/src/gam/cacerts.pem +0 -747
- gam7-7.20.3/src/gam/googleapiclient/__init__.py +0 -27
- gam7-7.20.3/src/gam/googleapiclient/_auth.py +0 -167
- gam7-7.20.3/src/gam/googleapiclient/_helpers.py +0 -207
- gam7-7.20.3/src/gam/googleapiclient/channel.py +0 -315
- gam7-7.20.3/src/gam/googleapiclient/discovery.py +0 -1662
- gam7-7.20.3/src/gam/googleapiclient/discovery_cache/__init__.py +0 -78
- gam7-7.20.3/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -55
- gam7-7.20.3/src/gam/googleapiclient/discovery_cache/base.py +0 -46
- gam7-7.20.3/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -145
- gam7-7.20.3/src/gam/googleapiclient/errors.py +0 -197
- gam7-7.20.3/src/gam/googleapiclient/http.py +0 -1962
- gam7-7.20.3/src/gam/googleapiclient/mimeparse.py +0 -183
- gam7-7.20.3/src/gam/googleapiclient/model.py +0 -429
- gam7-7.20.3/src/gam/googleapiclient/schema.py +0 -317
- gam7-7.20.3/src/gam/googleapiclient/version.py +0 -15
- gam7-7.20.3/src/gam/iso8601/__init__.py +0 -28
- gam7-7.20.3/src/gam/six.py +0 -982
- gam7-7.20.3/src/requirements-dev.txt +0 -7
- {gam7-7.20.3 → gam7-7.20.4}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/.github/actions/decrypt.sh +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/.github/actions/entitlements.plist +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/.github/stale.yml +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/.github/workflows/pushwiki.yml +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/.github/workflows/pypi.yml +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/LICENSE +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/README.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/pyproject.toml +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/.gitignore +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/GamCommands.txt +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/LICENSE +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/README.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/callgam.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/__main__.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/__init__.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/auth.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/client.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/core.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/data.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/http.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/http_core.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/service.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/token_store.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/atom/url.py +0 -0
- {gam7-7.20.3/src → gam7-7.20.4/src/gam}/cacerts.pem +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/glapi.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/glclargs.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/glentity.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/glgapi.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/glglobals.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/glmsgs.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/glskus.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gdata/service.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/meet-v2beta.json +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam-install.sh +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam-setup.bat +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam.exe.manifest +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/gam.wxs +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/license.rtf +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/tools/mkGamRef.py +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/tools/openssl.props +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/tools/ssd.mjs +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/src/version_info.txt.in +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/00scratch.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Addresses.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Administrators.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Alert-Center.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Aliases.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/BNF-Syntax.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Basic-Items.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Bulk-Processing.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Business-Account-Management.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/CSV-Input-Filtering.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/CSV-Output-Filtering.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/CSV-Special-Characters.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Calendars-Access.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Calendars-Events.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Calendars.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Chat-Bot-Setup-Use.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Chrome-AUE-Counts.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Chrome-Installed-Apps.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Chrome-Policies.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Chrome-Printers.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Chrome-Profile-Management.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Chrome-Version-Counts.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Chrome-Version-History.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/ChromeOS-Devices.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Classroom-Courses.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Classroom-Guardians.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Classroom-Invitations.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Classroom-Membership.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Classroom-StudentGroups.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Cloud-Channel.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Cloud-Identity-Devices.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Cloud-Identity-Groups.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Cloud-Identity-Policies.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Cloud-Storage.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Collections-of-Items.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Collections-of-Users.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Command-Line-Parsing.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Command-Logging-Progress.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Context-Aware-Access-Levels.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Customer.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Domain-People-Contacts-Profiles.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Domain-SharedContacts.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Domains-Verification.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Domains.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Downloads-Installs.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Drive-File-Selection.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Drive-Items.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Drive-REST-API-v3.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Email-Audit-Monitor.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Find-File-Owner.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/GAM-Public-Chat-Room.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/GAM-Return-Codes.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/GAM7-on-Android-Devices.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/GamUpdates.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Global-Address-List.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Google-Data-Transfers.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Google-Network-Addresses.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Groups-Membership.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Groups.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/HTTPS-Proxy.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Home.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/How-to-Install-GAM7.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/How-to-Uninstall-GAM7.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/How-to-Update-GAM7.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Inbound-SSO.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Install-GAM-as-Python-Library.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/List-Items.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/List.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Mobile-Devices.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Organizational-Units.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Other-Resources.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Permission-Matches.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Python-Regular-Expressions.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/README.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Rclone.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Reseller.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Resources.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/SSL-Root-CA-Certificates.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Schemas.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Scripts.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Send-Email.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Shared-Drives.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Sites.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Tag-Replace.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Todrive.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Unmanaged-Accounts.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Upgrade-Benefits.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Analytics-Admin.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Application-Specific-Passwords.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Backup-Verification-Codes.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Calendars-Access.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Calendars-Events.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Calendars.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Classification-Labels.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Classroom-Profile.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Contacts-Delegates.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Contacts.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Deprovision.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Activity-Settings.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Cleanup.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Comments.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Copy-Move.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Files-Display.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Files-Manage.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Orphans.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Ownership.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Permissions.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Query.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Revisions.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Shortcuts.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Drive-Transfer.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Forms.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Gmail-CSE.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Gmail-Delegates.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Gmail-Filters.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Gmail-Forwarding.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Gmail-Labels.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Gmail-Messages-Threads.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Gmail-Profile.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Gmail-S-MIME.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Gmail-Settings.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Group-Membership.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Keep-Notes.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Looker-Studio.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Meet.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-People-Contacts-Profiles.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Photo.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Profile-Photo.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Profile-Sharing.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Shared-Drives.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Signout-Turnoff2SV.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Spreadsheets.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Tag-Manager.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Tasks.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Tokens.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-Web-Resources-and-Sites.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users-YouTube.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Users.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Vault-Takeout.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/Version-and-Help.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/_Sidebar.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/gam.cfg.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-AdminSettingsExamples.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Android-Installation.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-BulkOperations.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-CalendarExamples.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Chat-Bot.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Chrome-Browser-Management.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Chrome-OS-Installation.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Chrome-Policy-Settings.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Cloud-Identity-Groups.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Command-Reference-Calendars.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Command-Reference-Definitions.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Command-Reference-Drive.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Command-Reference-Email.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Command-Reference-Groups.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Command-Reference-Users.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Context-Aware-Access-Levels.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-CreatingClientSecretsFile.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Custom-Schemas.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Data-Transfers.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-DomainVerification.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-ExamplesAccountAuditing.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-ExamplesCSV.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-ExamplesEmailSettings.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-ExamplesOrganizations.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-GAM-Discussion-Group.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-GAM-options-files.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-GAM3CSVListings.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-GAM3DirectoryCommands.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-GAM3GroupSettings.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-GAM7-FAQ.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-GoogleDriveManagement.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Home.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Inbound-SSO-Settings.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-LicenseExamples.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Managing-Admins.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Managing-Devices.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Managing-Google-Classroom.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-OAuthKeyManagement.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Printers.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-ResellerCommands.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-SecurityExamples.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-UnmanagedUsersExamples.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Use-a-Yubikey.md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
- {gam7-7.20.3 → gam7-7.20.4}/wiki/l-_Footer.md +0 -0
|
@@ -188,7 +188,7 @@ jobs:
|
|
|
188
188
|
export PYTHON=$(which python3)
|
|
189
189
|
export PIP=$(which pip3)
|
|
190
190
|
export gam="${PYTHON} -m gam"
|
|
191
|
-
export gampath="$(readlink -e .)"
|
|
191
|
+
export gampath="$(readlink -e .)/gam"
|
|
192
192
|
echo -e "PYTHON: ${PYTHON}\nPIP: ${PIP}\gam: ${gam}\ngampath: ${gampath}"
|
|
193
193
|
echo "PYTHON=${PYTHON}" >> $GITHUB_ENV
|
|
194
194
|
echo "PIP=${PIP}" >> $GITHUB_ENV
|
|
@@ -538,7 +538,7 @@ jobs:
|
|
|
538
538
|
- name: Copy extra package files
|
|
539
539
|
if: matrix.goal == 'build'
|
|
540
540
|
run: |
|
|
541
|
-
cp -v cacerts.pem "$gampath"
|
|
541
|
+
cp -v gam/cacerts.pem "$gampath"
|
|
542
542
|
cp -v LICENSE "$gampath"
|
|
543
543
|
cp -v GamCommands.txt "$gampath"
|
|
544
544
|
cp -v GamUpdate.txt "$gampath"
|
|
@@ -588,7 +588,6 @@ jobs:
|
|
|
588
588
|
- name: Basic Tests all jobs
|
|
589
589
|
id: basictests
|
|
590
590
|
run: |
|
|
591
|
-
$PYTHON -m unittest discover --start-directory ./ --pattern "*_test.py" --buffer || if [ $? != 5 ]; then exit $?; fi # exit 5 is no tests
|
|
592
591
|
$gam version extended nooffseterror
|
|
593
592
|
export GAMVERSION=$($gam version simple)
|
|
594
593
|
echo "GAM Version ${GAMVERSION}"
|
|
@@ -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.20.
|
|
28
|
+
__version__ = '7.20.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
|
|
@@ -120,6 +120,10 @@ from google.auth.jwt import Credentials as JWTCredentials
|
|
|
120
120
|
import google.oauth2.service_account
|
|
121
121
|
import google_auth_oauthlib.flow
|
|
122
122
|
import google_auth_httplib2
|
|
123
|
+
import googleapiclient
|
|
124
|
+
import googleapiclient.discovery
|
|
125
|
+
import googleapiclient.errors
|
|
126
|
+
import googleapiclient.http
|
|
123
127
|
import httplib2
|
|
124
128
|
|
|
125
129
|
httplib2.RETRIES = 5
|
|
@@ -139,6 +143,7 @@ from gamlib import glgapi as GAPI
|
|
|
139
143
|
from gamlib import glgdata as GDATA
|
|
140
144
|
from gamlib import glglobals as GM
|
|
141
145
|
from gamlib import glindent
|
|
146
|
+
from gamlib import gliso8601 as iso8601
|
|
142
147
|
from gamlib import glmsgs as Msg
|
|
143
148
|
from gamlib import glskus as SKU
|
|
144
149
|
from gamlib import gluprop as UProp
|
|
@@ -149,12 +154,6 @@ import gdata.apps.audit
|
|
|
149
154
|
import gdata.apps.audit.service
|
|
150
155
|
import gdata.apps.contacts
|
|
151
156
|
import gdata.apps.contacts.service
|
|
152
|
-
# Import local library, does not include discovery documents
|
|
153
|
-
import googleapiclient
|
|
154
|
-
import googleapiclient.discovery
|
|
155
|
-
import googleapiclient.errors
|
|
156
|
-
import googleapiclient.http
|
|
157
|
-
from iso8601 import iso8601
|
|
158
157
|
|
|
159
158
|
IS08601_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S%:z'
|
|
160
159
|
RFC2822_TIME_FORMAT = '%a, %d %b %Y %H:%M:%S %z'
|
|
@@ -2013,11 +2012,11 @@ def getTimeOrDeltaFromNow(returnDateTime=False):
|
|
|
2013
2012
|
except OverflowError:
|
|
2014
2013
|
pass
|
|
2015
2014
|
try:
|
|
2016
|
-
fullDateTime
|
|
2015
|
+
fullDateTime = iso8601.parse_date(argstr)
|
|
2017
2016
|
Cmd.Advance()
|
|
2018
2017
|
if not returnDateTime:
|
|
2019
2018
|
return argstr.replace(' ', 'T')
|
|
2020
|
-
return (fullDateTime,
|
|
2019
|
+
return (fullDateTime, fullDateTime.tzinfo, argstr.replace(' ', 'T'))
|
|
2021
2020
|
except (iso8601.ParseError, OverflowError):
|
|
2022
2021
|
pass
|
|
2023
2022
|
invalidArgumentExit(YYYYMMDDTHHMMSS_FORMAT_REQUIRED)
|
|
@@ -2335,7 +2334,7 @@ def formatLocalTime(dateTimeStr):
|
|
|
2335
2334
|
if dateTimeStr in {NEVER_TIME, NEVER_TIME_NOMS}:
|
|
2336
2335
|
return GC.Values[GC.NEVER_TIME]
|
|
2337
2336
|
try:
|
|
2338
|
-
timestamp
|
|
2337
|
+
timestamp = iso8601.parse_date(dateTimeStr)
|
|
2339
2338
|
if not GC.Values[GC.OUTPUT_TIMEFORMAT]:
|
|
2340
2339
|
if GM.Globals[GM.CONVERT_TO_LOCAL_TIME]:
|
|
2341
2340
|
return ISOformatTimeStamp(timestamp.astimezone(GC.Values[GC.TIMEZONE]))
|
|
@@ -3736,10 +3735,7 @@ def SetGlobalVariables():
|
|
|
3736
3735
|
if value and not os.path.isabs(value):
|
|
3737
3736
|
value = os.path.expanduser(os.path.join(_getCfgDirectory(sectionName, GC.CONFIG_DIR), value))
|
|
3738
3737
|
elif not value and itemName == GC.CACERTS_PEM:
|
|
3739
|
-
|
|
3740
|
-
value = os.path.join(sys._MEIPASS, GC.FN_CACERTS_PEM) #pylint: disable=no-member
|
|
3741
|
-
else:
|
|
3742
|
-
value = os.path.join(GM.Globals[GM.GAM_PATH], GC.FN_CACERTS_PEM)
|
|
3738
|
+
value = os.path.join(GM.Globals[GM.GAM_PATH], GC.FN_CACERTS_PEM)
|
|
3743
3739
|
return value
|
|
3744
3740
|
|
|
3745
3741
|
def _readGamCfgFile(config, fileName):
|
|
@@ -7436,7 +7432,7 @@ def RowFilterMatch(row, titlesList, rowFilter, rowFilterModeAll, rowDropFilter,
|
|
|
7436
7432
|
return None
|
|
7437
7433
|
else:
|
|
7438
7434
|
try:
|
|
7439
|
-
rowTime
|
|
7435
|
+
rowTime = iso8601.parse_date(rowDate)
|
|
7440
7436
|
except (iso8601.ParseError, OverflowError):
|
|
7441
7437
|
return None
|
|
7442
7438
|
return ISOformatTimeStamp(datetime.datetime(rowTime.year, rowTime.month, rowTime.day, tzinfo=iso8601.UTC))
|
|
@@ -7501,7 +7497,7 @@ def RowFilterMatch(row, titlesList, rowFilter, rowFilterModeAll, rowDropFilter,
|
|
|
7501
7497
|
if YYYYMMDD_PATTERN.match(rowDate):
|
|
7502
7498
|
return None
|
|
7503
7499
|
try:
|
|
7504
|
-
rowTime
|
|
7500
|
+
rowTime = iso8601.parse_date(rowDate)
|
|
7505
7501
|
except (iso8601.ParseError, OverflowError):
|
|
7506
7502
|
return None
|
|
7507
7503
|
return f'{rowTime.hour:02d}:{rowTime.minute:02d}'
|
|
@@ -12413,7 +12409,7 @@ def checkServiceAccount(users):
|
|
|
12413
12409
|
throwReasons=[GAPI.BAD_REQUEST, GAPI.INVALID, GAPI.NOT_FOUND,
|
|
12414
12410
|
GAPI.PERMISSION_DENIED, GAPI.SERVICE_NOT_AVAILABLE],
|
|
12415
12411
|
name=name, fields='validAfterTime')
|
|
12416
|
-
key_created
|
|
12412
|
+
key_created = iso8601.parse_date(key['validAfterTime'])
|
|
12417
12413
|
key_age = todaysTime()-key_created
|
|
12418
12414
|
printPassFail(Msg.SERVICE_ACCOUNT_PRIVATE_KEY_AGE.format(key_age.days), testWarn if key_age.days > 30 else testPass)
|
|
12419
12415
|
except GAPI.permissionDenied:
|
|
@@ -14368,7 +14364,7 @@ def doReport():
|
|
|
14368
14364
|
eventTime = activity.get('id', {}).get('time', UNKNOWN)
|
|
14369
14365
|
if eventTime != UNKNOWN:
|
|
14370
14366
|
try:
|
|
14371
|
-
eventTime
|
|
14367
|
+
eventTime = iso8601.parse_date(eventTime)
|
|
14372
14368
|
except (iso8601.ParseError, OverflowError):
|
|
14373
14369
|
eventTime = UNKNOWN
|
|
14374
14370
|
if eventTime != UNKNOWN:
|
|
@@ -23867,7 +23863,7 @@ def _filterDeviceFiles(cros, selected, listLimit, startTime, endTime):
|
|
|
23867
23863
|
filteredItems = []
|
|
23868
23864
|
i = 0
|
|
23869
23865
|
for item in cros.get('deviceFiles', []):
|
|
23870
|
-
timeValue
|
|
23866
|
+
timeValue = iso8601.parse_date(item['createTime'])
|
|
23871
23867
|
if ((startTime is None) or (timeValue >= startTime)) and ((endTime is None) or (timeValue <= endTime)):
|
|
23872
23868
|
item['createTime'] = formatLocalTime(item['createTime'])
|
|
23873
23869
|
filteredItems.append(item)
|
|
@@ -23884,7 +23880,7 @@ def _filterCPUStatusReports(cros, selected, listLimit, startTime, endTime):
|
|
|
23884
23880
|
filteredItems = []
|
|
23885
23881
|
i = 0
|
|
23886
23882
|
for item in cros.get('cpuStatusReports', []):
|
|
23887
|
-
timeValue
|
|
23883
|
+
timeValue = iso8601.parse_date(item['reportTime'])
|
|
23888
23884
|
if ((startTime is None) or (timeValue >= startTime)) and ((endTime is None) or (timeValue <= endTime)):
|
|
23889
23885
|
item['reportTime'] = formatLocalTime(item['reportTime'])
|
|
23890
23886
|
for tempInfo in item.get('cpuTemperatureInfo', []):
|
|
@@ -23905,7 +23901,7 @@ def _filterSystemRamFreeReports(cros, selected, listLimit, startTime, endTime):
|
|
|
23905
23901
|
filteredItems = []
|
|
23906
23902
|
i = 0
|
|
23907
23903
|
for item in cros.get('systemRamFreeReports', []):
|
|
23908
|
-
timeValue
|
|
23904
|
+
timeValue = iso8601.parse_date(item['reportTime'])
|
|
23909
23905
|
if ((startTime is None) or (timeValue >= startTime)) and ((endTime is None) or (timeValue <= endTime)):
|
|
23910
23906
|
item['reportTime'] = formatLocalTime(item['reportTime'])
|
|
23911
23907
|
item['systemRamFreeInfo'] = ','.join([str(x) for x in item['systemRamFreeInfo']])
|
|
@@ -23938,7 +23934,7 @@ def _filterScreenshotFiles(cros, selected, listLimit, startTime, endTime):
|
|
|
23938
23934
|
filteredItems = []
|
|
23939
23935
|
i = 0
|
|
23940
23936
|
for item in cros.get('screenshotFiles', []):
|
|
23941
|
-
timeValue
|
|
23937
|
+
timeValue = iso8601.parse_date(item['createTime'])
|
|
23942
23938
|
if ((startTime is None) or (timeValue >= startTime)) and ((endTime is None) or (timeValue <= endTime)):
|
|
23943
23939
|
item['createTime'] = formatLocalTime(item['createTime'])
|
|
23944
23940
|
filteredItems.append(item)
|
|
@@ -24386,7 +24382,7 @@ def getDeviceFilesEntity():
|
|
|
24386
24382
|
else:
|
|
24387
24383
|
for timeItem in myarg.split(','):
|
|
24388
24384
|
try:
|
|
24389
|
-
timestamp
|
|
24385
|
+
timestamp = iso8601.parse_date(timeItem)
|
|
24390
24386
|
deviceFilesEntity['list'].append(ISOformatTimeStamp(timestamp.astimezone(GC.Values[GC.TIMEZONE])))
|
|
24391
24387
|
except (iso8601.ParseError, OverflowError):
|
|
24392
24388
|
Cmd.Backup()
|
|
@@ -24415,14 +24411,14 @@ def _selectDeviceFiles(deviceId, deviceFiles, deviceFilesEntity):
|
|
|
24415
24411
|
count = 0
|
|
24416
24412
|
if deviceFilesEntity['time'][0] == 'before':
|
|
24417
24413
|
for deviceFile in deviceFiles:
|
|
24418
|
-
createTime
|
|
24414
|
+
createTime = iso8601.parse_date(deviceFile['createTime'])
|
|
24419
24415
|
if createTime >= dateTime:
|
|
24420
24416
|
break
|
|
24421
24417
|
count += 1
|
|
24422
24418
|
return deviceFiles[:count]
|
|
24423
24419
|
# if deviceFilesEntity['time'][0] == 'after':
|
|
24424
24420
|
for deviceFile in deviceFiles:
|
|
24425
|
-
createTime
|
|
24421
|
+
createTime = iso8601.parse_date(deviceFile['createTime'])
|
|
24426
24422
|
if createTime >= dateTime:
|
|
24427
24423
|
break
|
|
24428
24424
|
count += 1
|
|
@@ -24431,14 +24427,14 @@ def _selectDeviceFiles(deviceId, deviceFiles, deviceFilesEntity):
|
|
|
24431
24427
|
dateTime = deviceFilesEntity['range'][1]
|
|
24432
24428
|
spos = 0
|
|
24433
24429
|
for deviceFile in deviceFiles:
|
|
24434
|
-
createTime
|
|
24430
|
+
createTime = iso8601.parse_date(deviceFile['createTime'])
|
|
24435
24431
|
if createTime >= dateTime:
|
|
24436
24432
|
break
|
|
24437
24433
|
spos += 1
|
|
24438
24434
|
dateTime = deviceFilesEntity['range'][2]
|
|
24439
24435
|
epos = spos
|
|
24440
24436
|
for deviceFile in deviceFiles[spos:]:
|
|
24441
|
-
createTime
|
|
24437
|
+
createTime = iso8601.parse_date(deviceFile['createTime'])
|
|
24442
24438
|
if createTime >= dateTime:
|
|
24443
24439
|
break
|
|
24444
24440
|
epos += 1
|
|
@@ -25221,7 +25217,7 @@ def doInfoPrintShowCrOSTelemetry():
|
|
|
25221
25217
|
i = 0
|
|
25222
25218
|
for item in listItems:
|
|
25223
25219
|
if 'reportTime' in item:
|
|
25224
|
-
timeValue
|
|
25220
|
+
timeValue = iso8601.parse_date(item['reportTime'])
|
|
25225
25221
|
else:
|
|
25226
25222
|
timeValue = None
|
|
25227
25223
|
if (timeValue is None) or (((startTime is None) or (timeValue >= startTime)) and ((endTime is None) or (timeValue <= endTime))):
|
|
@@ -40068,7 +40064,7 @@ def _getEventDaysOfWeek(event):
|
|
|
40068
40064
|
pass
|
|
40069
40065
|
elif 'dateTime' in event[attr]:
|
|
40070
40066
|
try:
|
|
40071
|
-
dateTime
|
|
40067
|
+
dateTime = iso8601.parse_date(event[attr]['dateTime'])
|
|
40072
40068
|
event[attr]['dayOfWeek'] = calendarlib.day_abbr[dateTime.weekday()]
|
|
40073
40069
|
except (iso8601.ParseError, OverflowError):
|
|
40074
40070
|
pass
|
|
@@ -48699,7 +48695,7 @@ def _courseItemPassesFilter(item, courseItemFilter):
|
|
|
48699
48695
|
return False
|
|
48700
48696
|
startTime = courseItemFilter['startTime']
|
|
48701
48697
|
endTime = courseItemFilter['endTime']
|
|
48702
|
-
timeValue
|
|
48698
|
+
timeValue = iso8601.parse_date(timeStr)
|
|
48703
48699
|
return ((startTime is None) or (timeValue >= startTime)) and ((endTime is None) or (timeValue <= endTime))
|
|
48704
48700
|
|
|
48705
48701
|
def _gettingCoursesQuery(courseSelectionParameters):
|
|
@@ -56258,7 +56254,7 @@ def _selectRevisionIds(drive, fileId, origUser, user, i, count, j, jcount, revis
|
|
|
56258
56254
|
count = 0
|
|
56259
56255
|
if revisionsEntity['time'][0] == 'before':
|
|
56260
56256
|
for revision in results:
|
|
56261
|
-
modifiedDateTime
|
|
56257
|
+
modifiedDateTime = iso8601.parse_date(revision['modifiedTime'])
|
|
56262
56258
|
if modifiedDateTime >= dateTime:
|
|
56263
56259
|
break
|
|
56264
56260
|
revisionIds.append(revision['id'])
|
|
@@ -56268,7 +56264,7 @@ def _selectRevisionIds(drive, fileId, origUser, user, i, count, j, jcount, revis
|
|
|
56268
56264
|
return revisionIds
|
|
56269
56265
|
# time: after
|
|
56270
56266
|
for revision in results:
|
|
56271
|
-
modifiedDateTime
|
|
56267
|
+
modifiedDateTime = iso8601.parse_date(revision['modifiedTime'])
|
|
56272
56268
|
if modifiedDateTime >= dateTime:
|
|
56273
56269
|
revisionIds.append(revision['id'])
|
|
56274
56270
|
count += 1
|
|
@@ -56280,7 +56276,7 @@ def _selectRevisionIds(drive, fileId, origUser, user, i, count, j, jcount, revis
|
|
|
56280
56276
|
endDateTime = revisionsEntity['range'][2]
|
|
56281
56277
|
count = 0
|
|
56282
56278
|
for revision in results:
|
|
56283
|
-
modifiedDateTime
|
|
56279
|
+
modifiedDateTime = iso8601.parse_date(revision['modifiedTime'])
|
|
56284
56280
|
if modifiedDateTime >= startDateTime:
|
|
56285
56281
|
if modifiedDateTime >= endDateTime:
|
|
56286
56282
|
break
|
|
@@ -56490,7 +56486,7 @@ def _selectRevisionResults(results, fileId, origUser, revisionsEntity, previewDe
|
|
|
56490
56486
|
count = 0
|
|
56491
56487
|
if revisionsEntity['time'][0] == 'before':
|
|
56492
56488
|
for revision in results:
|
|
56493
|
-
modifiedDateTime
|
|
56489
|
+
modifiedDateTime = iso8601.parse_date(revision['modifiedTime'])
|
|
56494
56490
|
if modifiedDateTime >= dateTime:
|
|
56495
56491
|
break
|
|
56496
56492
|
count += 1
|
|
@@ -56501,7 +56497,7 @@ def _selectRevisionResults(results, fileId, origUser, revisionsEntity, previewDe
|
|
|
56501
56497
|
return results[:count]
|
|
56502
56498
|
# time: after
|
|
56503
56499
|
for revision in results:
|
|
56504
|
-
modifiedDateTime
|
|
56500
|
+
modifiedDateTime = iso8601.parse_date(revision['modifiedTime'])
|
|
56505
56501
|
if modifiedDateTime >= dateTime:
|
|
56506
56502
|
break
|
|
56507
56503
|
count += 1
|
|
@@ -56518,7 +56514,7 @@ def _selectRevisionResults(results, fileId, origUser, revisionsEntity, previewDe
|
|
|
56518
56514
|
count = 0
|
|
56519
56515
|
selectedResults = []
|
|
56520
56516
|
for revision in results:
|
|
56521
|
-
modifiedDateTime
|
|
56517
|
+
modifiedDateTime = iso8601.parse_date(revision['modifiedTime'])
|
|
56522
56518
|
if modifiedDateTime >= startDateTime:
|
|
56523
56519
|
if modifiedDateTime >= endDateTime:
|
|
56524
56520
|
break
|
|
@@ -57056,7 +57052,7 @@ class PermissionMatch():
|
|
|
57056
57052
|
break
|
|
57057
57053
|
elif field in {'expirationstart', 'expirationend'}:
|
|
57058
57054
|
if 'expirationTime' in permission:
|
|
57059
|
-
expirationDateTime
|
|
57055
|
+
expirationDateTime = iso8601.parse_date(permission['expirationTime'])
|
|
57060
57056
|
if field == 'expirationstart':
|
|
57061
57057
|
if expirationDateTime < value:
|
|
57062
57058
|
break
|
|
@@ -148,13 +148,12 @@ def parse_date(datestring):
|
|
|
148
148
|
groups = m.groupdict()
|
|
149
149
|
tz = parse_timezone(groups)
|
|
150
150
|
try:
|
|
151
|
-
return
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
tz)
|
|
151
|
+
return datetime(year=int(groups['year']),
|
|
152
|
+
month=int(groups['month']),
|
|
153
|
+
day=int(groups['day']),
|
|
154
|
+
hour=int(groups['hour']),
|
|
155
|
+
minute=int(groups['minute']),
|
|
156
|
+
second=int(groups['second']),
|
|
157
|
+
tzinfo=tz)
|
|
159
158
|
except Exception as e:
|
|
160
159
|
raise ParseError(e)
|
|
@@ -33,7 +33,7 @@ datas += [('gam/contactdelegation-v1.json', '.')]
|
|
|
33
33
|
datas += [('gam/datastudio-v1.json', '.')]
|
|
34
34
|
datas += [('gam/meet-v2beta.json', '.')]
|
|
35
35
|
datas += [('gam/serviceaccountlookup-v1.json', '.')]
|
|
36
|
-
datas += [('cacerts.pem', '.')]
|
|
36
|
+
#datas += [('cacerts.pem', '.')]
|
|
37
37
|
hiddenimports = [
|
|
38
38
|
'gam.gamlib.yubikey',
|
|
39
39
|
]
|
|
@@ -49,7 +49,7 @@ a = Analysis(
|
|
|
49
49
|
binaries=[],
|
|
50
50
|
datas=datas,
|
|
51
51
|
hiddenimports=hiddenimports,
|
|
52
|
-
hookspath=[],
|
|
52
|
+
hookspath=['tools/hooks'],
|
|
53
53
|
hooksconfig={},
|
|
54
54
|
runtime_hooks=runtime_hooks,
|
|
55
55
|
excludes=excludes,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# ------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) 2021 PyInstaller Development Team.
|
|
3
|
+
#
|
|
4
|
+
# This file is distributed under the terms of the GNU General Public
|
|
5
|
+
# License (version 2.0 or later).
|
|
6
|
+
#
|
|
7
|
+
# The full license is available in LICENSE, distributed with
|
|
8
|
+
# this software.
|
|
9
|
+
#
|
|
10
|
+
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
11
|
+
# ------------------------------------------------------------------
|
|
12
|
+
|
|
13
|
+
from PyInstaller.utils.hooks import copy_metadata
|
|
14
|
+
from PyInstaller.utils.hooks import collect_data_files
|
|
15
|
+
|
|
16
|
+
# googleapiclient.model queries the library version via
|
|
17
|
+
# pkg_resources.get_distribution("google-api-python-client").version,
|
|
18
|
+
# so we need to collect that package's metadata
|
|
19
|
+
datas = copy_metadata('google_api_python_client')
|
|
20
|
+
# we don't want these cached discovery files and they make the binary HUUUGEEEE
|
|
21
|
+
#datas += collect_data_files('googleapiclient.discovery_cache', excludes=['*.txt', '**/__pycache__'])
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# ------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) 2020 PyInstaller Development Team.
|
|
3
|
+
#
|
|
4
|
+
# This file is distributed under the terms of the GNU General Public
|
|
5
|
+
# License (version 2.0 or later).
|
|
6
|
+
#
|
|
7
|
+
# The full license is available in LICENSE, distributed with
|
|
8
|
+
# this software.
|
|
9
|
+
#
|
|
10
|
+
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
11
|
+
# ------------------------------------------------------------------
|
|
12
|
+
|
|
13
|
+
# This is needed to bundle cacerts.txt that comes with httplib2 module
|
|
14
|
+
|
|
15
|
+
# WE DON'T NEED httplib2/cacerts.txt since we get our own
|
|
16
|
+
|
|
17
|
+
#from PyInstaller.utils.hooks import collect_data_files
|
|
18
|
+
|
|
19
|
+
#datas = collect_data_files('httplib2')
|
|
@@ -326,7 +326,7 @@ Use an existing project to create and download two files: `client_secrets.json`
|
|
|
326
326
|
Use an existing uninitialized/uncredentialed project and configure it to be a GAM project; this typically used when
|
|
327
327
|
the GCP administrators have created a basic project because project creation is not available for most users.
|
|
328
328
|
|
|
329
|
-
See Jay's notes about how to do this: https://github.com/GAM-team/GAM/wiki/GAM-with
|
|
329
|
+
See Jay's notes about how to do this: https://github.com/GAM-team/GAM/wiki/GAM-with-minimal-GCP-rights
|
|
330
330
|
|
|
331
331
|
```
|
|
332
332
|
gam use project [<EmailAddress>] [project <ProjectID>]
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
| Gemini Education Premium | 1010470005 | geminiedupremium |
|
|
64
64
|
| Gemini Enterprise | 1010470001 | geminient | duetai |
|
|
65
65
|
| Google AI Pro for Education | 1010470004 | gaiproedu |
|
|
66
|
-
| Google AI Ultra for Business | 1010470008 | geminiultra
|
|
66
|
+
| Google AI Ultra for Business | 1010470008 | geminiultra |
|
|
67
67
|
| Google Apps Message Security | Google-Apps-For-Postini | postini |
|
|
68
68
|
| Google Chrome Device Management | Google-Chrome-Device-Management | cdm |
|
|
69
69
|
| Google Drive Storage 16TB | Google-Drive-storage-16TB | 16tb |
|