Added commands to show the number of CrOS devices or Users in an entity.

Updated `gam create project` to prompt user to mark `GAM Project Creation` as a trusted app.
This commit is contained in:
Ross Scroggs
2023-08-31 13:27:49 -07:00
parent c6de3de370
commit cfb44548ab
13 changed files with 98 additions and 19 deletions

View File

@ -231,6 +231,13 @@ gam create gcpfolder [admin <EmailAddress] folder <String>
Create a new project to create and download two files: `client_secrets.json` for the Client and `oauth2service.json` for the Service Account. Create a new project to create and download two files: `client_secrets.json` for the Client and `oauth2service.json` for the Service Account.
On-screen instructions lead you through the process. On-screen instructions lead you through the process.
An existing project, `GAM Project Creation`, is used to create your GAM project. The initial instructions tell you how to
enable this project as a trusted app as your workspace may not allow untrusted third-party apps. You can skip these steps
if you know that untrusted third-party apps are allowed.
The final instructions tell you how to enable your new GAM project as a trusted app as your workspace may not allow untrusted third-party apps.
You can skip these steps if you know that untrusted third-party apps are allowed.
### Default values ### Default values
* `<AppName>` - "GAM" * `<AppName>` - "GAM"
* `<ProjectID>` - "gam-project-abc-def-jki" where "abc-def-ghi" are randomly generated * `<ProjectID>` - "gam-project-abc-def-jki" where "abc-def-ghi" are randomly generated

View File

