mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-04 21:01:36 +00:00
Merge branch 'master' of https://github.com/jay0lee/GAM
This commit is contained in:
@@ -85,8 +85,10 @@ If an item contains spaces, it should be surrounded by ".
|
|||||||
gau|unlimited|gsuitebusiness|Google-Apps-Unlimited|
|
gau|unlimited|gsuitebusiness|Google-Apps-Unlimited|
|
||||||
gae|enterprise|gsuiteenterprise|1010020020|
|
gae|enterprise|gsuiteenterprise|1010020020|
|
||||||
gsefe|e4e|gsuiteenterpriseeducation|1010310002|
|
gsefe|e4e|gsuiteenterpriseeducation|1010310002|
|
||||||
|
gsefes|e4es|gsuiteenterpriseeducationstudent|1010310003|
|
||||||
chrome|cdm|googlechromedevicemanagement|Google-Chrome-Device-Management|
|
chrome|cdm|googlechromedevicemanagement|Google-Chrome-Device-Management|
|
||||||
coordinate|googlecoordinate|Google-Coordinate|
|
coordinate|googlecoordinate|Google-Coordinate|
|
||||||
|
d4e|driveenterprise|drive4enterprise|
|
||||||
drive20gb|20gb|googledrivestorage20gb|Google-Drive-storage-20GB|
|
drive20gb|20gb|googledrivestorage20gb|Google-Drive-storage-20GB|
|
||||||
drive50gb|50gb|googledrivestorage50gb|Google-Drive-storage-50GB|
|
drive50gb|50gb|googledrivestorage50gb|Google-Drive-storage-50GB|
|
||||||
drive200gb|200gb|googledrivestorage200gb|Google-Drive-storage-200GB|
|
drive200gb|200gb|googledrivestorage200gb|Google-Drive-storage-200GB|
|
||||||
@@ -353,43 +355,58 @@ If an item contains spaces, it should be surrounded by ".
|
|||||||
allowgooglecommunication|
|
allowgooglecommunication|
|
||||||
allowwebposting|
|
allowwebposting|
|
||||||
archiveonly|
|
archiveonly|
|
||||||
collaborative|
|
customfootertext|
|
||||||
customreplyto|
|
customreplyto|
|
||||||
|
customrolesenabledforsettingstobemerged|
|
||||||
defaultmessagedenynotificationtext|
|
defaultmessagedenynotificationtext|
|
||||||
description|
|
description|
|
||||||
directmemberscount|
|
directmemberscount|
|
||||||
email|
|
email|
|
||||||
|
enablecollaborativeinbox|collaborative|
|
||||||
favoriterepliesontop|
|
favoriterepliesontop|
|
||||||
id|
|
id|
|
||||||
|
includecustomfooter|
|
||||||
includeinglobaladdresslist|gal|
|
includeinglobaladdresslist|gal|
|
||||||
isarchived|
|
isarchived|
|
||||||
maxmessagebytes|
|
maxmessagebytes|
|
||||||
memberscanpostasthegroup|
|
memberscanpostasthegroup|
|
||||||
messagedisplayfont|
|
messagedisplayfont|
|
||||||
messagemoderationlevel|
|
messagemoderationlevel|
|
||||||
name
|
name|
|
||||||
primarylanguage|
|
primarylanguage|
|
||||||
replyto|
|
replyto|
|
||||||
sendmessagedenynotification|
|
sendmessagedenynotification|
|
||||||
showingroupdirectory|
|
showingroupdirectory|
|
||||||
spammoderationlevel|
|
spammoderationlevel|
|
||||||
whocanadd|
|
|
||||||
whocanaddreferences|
|
whocanaddreferences|
|
||||||
|
whocanadd|
|
||||||
|
whocanapprovemessages|
|
||||||
whocanassigntopics|
|
whocanassigntopics|
|
||||||
|
whocanassistcontent|
|
||||||
whocancontactowner|
|
whocancontactowner|
|
||||||
|
whocandeleteanypost|
|
||||||
|
whocandeletetopics|
|
||||||
|
whocandiscovergroup|
|
||||||
whocanenterfreeformtags|
|
whocanenterfreeformtags|
|
||||||
|
whocanhideabuse|
|
||||||
whocaninvite|
|
whocaninvite|
|
||||||
whocanjoin|
|
whocanjoin|
|
||||||
whocanleavegroup|
|
whocanleavegroup|
|
||||||
|
whocanlocktopics|
|
||||||
|
whocanmaketopicssticky|
|
||||||
whocanmarkduplicate|
|
whocanmarkduplicate|
|
||||||
whocanmarkfavoritereplyonanytopic|
|
whocanmarkfavoritereplyonanytopic|
|
||||||
whocanmarkfavoritereplyonowntopic|
|
whocanmarkfavoritereplyonowntopic|
|
||||||
whocanmarknoresponseneeded|
|
whocanmarknoresponseneeded|
|
||||||
|
whocanmoderatecontent|
|
||||||
whocanmodifytagsandcategories|
|
whocanmodifytagsandcategories|
|
||||||
|
whocanmovetopicsin|
|
||||||
|
whocanmovetopicsout|
|
||||||
|
whocanpostannouncements|
|
||||||
whocanpostmessage|
|
whocanpostmessage|
|
||||||
whocantaketopics|
|
whocantaketopics|
|
||||||
whocanunassigntopic|
|
whocanunassigntopic|
|
||||||
whocanunmarkfavoritereplyonanytopic
|
whocanunmarkfavoritereplyonanytopic|
|
||||||
whocanviewgroup|
|
whocanviewgroup|
|
||||||
whocanviewmembership
|
whocanviewmembership
|
||||||
|
|
||||||
@@ -661,49 +678,78 @@ Specify a collection of Users by directly specifying them or by specifiying item
|
|||||||
(noreminders|(reminder <Number> email|popup|sms))|
|
(noreminders|(reminder <Number> email|popup|sms))|
|
||||||
(colorindex|colorid <EventColorIndex>)
|
(colorindex|colorid <EventColorIndex>)
|
||||||
|
|
||||||
<GroupAttributes> ::=
|
<GroupSettingsAttribute> ::=
|
||||||
(allowexternalmembers <Boolean>)|
|
(allowexternalmembers <Boolean>)|
|
||||||
(allowgooglecommunication <Boolean>)|
|
|
||||||
(allowwebposting <Boolean>)|
|
(allowwebposting <Boolean>)|
|
||||||
(archiveonly <Boolean>)|
|
(archiveonly <Boolean>)|
|
||||||
(collaborative (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
|
|
||||||
(customfootertext <String>)|
|
(customfootertext <String>)|
|
||||||
(customreplyto <EmailAddress>)|
|
(customreplyto <EmailAddress>)|
|
||||||
(defaultmessagedenynotificationtext <String>)|
|
(defaultmessagedenynotificationtext <String>)|
|
||||||
(description <String>)|
|
(description <String>)|
|
||||||
(favoriterepliesontop <Boolean>)|
|
(enablecollaborativeinbox|collaborative <Boolean>)|
|
||||||
(gal|includeInGlobalAddressList <Boolean>)|
|
(includeinglobaladdresslist|gal <Boolean>)|
|
||||||
(includecustomfooter <Boolean>)|
|
(includecustomfooter <Boolean>)|
|
||||||
(isarchived <Boolean>)|
|
(isarchived <Boolean>)|
|
||||||
(maxmessagebytes <ByteCount>)|
|
|
||||||
(memberscanpostasthegroup <Boolean>)|
|
(memberscanpostasthegroup <Boolean>)|
|
||||||
(messagedisplayfont DEFAULT_FONT|FIXED_WIDTH_FONT)|
|
(messagemoderationlevel moderate_all_messages|moderate_non_members|moderate_new_members|moderate_none)|
|
||||||
(messagemoderationlevel MODERATE_ALL_MESSAGES|MODERATE_NON_MEMBERS|MODERATE_NEW_MEMBERS|MODERATE_NONE)|
|
|
||||||
(name <String>)|
|
(name <String>)|
|
||||||
(primarylanguage <Language>)|
|
(primarylanguage <Language>)|
|
||||||
(replyto REPLY_TO_CUSTOM|REPLY_TO_SENDER|REPLY_TO_LIST|REPLY_TO_OWNER|REPLY_TO_IGNORE|REPLY_TO_MANAGERS)|
|
(replyto reply_to_custom|reply_to_sender|reply_to_list|reply_to_owner|reply_to_ignore|reply_to_managers)|
|
||||||
(sendmessagedenynotification <Boolean>)|
|
(sendmessagedenynotification <Boolean>)|
|
||||||
(showingroupdirectory <Boolean>)|
|
(spammoderationlevel allow|moderate|silently_moderate|reject)|
|
||||||
(spammoderationlevel ALLOW|MODERATE|SILENTLY_MODERATE|REJECT)|
|
(whocanadd all_members_can_add|all_managers_can_add|all_owners_can_add|none_can_add)|
|
||||||
(whocanadd ALL_MEMBERS_CAN_ADD|ALL_MANAGERS_CAN_ADD|NONE_CAN_ADD)|
|
(whocancontactowner anyone_can_contact|all_in_domain_can_contact|all_members_can_contact|all_managers_can_contact)|
|
||||||
(whocanaddreferences (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
|
(whocanjoin anyone_can_join|all_in_domain_can_join|invited_can_join|can_request_to_join)|
|
||||||
(whocanassigntopics (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
|
(whocanleavegroup all_members_can_leave|all_managers_can_leave|all_owners_can_leave|none_can_leave)|
|
||||||
(whocancontactowner ANYONE_CAN_CONTACT|ALL_IN_DOMAIN_CAN_CONTACT|ALL_MEMBERS_CAN_CONTACT|ALL_MANAGERS_CAN_CONTACT)|
|
(whocanpostmessage none_can_post|all_managers_can_post|all_members_can_post|all_owners_can_post|all_in_domain_can_post|anyone_can_post)|
|
||||||
(whocanenterfreeformtags (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
|
(whocanviewgroup anyone_can_view|all_in_domain_can_view|all_members_can_view|all_managers_can_view|all_owners_can_view)|
|
||||||
(whocaninvite ALL_MEMBERS_CAN_INVITE|ALL_MANAGERS_CAN_INVITE|NONE_CAN_INVITE)|
|
(whocanviewmembership all_in_domain_can_view|all_members_can_view|all_managers_can_view|all_owners_can_view)
|
||||||
(whocanjoin ANYONE_CAN_JOIN|ALL_IN_DOMAIN_CAN_JOIN|INVITED_CAN_JOIN|CAN_REQUEST_TO_JOIN)|
|
<GroupWhoCanDiscoverGroupAttribute> ::=
|
||||||
(whocanleavegroup ALL_MANAGERS_CAN_LEAVE|ALL_MEMBERS_CAN_LEAVE|NONE_CAN_LEAVE)|
|
(whocandiscovergroup allmemberscandiscover|allindomaincandiscover|anyonecandiscover)|
|
||||||
(whocanmarkduplicate (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
|
(showingroupdirectory <Boolean>)
|
||||||
(whocanmarkfavoritereplyonanytopic (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
|
<GroupWhoCanAssistContentAttribute> ::=
|
||||||
(whocanmarkfavoritereplyonowntopic (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
|
(whocanassistcontent all_members|owners_and_managers|managers_only|owners_only|none)|
|
||||||
(whocanmarknoresponseneeded (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
|
(whocanassigntopics all_members|owners_and_managers|managers_only|owners_only|none)|
|
||||||
(whocanmodifytagsandcategories (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
|
(whocanenterfreeformtags all_members|owners_and_managers|managers_only|owners_only|none)|
|
||||||
(whocanpostmessage NONE_CAN_POST|ALL_MANAGERS_CAN_POST|ALL_MEMBERS_CAN_POST|ALL_IN_DOMAIN_CAN_POST|ANYONE_CAN_POST)|
|
(whocanhideabuse all_members|owners_and_managers|managers_only|owners_only|none)|
|
||||||
(whocantaketopics (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
|
(whocanmaketopicssticky all_members|owners_and_managers|managers_only|owners_only|none)|
|
||||||
(whocanunassigntopic (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
|
(whocanmarkduplicate all_members|owners_and_managers|managers_only|owners_only|none)|
|
||||||
(whocanunmarkfavoritereplyonanytopic (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
|
(whocanmarkfavoritereplyonanytopic all_members|owners_and_managers|managers_only|owners_only|none)|
|
||||||
(whocanviewgroup ANYONE_CAN_VIEW|ALL_IN_DOMAIN_CAN_VIEW|ALL_MEMBERS_CAN_VIEW|ALL_MANAGERS_CAN_VIEW)|
|
(whocanmarknoresponseneeded all_members|owners_and_managers|managers_only|owners_only|none)|
|
||||||
(whocanviewmembership ALL_IN_DOMAIN_CAN_VIEW|ALL_MEMBERS_CAN_VIEW|ALL_MANAGERS_CAN_VIEW)
|
(whocanmodifytagsandcategories all_members|owners_and_managers|managers_only|owners_only|none)|
|
||||||
|
(whocantaketopics all_members|owners_and_managers|managers_only|owners_only|none)|
|
||||||
|
(whocanunassigntopic all_members|owners_and_managers|managers_only|owners_only|none)|
|
||||||
|
(whocanunmarkfavoritereplyonanytopic all_members|owners_and_managers|managers_only|owners_only|none)
|
||||||
|
<GroupWhoCanModerateContentAttribute> ::=
|
||||||
|
(whocanmoderatecontent all_members|owners_and_managers|owners_only|none)|
|
||||||
|
(whocanapprovemessages all_members|owners_and_managers|owners_only|none)|
|
||||||
|
(whocandeleteanypost all_members|owners_and_managers|owners_only|none)|
|
||||||
|
(whocandeletetopics all_members|owners_and_managers|owners_only|none)|
|
||||||
|
(whocanlocktopics all_members|owners_and_managers|owners_only|none)|
|
||||||
|
(whocanmovetopicsin all_members|owners_and_managers|owners_only|none)|
|
||||||
|
(whocanmovetopicsout all_members|owners_and_managers|owners_only|none)|
|
||||||
|
(whocanpostannouncements all_members|owners_and_managers|owners_only|none)
|
||||||
|
<GroupWhoCanModerateMembersAttribute> ::=
|
||||||
|
(whocanmoderatemembers all_members|owners_and_managers|owners_only|none)|
|
||||||
|
(whocanadd all_members_can_add|all_managers_can_add|none_can_add)|
|
||||||
|
(whocanapprovemembers all_members_can_approve|all_managers_can_approve|all_owners_can_approve|none_can_approve)|
|
||||||
|
(whocanbanusers all_members|owners_and_managers|owners_only|none)|
|
||||||
|
(whocaninvite all_members_can_invite|all_managers_can_invite|all_owners_can_invite|none_can_invite)|
|
||||||
|
(whocanmodifymembers all_members|owners_and_managers|owners_only|none)
|
||||||
|
<GroupDeprecatedAttribute> ::=
|
||||||
|
(allowgooglecommunication <Boolean>)|
|
||||||
|
(favoriterepliesontop <Boolean>)|
|
||||||
|
(maxmessagebytes <ByteCount>)|
|
||||||
|
(messagedisplayfont default_font|fixed_width_font)|
|
||||||
|
(whocanaddreferences all_members|owners_and_managers|managers_only|owners_only|none)|
|
||||||
|
(whocanmarkfavoritereplyonowntopic all_members|owners_and_managers|managers_only|owners_only|none)
|
||||||
|
<GroupAttribute> ::=
|
||||||
|
<GroupSettingsAttribute>|
|
||||||
|
<GroupWhoCanDiscoverGroupAttribute>|
|
||||||
|
<GroupWhoCanAssistContentAttribute>|
|
||||||
|
<GroupWhoCanModerateContentAttribute>|
|
||||||
|
<GroupWhoCanModerateMembersAttribute>|
|
||||||
|
<GroupDeprecatedAttribute>
|
||||||
|
|
||||||
<MobileAction> ::=
|
<MobileAction> ::=
|
||||||
admin_remote_wipe|wipe|admin_account_wipe|accountwipe|wipeaccount|approve|block|cancel_remote_wipe_then_activate|cancel_remote_wipe_then_block
|
admin_remote_wipe|wipe|admin_account_wipe|accountwipe|wipeaccount|approve|block|cancel_remote_wipe_then_activate|cancel_remote_wipe_then_block
|
||||||
@@ -877,9 +923,9 @@ gam update customer <CustomerAttributes>*
|
|||||||
gam info customer
|
gam info customer
|
||||||
|
|
||||||
<DataTransferService> ::=
|
<DataTransferService> ::=
|
||||||
calendar|
|
calendar|
|
||||||
googledrive|gdrive|drive|"drive and docs"|
|
googledrive|gdrive|drive|"drive and docs"|
|
||||||
gplus|googleplus|google+
|
gplus|googleplus|google+
|
||||||
<DataTransferServiceList> ::= "<DataTransferService>(,<DataTransferService>)*"
|
<DataTransferServiceList> ::= "<DataTransferService>(,<DataTransferService>)*"
|
||||||
|
|
||||||
gam create datatransfer|transfer <OldOwnerID> <DataTransferServiceList> <NewOwnerID> (<ParameterKey> <ParameterValue>)*
|
gam create datatransfer|transfer <OldOwnerID> <DataTransferServiceList> <NewOwnerID> (<ParameterKey> <ParameterValue>)*
|
||||||
@@ -1236,7 +1282,7 @@ gam <UserTypeEntity> pop|pop3 <Boolean> [for allmail|newmail|mailfromnowon|fromn
|
|||||||
gam <UserTypeEntity> show pop|pop3
|
gam <UserTypeEntity> show pop|pop3
|
||||||
|
|
||||||
gam <UserTypeEntity> [create|add] sendas <EmailAddress> <Name> [signature|sig <String>|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)*] [html] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
gam <UserTypeEntity> [create|add] sendas <EmailAddress> <Name> [signature|sig <String>|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)*] [html] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
||||||
[smtpmsa.host <SMTPHostName> smtpmsa.port 25|465|587 smtpmsa.username <UserName> smtpmsa.password <Password> [smtpmsa.securitymode none|ssl|starttls]]
|
[smtpmsa.host <SMTPHostName> smtpmsa.port 25|465|587 smtpmsa.username <UserName> smtpmsa.password <Password> [smtpmsa.securitymode none|ssl|starttls]]
|
||||||
gam <UserTypeEntity> update sendas <EmailAddress> [name <Name>] [signature|sig <String>|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)*] [html] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
gam <UserTypeEntity> update sendas <EmailAddress> [name <Name>] [signature|sig <String>|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)*] [html] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
||||||
gam <UserTypeEntity> delete sendas <EmailAddress>
|
gam <UserTypeEntity> delete sendas <EmailAddress>
|
||||||
gam <UserTypeEntity> show sendas [format]
|
gam <UserTypeEntity> show sendas [format]
|
||||||
@@ -1253,15 +1299,15 @@ gam <UserTypeEntity> signature|sig <String>|(file <FileName> [charset <Charset>]
|
|||||||
gam <UserTypeEntity> show signature|sig [format]
|
gam <UserTypeEntity> show signature|sig [format]
|
||||||
|
|
||||||
<TeamDriveRestrictionsSubfieldName> ::=
|
<TeamDriveRestrictionsSubfieldName> ::=
|
||||||
adminmanagedrestrictions|
|
adminmanagedrestrictions|
|
||||||
copyrequireswriterpermission|
|
copyrequireswriterpermission|
|
||||||
domainusersonly|
|
domainusersonly|
|
||||||
teammembersonly
|
teammembersonly
|
||||||
|
|
||||||
gam <UserTypeEntity> create|add teamdrive <Name>
|
gam <UserTypeEntity> create|add teamdrive <Name>
|
||||||
gam <UserTypeEntity> update teamdrive <TeamDriveID> [asadmin] [name <Name>]
|
gam <UserTypeEntity> update teamdrive <TeamDriveID> [asadmin] [name <Name>]
|
||||||
[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<TeamDriveRestrictionsSubfieldName> <Boolean>)*
|
(<TeamDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
gam <UserTypeEntity> delete teamdrive <TeamDriveID>
|
gam <UserTypeEntity> delete teamdrive <TeamDriveID>
|
||||||
gam <UserTypeEntity> show teamdriveinfo <TeamDriveID> [asadmin]
|
gam <UserTypeEntity> show teamdriveinfo <TeamDriveID> [asadmin]
|
||||||
gam <UserTypeEntity> show teamdrives [asadmin]
|
gam <UserTypeEntity> show teamdrives [asadmin]
|
||||||
|
|||||||
82
src/gam.py
82
src/gam.py
@@ -963,14 +963,13 @@ def callGAPIpages(service, function, items=u'items',
|
|||||||
page_token = None
|
page_token = None
|
||||||
total_items = 0
|
total_items = 0
|
||||||
while True:
|
while True:
|
||||||
page = callGAPI(
|
page = callGAPI(service,
|
||||||
service,
|
function,
|
||||||
function,
|
soft_errors=soft_errors,
|
||||||
soft_errors=soft_errors,
|
throw_reasons=throw_reasons,
|
||||||
throw_reasons=throw_reasons,
|
retry_reasons=retry_reasons,
|
||||||
retry_reasons=retry_reasons,
|
pageToken=page_token,
|
||||||
pageToken=page_token,
|
**kwargs)
|
||||||
**kwargs)
|
|
||||||
if page:
|
if page:
|
||||||
page_token = page.get(u'nextPageToken')
|
page_token = page.get(u'nextPageToken')
|
||||||
page_items = page.get(items, [])
|
page_items = page.get(items, [])
|
||||||
@@ -988,10 +987,8 @@ def callGAPIpages(service, function, items=u'items',
|
|||||||
if message_attribute:
|
if message_attribute:
|
||||||
first_item = page_items[0] if num_page_items > 0 else {}
|
first_item = page_items[0] if num_page_items > 0 else {}
|
||||||
last_item = page_items[-1] if num_page_items > 1 else first_item
|
last_item = page_items[-1] if num_page_items > 1 else first_item
|
||||||
show_message = show_message.replace(
|
show_message = show_message.replace(u'%%first_item%%', str(first_item.get(message_attribute, u'')))
|
||||||
u'%%first_item%%', str(first_item.get(message_attribute, u'')))
|
show_message = show_message.replace(u'%%last_item%%', str(last_item.get(message_attribute, u'')))
|
||||||
show_message = show_message.replace(
|
|
||||||
u'%%last_item%%', str(last_item.get(message_attribute, u'')))
|
|
||||||
sys.stderr.write(u'\r')
|
sys.stderr.write(u'\r')
|
||||||
sys.stderr.flush()
|
sys.stderr.flush()
|
||||||
sys.stderr.write(show_message)
|
sys.stderr.write(show_message)
|
||||||
@@ -1024,12 +1021,11 @@ def callGAPIitems(service, function, items=u'items',
|
|||||||
Returns:
|
Returns:
|
||||||
The list of items in the first page of a response.
|
The list of items in the first page of a response.
|
||||||
"""
|
"""
|
||||||
results = callGAPI(
|
results = callGAPI(service,
|
||||||
service,
|
function,
|
||||||
function,
|
throw_reasons=throw_reasons,
|
||||||
throw_reasons=throw_reasons,
|
retry_reasons=retry_reasons,
|
||||||
retry_reasons=retry_reasons,
|
**kwargs)
|
||||||
**kwargs)
|
|
||||||
if results:
|
if results:
|
||||||
return results.get(items, [])
|
return results.get(items, [])
|
||||||
return []
|
return []
|
||||||
@@ -8365,6 +8361,11 @@ def getGroupAttrValue(myarg, value, gs_object, gs_body, function):
|
|||||||
value = u'true'
|
value = u'true'
|
||||||
elif value.lower() in false_values:
|
elif value.lower() in false_values:
|
||||||
value = u'false'
|
value = u'false'
|
||||||
|
# Another ugly hack because Groups Settings API doesn't have proper enumerator values set in discovery file.
|
||||||
|
if u'description' in params and params[u'description'].find(u'Possible values are: ') != -1:
|
||||||
|
possible_values = params[u'description'][params[u'description'].find(u'Possible values are: ')+21:].split(u' ')
|
||||||
|
if value not in possible_values:
|
||||||
|
systemErrorExit(2, u'value for %s must be one of %s. Got %s.' % (attrib, u', '.join(possible_values), value))
|
||||||
gs_body[attrib] = value
|
gs_body[attrib] = value
|
||||||
return
|
return
|
||||||
systemErrorExit(2, '%s is not a valid argument for "gam %s group"' % (myarg, function))
|
systemErrorExit(2, '%s is not a valid argument for "gam %s group"' % (myarg, function))
|
||||||
@@ -8372,7 +8373,7 @@ def getGroupAttrValue(myarg, value, gs_object, gs_body, function):
|
|||||||
def doCreateGroup():
|
def doCreateGroup():
|
||||||
cd = buildGAPIObject(u'directory')
|
cd = buildGAPIObject(u'directory')
|
||||||
body = {u'email': normalizeEmailAddressOrUID(sys.argv[3], noUid=True)}
|
body = {u'email': normalizeEmailAddressOrUID(sys.argv[3], noUid=True)}
|
||||||
got_name = False
|
gs_get_before_update = got_name = False
|
||||||
i = 4
|
i = 4
|
||||||
gs_body = {}
|
gs_body = {}
|
||||||
gs = None
|
gs = None
|
||||||
@@ -8396,6 +8397,9 @@ def doCreateGroup():
|
|||||||
else:
|
else:
|
||||||
body[u'description'] = description
|
body[u'description'] = description
|
||||||
i += 2
|
i += 2
|
||||||
|
elif myarg == u'getbeforeupdate':
|
||||||
|
gs_get_before_update = True
|
||||||
|
i += 1
|
||||||
else:
|
else:
|
||||||
if not gs:
|
if not gs:
|
||||||
gs = buildGAPIObject(u'groupssettings')
|
gs = buildGAPIObject(u'groupssettings')
|
||||||
@@ -8407,12 +8411,14 @@ def doCreateGroup():
|
|||||||
print u"Creating group %s" % body[u'email']
|
print u"Creating group %s" % body[u'email']
|
||||||
callGAPI(cd.groups(), u'insert', body=body, fields=u'email')
|
callGAPI(cd.groups(), u'insert', body=body, fields=u'email')
|
||||||
if gs and not GroupIsAbuseOrPostmaster(body[u'email']):
|
if gs and not GroupIsAbuseOrPostmaster(body[u'email']):
|
||||||
settings = callGAPI(gs.groups(), u'get',
|
if gs_get_before_update:
|
||||||
retry_reasons=[u'serviceLimit'],
|
current_settings = callGAPI(gs.groups(), u'get',
|
||||||
groupUniqueId=body[u'email'], fields=u'*')
|
retry_reasons=[u'serviceLimit'],
|
||||||
if settings is not None:
|
groupUniqueId=body[u'email'], fields=u'*')
|
||||||
settings.update(gs_body)
|
if current_settings is not None:
|
||||||
callGAPI(gs.groups(), u'update', retry_reasons=[u'serviceLimit'], groupUniqueId=body[u'email'], body=settings)
|
gs_body = dict(current_settings.items() + gs_body.items())
|
||||||
|
if gs_body:
|
||||||
|
callGAPI(gs.groups(), u'update', retry_reasons=[u'serviceLimit'], groupUniqueId=body[u'email'], body=gs_body)
|
||||||
|
|
||||||
def doCreateAlias():
|
def doCreateAlias():
|
||||||
cd = buildGAPIObject(u'directory')
|
cd = buildGAPIObject(u'directory')
|
||||||
@@ -8793,6 +8799,7 @@ def doUpdateGroup():
|
|||||||
users_email = [normalizeEmailAddressOrUID(sys.argv[i], checkForCustomerId=True)]
|
users_email = [normalizeEmailAddressOrUID(sys.argv[i], checkForCustomerId=True)]
|
||||||
return (role, users_email, delivery)
|
return (role, users_email, delivery)
|
||||||
|
|
||||||
|
gs_get_before_update = False
|
||||||
cd = buildGAPIObject(u'directory')
|
cd = buildGAPIObject(u'directory')
|
||||||
group = sys.argv[3]
|
group = sys.argv[3]
|
||||||
myarg = sys.argv[4].lower()
|
myarg = sys.argv[4].lower()
|
||||||
@@ -8991,6 +8998,9 @@ def doUpdateGroup():
|
|||||||
use_cd_api = True
|
use_cd_api = True
|
||||||
cd_body[u'adminCreated'] = getBoolean(sys.argv[i+1], myarg)
|
cd_body[u'adminCreated'] = getBoolean(sys.argv[i+1], myarg)
|
||||||
i += 2
|
i += 2
|
||||||
|
elif myarg == u'getbeforeupdate':
|
||||||
|
gs_get_before_update = True
|
||||||
|
i += 1
|
||||||
else:
|
else:
|
||||||
if not gs:
|
if not gs:
|
||||||
gs = buildGAPIObject(u'groupssettings')
|
gs = buildGAPIObject(u'groupssettings')
|
||||||
@@ -9002,12 +9012,14 @@ def doUpdateGroup():
|
|||||||
group = callGAPI(cd.groups(), u'update', groupKey=group, body=cd_body, fields=u'email')[u'email']
|
group = callGAPI(cd.groups(), u'update', groupKey=group, body=cd_body, fields=u'email')[u'email']
|
||||||
if gs:
|
if gs:
|
||||||
if not GroupIsAbuseOrPostmaster(group):
|
if not GroupIsAbuseOrPostmaster(group):
|
||||||
settings = callGAPI(gs.groups(), u'get',
|
if gs_get_before_update:
|
||||||
retry_reasons=[u'serviceLimit'],
|
current_settings = callGAPI(gs.groups(), u'get',
|
||||||
groupUniqueId=group, fields=u'*')
|
retry_reasons=[u'serviceLimit'],
|
||||||
if settings is not None:
|
groupUniqueId=group, fields=u'*')
|
||||||
settings.update(gs_body)
|
if current_settings is not None:
|
||||||
callGAPI(gs.groups(), u'update', retry_reasons=[u'serviceLimit'], groupUniqueId=group, body=settings)
|
gs_body = dict(current_settings.items() + gs_body.items())
|
||||||
|
if gs_body:
|
||||||
|
callGAPI(gs.groups(), u'update', retry_reasons=[u'serviceLimit'], groupUniqueId=group, body=gs_body)
|
||||||
print u'updated group %s' % group
|
print u'updated group %s' % group
|
||||||
|
|
||||||
def doUpdateAlias():
|
def doUpdateAlias():
|
||||||
@@ -10886,7 +10898,7 @@ def doPrintShowAlertFeedback():
|
|||||||
print feedbac
|
print feedbac
|
||||||
|
|
||||||
def _getValidAlertFeedbackTypes(ac):
|
def _getValidAlertFeedbackTypes(ac):
|
||||||
return [type for type in ac._rootDesc[u'schemas'][u'AlertFeedback'][u'properties'][u'type'][u'enum'] if type != u'ALERT_FEEDBACK_TYPE_UNSPECIFIED']
|
return [aftype for aftype in ac._rootDesc[u'schemas'][u'AlertFeedback'][u'properties'][u'type'][u'enum'] if aftype != u'ALERT_FEEDBACK_TYPE_UNSPECIFIED']
|
||||||
|
|
||||||
def doCreateAlertFeedback():
|
def doCreateAlertFeedback():
|
||||||
_, ac = buildAlertCenterGAPIObject(_getValueFromOAuth(u'email'))
|
_, ac = buildAlertCenterGAPIObject(_getValueFromOAuth(u'email'))
|
||||||
@@ -13582,9 +13594,9 @@ def ProcessGAMCommand(args):
|
|||||||
systemErrorExit(2, '%s is not a valid argument for "gam <users> watch"' % watchWhat)
|
systemErrorExit(2, '%s is not a valid argument for "gam <users> watch"' % watchWhat)
|
||||||
else:
|
else:
|
||||||
systemErrorExit(2, '%s is not a valid argument for "gam"' % command)
|
systemErrorExit(2, '%s is not a valid argument for "gam"' % command)
|
||||||
except IndexError:
|
#except IndexError:
|
||||||
showUsage()
|
# showUsage()
|
||||||
sys.exit(2)
|
# sys.exit(2)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
sys.exit(50)
|
sys.exit(50)
|
||||||
except socket.error as e:
|
except socket.error as e:
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ SKUS = {
|
|||||||
u'1010310002': {
|
u'1010310002': {
|
||||||
u'product': u'101031', u'aliases': [u'gsefe', u'e4e', u'gsuiteenterpriseeducation'], u'displayName': u'G Suite Enterprise for Education'},
|
u'product': u'101031', u'aliases': [u'gsefe', u'e4e', u'gsuiteenterpriseeducation'], u'displayName': u'G Suite Enterprise for Education'},
|
||||||
u'1010310003': {
|
u'1010310003': {
|
||||||
u'product': u'101031', u'aliases': [u'gse4es', u'e4es', u'gsuiteenterpriseeducationstudent'], u'displayName': u'G Suite Enterprise for Education Student'},
|
u'product': u'101031', u'aliases': [u'gsefes', u'e4es', u'gsuiteenterpriseeducationstudent'], u'displayName': u'G Suite Enterprise for Education Student'},
|
||||||
u'Google-Apps': {
|
u'Google-Apps': {
|
||||||
u'product': u'Google-Apps', u'aliases': [u'standard', u'free'], u'displayName': u'G Suite Free/Standard'},
|
u'product': u'Google-Apps', u'aliases': [u'standard', u'free'], u'displayName': u'G Suite Free/Standard'},
|
||||||
u'Google-Apps-For-Business': {
|
u'Google-Apps-For-Business': {
|
||||||
|
|||||||
Reference in New Issue
Block a user