@ -466,7 +466,7 @@ No events are deleted unless you specify the `doit` option; omit `doit` to verif
When events are deleted from a calendar, they are moved to the calendar's trash and are only permanently deleted (purged) after 30 days. When events are deleted from a calendar, they are moved to the calendar's trash and are only permanently deleted (purged) after 30 days.
Following a suggestion here (https://stackoverflow.com/questions/41043053/how-to-empty-calendar-trash-via-google-services) you can permanently delete Following a suggestion here (https://stackoverflow.com/questions/41043053/how-to-empty-calendar-trash-via-google-services) you can permanently delete
calendar events. This is achieved by creating a temporary calendar, deleting the events, moving the deleted events to the temporary calendar calendar events with `purge events`. This is achieved by creating a temporary calendar, deleting the events, moving the deleted events to the temporary calendar
and then deleting the temporary calendar. and then deleting the temporary calendar.
## Delete all calendar events ## Delete all calendar events

View File

@ -23,6 +23,7 @@
- [Print a header row and fields for selected CrOS devices](#print-a-header-row-and-fields-for-selected-cros-devices) - [Print a header row and fields for selected CrOS devices](#print-a-header-row-and-fields-for-selected-cros-devices)
- [Print a header row and fields for specified CrOS devices](#print-a-header-row-and-fields-for-specified-cros-devices) - [Print a header row and fields for specified CrOS devices](#print-a-header-row-and-fields-for-specified-cros-devices)
- [Display Examples](#display-examples) - [Display Examples](#display-examples)
- [Display CrOS device count](#display-cros-device-count)
- [Print ChromeOS device activity](#print-chromeos-device-activity) - [Print ChromeOS device activity](#print-chromeos-device-activity)
- [Print a header row and activity for selected CrOS devices](#print-a-header-row-and-activity-for-selected-cros-devices) - [Print a header row and activity for selected CrOS devices](#print-a-header-row-and-activity-for-selected-cros-devices)
- [Print a header row and activity for specified CrOS devices](#print-a-header-row-and-activity-for-specified-cros-devices) - [Print a header row and activity for specified CrOS devices](#print-a-header-row-and-activity-for-specified-cros-devices)
@ -672,6 +673,12 @@ Print information about CrOS devices synced between 45 days ago and 30 days ago:
gam print cros query "sync:#querytime1#..#querytime2#" querytime1 -45d querytime2 -30d gam print cros query "sync:#querytime1#..#querytime2#" querytime1 -45d querytime2 -30d
``` ```
## Display CrOS device count
Display the number of CrOS devices in an entity.
```
gam <CrOSTypeEntity> show count
```
## Print ChromeOS device activity ## Print ChromeOS device activity
### Print a header row and activity for selected CrOS devices ### Print a header row and activity for selected CrOS devices

View File

@ -10,6 +10,16 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation. See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation.
### 6.63.10
Added commands to show the number of CrOS devices or Users in an entity.
```
gam <CrOSTypeEntity> show count
gam <UserTypeEntity> show count
```
Updated `gam create project` to prompt user to mark `GAM Project Creation` as a trusted app.
### 6.63.09 ### 6.63.09
Updated `gam create teamdrive` to handle the following error: Updated `gam create teamdrive` to handle the following error:

View File

@ -330,7 +330,7 @@ writes the credentials into the file oauth2.txt.
admin@server:/Users/admin/bin/gamadv-xtd3$ rm -f /Users/admin/GAMConfig/oauth2.txt admin@server:/Users/admin/bin/gamadv-xtd3$ rm -f /Users/admin/GAMConfig/oauth2.txt
admin@server:/Users/admin/bin/gamadv-xtd3$ ./gam version admin@server:/Users/admin/bin/gamadv-xtd3$ ./gam version
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
GAMADV-XTD3 6.63.09 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource GAMADV-XTD3 6.63.10 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
Ross Scroggs <ross.scroggs@gmail.com> Ross Scroggs <ross.scroggs@gmail.com>
Python 3.10.8 64-bit final Python 3.10.8 64-bit final
MacOS High Sierra 10.13.6 x86_64 MacOS High Sierra 10.13.6 x86_64
@ -972,7 +972,7 @@ writes the credentials into the file oauth2.txt.
C:\GAMADV-XTD3>del C:\GAMConfig\oauth2.txt C:\GAMADV-XTD3>del C:\GAMConfig\oauth2.txt
C:\GAMADV-XTD3>gam version C:\GAMADV-XTD3>gam version
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
GAMADV-XTD3 6.63.09 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource GAMADV-XTD3 6.63.10 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
Ross Scroggs <ross.scroggs@gmail.com> Ross Scroggs <ross.scroggs@gmail.com>
Python 3.11.5 64-bit final Python 3.11.5 64-bit final
Windows-10-10.0.17134 AMD64 Windows-10-10.0.17134 AMD64

View File

@ -548,7 +548,7 @@ No events are deleted unless you specify the `doit` option; omit `doit` to verif
When events are deleted from a calendar, they are moved to the calendar's trash and are only permanently deleted (purged) after 30 days. When events are deleted from a calendar, they are moved to the calendar's trash and are only permanently deleted (purged) after 30 days.
Following a suggestion here (https://stackoverflow.com/questions/41043053/how-to-empty-calendar-trash-via-google-services) you can permanently delete Following a suggestion here (https://stackoverflow.com/questions/41043053/how-to-empty-calendar-trash-via-google-services) you can permanently delete
calendar events. This is achieved by creating a temporary calendar, deleting the events, moving the deleted events to the temporary calendar calendar events with `purge events`. This is achieved by creating a temporary calendar, deleting the events, moving the deleted events to the temporary calendar
and then deleting the temporary calendar. and then deleting the temporary calendar.
## Delete all calendar events ## Delete all calendar events

View File

@ -38,6 +38,7 @@
- [Print domain counts for users in a specific domain and/or selected by a query](#print-domain-counts-for-users-in-a-specific-domain-and-or-selected-by-a-query) - [Print domain counts for users in a specific domain and/or selected by a query](#print-domain-counts-for-users-in-a-specific-domain-and-or-selected-by-a-query)
- [Print domain counts for users specified by `<UserTypeEntity>`](#print-domain-counts-for-users-specified-by-usertypeentity) - [Print domain counts for users specified by `<UserTypeEntity>`](#print-domain-counts-for-users-specified-by-usertypeentity)
- [Print user list](#print-user-list) - [Print user list](#print-user-list)
- [Display user count](#display-user-count)
## API documentation ## API documentation
* https://developers.google.com/admin-sdk/directory/reference/rest/v1/users * https://developers.google.com/admin-sdk/directory/reference/rest/v1/users
@ -1087,7 +1088,7 @@ When using the `formatjson` option, double quotes are used extensively in the da
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output. The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used. `quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
### Print user list ## Print user list
Print a CSV file with headers `title,count,users` that displays the list of users in `<UserTypeEntity>` in a single row. Print a CSV file with headers `title,count,users` that displays the list of users in `<UserTypeEntity>` in a single row.
``` ```
gam <UserTypeEntity> print userlist [todrive <ToDriveAttribute>*] gam <UserTypeEntity> print userlist [todrive <ToDriveAttribute>*]
@ -1178,3 +1179,10 @@ Got 4 Users directly in the Organizational Unit for /Test
$ more UsersList.csv $ more UsersList.csv
["testuser1@domain.org", "testuser2@domain.org", "testuser3@domain.org", "testuser4@domain.org"] ["testuser1@domain.org", "testuser2@domain.org", "testuser3@domain.org", "testuser4@domain.org"]
``` ```
## Display user count
Display the number of users in an entity.
```
gam <UserTypeEntity> show count
```

View File

@ -3,7 +3,7 @@
Print the current version of Gam with details Print the current version of Gam with details
``` ```
gam version gam version
GAMADV-XTD3 6.63.09 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource GAMADV-XTD3 6.63.10 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
Ross Scroggs <ross.scroggs@gmail.com> Ross Scroggs <ross.scroggs@gmail.com>
Python 3.11.5 64-bit final Python 3.11.5 64-bit final
MacOS Monterey 12.6.6 x86_64 MacOS Monterey 12.6.6 x86_64
@ -15,7 +15,7 @@ Time: 2023-06-02T21:10:00-07:00
Print the current version of Gam with details and time offset information Print the current version of Gam with details and time offset information
``` ```
gam version timeoffset gam version timeoffset
GAMADV-XTD3 6.63.09 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource GAMADV-XTD3 6.63.10 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
Ross Scroggs <ross.scroggs@gmail.com> Ross Scroggs <ross.scroggs@gmail.com>
Python 3.11.5 64-bit final Python 3.11.5 64-bit final
MacOS Monterey 12.6.6 x86_64 MacOS Monterey 12.6.6 x86_64
@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second
Print the current version of Gam with extended details and SSL information Print the current version of Gam with extended details and SSL information
``` ```
gam version extended gam version extended
GAMADV-XTD3 6.63.09 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource GAMADV-XTD3 6.63.10 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
Ross Scroggs <ross.scroggs@gmail.com> Ross Scroggs <ross.scroggs@gmail.com>
Python 3.11.5 64-bit final Python 3.11.5 64-bit final
MacOS Monterey 12.6.6 x86_64 MacOS Monterey 12.6.6 x86_64
@ -64,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64
Path: /Users/Admin/bin/gamadv-xtd3 Path: /Users/Admin/bin/gamadv-xtd3
Version Check: Version Check:
Current: 5.35.08 Current: 5.35.08
Latest: 6.63.09 Latest: 6.63.10
echo $? echo $?
1 1
``` ```
@ -72,7 +72,7 @@ echo $?
Print the current version number without details Print the current version number without details
``` ```
gam version simple gam version simple
6.63.09 6.63.10
``` ```
In Linux/MacOS you can do: In Linux/MacOS you can do:
``` ```
@ -82,7 +82,7 @@ echo $VER
Print the current version of Gam and address of this Wiki Print the current version of Gam and address of this Wiki
``` ```
gam help gam help
GAM 6.63.09 - https://github.com/taers232c/GAMADV-XTD3 GAM 6.63.10 - https://github.com/taers232c/GAMADV-XTD3
Ross Scroggs <ross.scroggs@gmail.com> Ross Scroggs <ross.scroggs@gmail.com>
Python 3.11.5 64-bit final Python 3.11.5 64-bit final
MacOS Monterey 12.6.6 x86_64 MacOS Monterey 12.6.6 x86_64

View File

@ -2295,6 +2295,10 @@ Print no header row and deviceId for specified CrOS devices.
gam <CrOSTypeEntity> print gam <CrOSTypeEntity> print
gam <CrOSTypeEntity> print cros gam <CrOSTypeEntity> print cros
Show count of CrOS devices
gam <CrOSTypeEntity> show count
Print activity for selected CrOS devices; use these options to select CrOS devices: Print activity for selected CrOS devices; use these options to select CrOS devices:
[(query <QueryCrOS>)|(queries <QueryCrOSList>) [querytime.* <Time>] [(query <QueryCrOS>)|(queries <QueryCrOSList>) [querytime.* <Time>]
[(limittoou|cros_ou <OrgUnitItem>)|(cros_ou_and_children <OrgUnitItem>)| [(limittoou|cros_ou <OrgUnitItem>)|(cros_ou_and_children <OrgUnitItem>)|
@ -5331,6 +5335,10 @@ gam <UserTypeEntity> print userlist [todrive <ToDriveAttribute>*]
[title <String>] [title <String>]
[delimiter <Character>] [formatjson] [quotechar <Character>] [delimiter <Character>] [formatjson] [quotechar <Character>]
Show count of users
gam <UserTypeEntity> show count
# Users - Application Specific Passwords/backup Codes # Users - Application Specific Passwords/backup Codes
gam <UserTypeEntity> delete asps|applicationspecificpasswords all|<ASPIDList> gam <UserTypeEntity> delete asps|applicationspecificpasswords all|<ASPIDList>

View File

@ -2,6 +2,16 @@
Merged GAM-Team version Merged GAM-Team version
6.63.10
Added commands to show the number of CrOS devices or Users in an entity.
```
gam <CrOSTypeEntity> show count
gam <UserTypeEntity> show count
```
Updated `gam create project` to prompt user to mark `GAM Project Creation` as a trusted app.
6.63.09 6.63.09
Updated `gam create teamdrive` to handle the following error: Updated `gam create teamdrive` to handle the following error:

View File

@ -191,6 +191,8 @@ GAM_USER_AGENT = (f'{GAM} {__version__} - {GAM_URL} / '
GAM_RELEASES = f'https://github.com/{GIT_USER}/{GAM}/releases' GAM_RELEASES = f'https://github.com/{GIT_USER}/{GAM}/releases'
GAM_WIKI = f'https://github.com/{GIT_USER}/{GAM}/wiki' GAM_WIKI = f'https://github.com/{GIT_USER}/{GAM}/wiki'
GAM_LATEST_RELEASE = f'https://api.github.com/repos/{GIT_USER}/{GAM}/releases/latest' GAM_LATEST_RELEASE = f'https://api.github.com/repos/{GIT_USER}/{GAM}/releases/latest'
GAM_PROJECT_CREATION = 'GAM Project Creation'
GAM_PROJECT_CREATION_CLIENT_ID = '297408095146-fug707qsjv4ikron0hugpevbrjhkmsk7.apps.googleusercontent.com'
TRUE = 'true' TRUE = 'true'
FALSE = 'false' FALSE = 'false'
@ -10027,6 +10029,20 @@ def doListCrOS(entityList):
def doListUser(entityList): def doListUser(entityList):
_doList(entityList, Cmd.ENTITY_USERS) _doList(entityList, Cmd.ENTITY_USERS)
def _showCount(entityList, entityType):
buildGAPIObject(API.DIRECTORY)
checkForExtraneousArguments()
_, count, entityList = getEntityArgument(entityList)
actionPerformedNumItems(count, entityType)
# gam <CrOSTypeEntity> show count
def showCountCrOS(entityList):
_showCount(entityList, Ent.CHROME_DEVICE)
# gam <UserTypeEntity> show count
def showCountUser(entityList):
_showCount(entityList, Ent.USER)
VALIDEMAIL_PATTERN = re.compile(r'^[^@]+@[^@]+\.[^@]+$') VALIDEMAIL_PATTERN = re.compile(r'^[^@]+@[^@]+\.[^@]+$')
def _getValidateLoginHint(login_hint, projectId=None): def _getValidateLoginHint(login_hint, projectId=None):
@ -10717,7 +10733,7 @@ def doOAuthExport():
def getCRMService(login_hint): def getCRMService(login_hint):
scopes = [API.CLOUD_PLATFORM_SCOPE] scopes = [API.CLOUD_PLATFORM_SCOPE]
client_id = '297408095146-fug707qsjv4ikron0hugpevbrjhkmsk7.apps.googleusercontent.com' client_id = GAM_PROJECT_CREATION_CLIENT_ID
client_secret = 'qM3dP8f_4qedwzWQE1VR4zzU' client_secret = 'qM3dP8f_4qedwzWQE1VR4zzU'
credentials = Credentials.from_client_secrets( credentials = Credentials.from_client_secrets(
client_id, client_id,
@ -10933,7 +10949,7 @@ def _createClientSecretsOauth2service(httpObj, login_hint, appInfo, projectInfo,
}}''' }}'''
writeFile(GC.Values[GC.CLIENT_SECRETS_JSON], cs_data, continueOnError=False) writeFile(GC.Values[GC.CLIENT_SECRETS_JSON], cs_data, continueOnError=False)
sys.stdout.write(Msg.GO_BACK_TO_YOUR_BROWSER_AND_CLICK_OK_TO_CLOSE_THE_OAUTH_CLIENT_POPUP) sys.stdout.write(Msg.GO_BACK_TO_YOUR_BROWSER_AND_CLICK_OK_TO_CLOSE_THE_OAUTH_CLIENT_POPUP)
sys.stdout.write(Msg.TRUST_GAM_CLIENT_ID.format(client_id)) sys.stdout.write(Msg.TRUST_GAM_CLIENT_ID.format(GAM, client_id))
readStdin('') readStdin('')
sys.stdout.write(Msg.YOUR_GAM_PROJECT_IS_CREATED_AND_READY_TO_USE) sys.stdout.write(Msg.YOUR_GAM_PROJECT_IS_CREATED_AND_READY_TO_USE)
@ -11238,6 +11254,8 @@ def doCreateGCPFolder():
# [saname <ServiceAccountName>] [sadisplayname <ServiceAccountDisplayName>>] [sadescription <ServiceAccountDescription>] # [saname <ServiceAccountName>] [sadisplayname <ServiceAccountDisplayName>>] [sadescription <ServiceAccountDescription>]
def doCreateProject(): def doCreateProject():
_checkForExistingProjectFiles([GC.Values[GC.OAUTH2SERVICE_JSON], GC.Values[GC.CLIENT_SECRETS_JSON]]) _checkForExistingProjectFiles([GC.Values[GC.OAUTH2SERVICE_JSON], GC.Values[GC.CLIENT_SECRETS_JSON]])
sys.stdout.write(Msg.TRUST_GAM_CLIENT_ID.format(GAM_PROJECT_CREATION, GAM_PROJECT_CREATION_CLIENT_ID))
readStdin('')
crm, httpObj, login_hint, appInfo, projectInfo, svcAcctInfo = _getLoginHintProjectInfo(True) crm, httpObj, login_hint, appInfo, projectInfo, svcAcctInfo = _getLoginHintProjectInfo(True)
login_domain = getEmailAddressDomain(login_hint) login_domain = getEmailAddressDomain(login_hint)
body = {'projectId': projectInfo['projectId'], 'displayName': projectInfo['name']} body = {'projectId': projectInfo['projectId'], 'displayName': projectInfo['name']}
@ -70415,10 +70433,16 @@ CROS_COMMANDS_WITH_OBJECTS = {
{Cmd.ARG_DEVICEFILE: getCrOSDeviceFiles, {Cmd.ARG_DEVICEFILE: getCrOSDeviceFiles,
} }
), ),
'show':
(Act.SHOW,
{Cmd.ARG_COUNT: showCountCrOS,
}
),
} }
CROS_COMMANDS_OBJ_ALIASES = { CROS_COMMANDS_OBJ_ALIASES = {
Cmd.ARG_DEVICEFILES: Cmd.ARG_DEVICEFILE, Cmd.ARG_DEVICEFILES: Cmd.ARG_DEVICEFILE,
Cmd.ARG_COUNTS: Cmd.ARG_COUNT,
} }
# <UserTypeEntity> commands # <UserTypeEntity> commands
@ -70807,6 +70831,7 @@ USER_COMMANDS_WITH_OBJECTS = {
Cmd.ARG_CLASSROOMINVITATION: printShowClassroomInvitations, Cmd.ARG_CLASSROOMINVITATION: printShowClassroomInvitations,
Cmd.ARG_CLASSROOMPROFILE: printShowClassroomProfile, Cmd.ARG_CLASSROOMPROFILE: printShowClassroomProfile,
Cmd.ARG_CONTACTDELEGATE: printShowContactDelegates, Cmd.ARG_CONTACTDELEGATE: printShowContactDelegates,
Cmd.ARG_COUNT: showCountUser,
Cmd.ARG_DATASTUDIOASSET: printShowDataStudioAssets, Cmd.ARG_DATASTUDIOASSET: printShowDataStudioAssets,
Cmd.ARG_DATASTUDIOPERMISSION: printShowDataStudioPermissions, Cmd.ARG_DATASTUDIOPERMISSION: printShowDataStudioPermissions,
Cmd.ARG_DELEGATE: printShowDelegates, Cmd.ARG_DELEGATE: printShowDelegates,
@ -71006,6 +71031,7 @@ USER_COMMANDS_OBJ_ALIASES = {
Cmd.ARG_CONTACTGROUPS: Cmd.ARG_PEOPLECONTACTGROUP, Cmd.ARG_CONTACTGROUPS: Cmd.ARG_PEOPLECONTACTGROUP,
Cmd.ARG_CONTACTPHOTO: Cmd.ARG_PEOPLECONTACTPHOTO, Cmd.ARG_CONTACTPHOTO: Cmd.ARG_PEOPLECONTACTPHOTO,
Cmd.ARG_CONTACTPHOTOS: Cmd.ARG_PEOPLECONTACTPHOTO, Cmd.ARG_CONTACTPHOTOS: Cmd.ARG_PEOPLECONTACTPHOTO,
Cmd.ARG_COUNTS: Cmd.ARG_COUNT,
Cmd.ARG_DATASTUDIOASSETS: Cmd.ARG_DATASTUDIOASSET, Cmd.ARG_DATASTUDIOASSETS: Cmd.ARG_DATASTUDIOASSET,
Cmd.ARG_DATASTUDIOPERMISSIONS: Cmd.ARG_DATASTUDIOPERMISSION, Cmd.ARG_DATASTUDIOPERMISSIONS: Cmd.ARG_DATASTUDIOPERMISSION,
Cmd.ARG_DELEGATES: Cmd.ARG_DELEGATE, Cmd.ARG_DELEGATES: Cmd.ARG_DELEGATE,

View File

@ -503,6 +503,8 @@ class GamCLArgs():
ARG_CONTACTGROUPS = 'contactgroups' ARG_CONTACTGROUPS = 'contactgroups'
ARG_CONTACTPHOTO = 'contactphoto' ARG_CONTACTPHOTO = 'contactphoto'
ARG_CONTACTPHOTOS = 'contactphotos' ARG_CONTACTPHOTOS = 'contactphotos'
ARG_COUNT = 'count'
ARG_COUNTS = 'counts'
ARG_COURSE = 'course' ARG_COURSE = 'course'
ARG_COURSES = 'courses' ARG_COURSES = 'courses'
ARG_COURSEANNOUNCEMENTS = 'courseannouncements' ARG_COURSEANNOUNCEMENTS = 'courseannouncements'

View File

@ -72,7 +72,7 @@ Is not a valid Client Secret.
Please make sure you are following the directions exactly and that there are no extra spaces in your Client Secret. Please make sure you are following the directions exactly and that there are no extra spaces in your Client Secret.
''' '''
TRUST_GAM_CLIENT_ID = ''' TRUST_GAM_CLIENT_ID = '''
Now it's important to mark the GAM Client ID as trusted by your Workspace instance. It's important to mark the {0} Client ID as trusted by your Workspace instance.
Please go to: Please go to:
@ -81,13 +81,14 @@ Please go to:
1. Click on: Add app > OAuth App Name Or Client ID. 1. Click on: Add app > OAuth App Name Or Client ID.
2. Enter the following Client ID value: 2. Enter the following Client ID value:
{0} {1}
3. Press Search, select the GAM app, press Select, check the box and press Select. 3. Press Search, select the {0} app, press Select, check the box and press Select.
4. Keep the default scope or select a preferred scope that includes your GAM admin. 4. Keep the default scope or select a preferred scope that includes your GAM admin.
5. Press Continue 5. Press Continue
6. Select Trusted radio button, press Continue and Finish. 6. Select Trusted radio button, press Continue and Finish.
7. Press enter once trust is complete.' 7. Press Confirm if Confirm parental consent pops up
8. Press enter here on the terminal once trust is complete.
''' '''
YOUR_GAM_PROJECT_IS_CREATED_AND_READY_TO_USE = 'That\'s it! Your GAM Project is created and ready to use.\n' YOUR_GAM_PROJECT_IS_CREATED_AND_READY_TO_USE = 'That\'s it! Your GAM Project is created and ready to use.\n'