New buildings cleanup (#650)

This commit is contained in:
Ross Scroggs
2017-12-19 12:10:22 -08:00
committed by Jay Lee
parent 39d8c93444
commit 1b46b4b13b
3 changed files with 58 additions and 29 deletions

View File

@@ -116,6 +116,7 @@ Named items
<AccessToken> ::= <String>
<ACLScope> ::= [user:]<EmailAddress>|group:<EmailAddress>|domain[:<DomainName>]|default
<ASPID> ::= <String>
<BuildingID> ::= <String>|id:<String>
<CalendarACLRole> ::= editor|freebusy|freebusyreader|owner|reader|writer
<CalendarColorIndex> ::== <Number in range 1-24>
<CalendarItem> ::= <EmailAddress>|<String>
@@ -504,6 +505,14 @@ Specify a collection of Users by directly specifying them or by specifiying item
(query <QueryUser>)
Item attributes
<BuildingAttributes> ::=
(buildingid <String>)|
(description <String>)|
(floors <FloorNameList>)|
(latitude <Float>)|
(longitude <Float>)|
(name <String>)
<CalendarAttributes> ::=
(selected <Boolean>)|(hidden <Boolean>)|(summary <String>)|(colorindex|colorid <CalendarColorIndex>)|(backgroundcolor <ColorHex>)|(foregroundcolor <ColorHex>)|
(reminder clear|(email|sms|pop <Number>))|
@@ -588,6 +597,18 @@ Item attributes
(quotaenabled <Boolean>)|(status <Number>)|(type <String>)|(uuid <String>)|
(setupurl <URL>)|(supporturl <URL>)|(updateurl <URL>)
<ResourceAttributes> ::=
(buildingid <BuildingID>)|
(capacity <Number>)|
(category other|room|conference_room)|
(description <String>)|
(features <FeatureNameList>)|
(floor <FloorName>)|
(floorsection <String>)|
(name <String>)|
(type <String>)|
(uservisibledescription <String>)
<SchemaFieldDefinition> ::=
field <FieldName> (type bool|date|double|email|int64|phone|string) [multivalued|multivalue] [indexed] [restricted] [range <Number> <Number>] endfield
@@ -607,7 +628,7 @@ Item attributes
(im clear|(type work|home|other|(custom <String>) protocol aim|gtalk|icq|jabber|msn|net_meeting|qq|skype|yahoo|(custom_protocol <String>) <String> [notprimary|primary]))|
(ipwhitelisted <Boolean>)|
(lastname|familyname <String>)|
(location clear|(type default|desk|<String> area <String> [building|buildingid <String>] [floor|floorname <String>] [section|floorsection <String>] [desk|deskcode <String>] endlocation))|
(location clear|(type default|desk|<String> area <String> [building|buildingid <BuildingID>] [floor|floorname <FloorName>] [section|floorsection <String>] [desk|deskcode <String>] endlocation))|
(note clear|([text_plain|text_html] <String>|(file <FileName> [charset <Charset>])))|
(organization clear|([type domain_only|school|unknown|work] [customtype <String>] [name <String>] [title <String>] [department <String>] [symbol <String>]
[costcenter <String>] [location <String>] [description <String>] [domain <String>] notprimary|primary))|
@@ -817,6 +838,16 @@ gam update notification|notifications [(id all)|(id <NotificationID>)*] unread|r
gam delete notification|notifications [(id all)|(id <NotificationID>)*]
gam info notification|notifications [unreadonly]
gam create building <BuildingID> <BuildingAttributes>*
gam update building <BuildIngID> <BuildingAttributes>*
gam delete building <BuildingID>
gam info building <BuildingID>
gam print buildings [todrive]
gam create feature <Name>
gam update feature <Name> name <Name>
gam print features [todrive]
gam create resource <ResourceID> <Name> [description <String>] [type <String>]
gam update resource <ResourceID> [name <Name>] [description <String>] [type <String>]
gam delete resource <ResourceID>

View File

@@ -6902,7 +6902,7 @@ def getUserAttributes(i, cd, updateCmd=False):
location[u'area'] = sys.argv[i+1]
i += 2
elif myopt in [u'building', u'buildingid']:
location[u'buildingId'] = sys.argv[i+1]
location[u'buildingId'] = _getBuildingByNameOrId(cd, sys.argv[i+1])
i += 2
elif myopt in [u'desk', u'deskcode']:
location[u'deskCode'] = sys.argv[i+1]
@@ -8011,14 +8011,11 @@ def _getBuildingByNameOrId(cd, which_building):
sys.exit(3)
def _getBuildingNameById(cd, buildingId):
global all_buildings
try:
all_buildings
except NameError:
if not GM_Globals[GM_MAP_BUILDING_ID_TO_NAME]:
fields = u'nextPageToken,buildings(buildingId,buildingName)'
all_buildings = callGAPIpages(cd.resources().buildings(), u'list',
u'buildings', customer=GC_Values[GC_CUSTOMER_ID], fields=fields)
for building in all_buildings:
GM_Globals[GM_MAP_BUILDING_ID_TO_NAME] = callGAPIpages(cd.resources().buildings(), u'list', u'buildings',
customer=GC_Values[GC_CUSTOMER_ID], fields=fields)
for building in GM_Globals[GM_MAP_BUILDING_ID_TO_NAME]:
if buildingId == building[u'buildingId']:
return building[u'buildingName']
print u'ERROR: No such building %s' % buildingId
@@ -8038,10 +8035,9 @@ def doGetBuildingInfo():
building = callGAPI(cd.resources().buildings(), u'get',
customer=GC_Values[GC_CUSTOMER_ID], buildingId=buildingId)
if u'floorNames' in building:
building[u'floorNames'] = u' '.join(building[u'floorNames'])
building[u'floorNames'] = u','.join(building[u'floorNames'])
if u'buildingName' in building:
sys.stdout.write(building[u'buildingName'])
del(building[u'buildingName'])
sys.stdout.write(building.pop(u'buildingName'))
print_json(None, building)
def doDeleteBuilding():
@@ -8086,7 +8082,10 @@ def _getResourceCalendarAttributes(cd, args, body={}):
i = 0
while i < len(args):
myarg = args[i].lower().replace(u'_', u'')
if myarg == u'description':
if myarg == u'name':
body[u'resourceName'] = args[i+1]
i += 2
elif myarg == u'description':
body[u'resourceDescription'] = args[i+1].replace(u'\\n', u'\n')
i += 2
elif myarg == u'type':
@@ -9197,11 +9196,7 @@ def doGetResourceCalendarInfo():
resource = callGAPI(cd.resources().calendars(), u'get',
customer=GC_Values[GC_CUSTOMER_ID], calendarResourceId=resId)
if u'featureInstances' in resource:
features = []
for a_feature in resource[u'featureInstances']:
features.append(a_feature[u'feature'][u'name'])
resource[u'features'] = u', '.join(features)
del(resource[u'featureInstances'])
resource[u'features'] = u', '.join([a_feature[u'feature'][u'name'] for a_feature in resource.pop(u'featureInstances')])
if u'buildingId' in resource:
resource[u'buildingName'] = _getBuildingNameById(cd, resource[u'buildingId'])
print_json(None, resource)
@@ -11375,7 +11370,7 @@ def doPrintBuildings():
building.pop(u'etag', None)
building.pop(u'kind', None)
if u'floorNames' in building:
building[u'floorNames'] = u' '.join(building[u'floorNames'])
building[u'floorNames'] = u','.join(building[u'floorNames'])
building = flatten_json(building)
for item in building:
if item not in titles:

View File

@@ -463,7 +463,7 @@ CROS_ARGUMENT_TO_PROPERTY_MAP = {
u'tag': [u'annotatedAssetId',],
u'timeranges': [u'activeTimeRanges.activeTime', u'activeTimeRanges.date'],
u'times': [u'activeTimeRanges.activeTime', u'activeTimeRanges.date'],
u'tpmversioninfo': [u'tpmVersionInfo'],
u'tpmversioninfo': [u'tpmVersionInfo',],
u'user': [u'annotatedUser',],
u'users': [u'recentUsers.email', u'recentUsers.type'],
u'willautorenew': [u'willAutoRenew',],
@@ -540,6 +540,8 @@ GM_MAP_USER_ID_TO_NAME = u'ui2n'
GM_CACHE_DIR = u'gacd'
# Reset GAM cache directory after discovery
GM_CACHE_DISCOVERY_ONLY = u'gcdo'
# Dictionary mapping Building ID to Name
GM_MAP_BUILDING_ID_TO_NAME = u'bi2n'
#
GM_Globals = {
GM_SYSEXITRC: 0,
@@ -558,6 +560,7 @@ GM_Globals = {
GM_MAP_USER_ID_TO_NAME: None,
GM_CACHE_DIR: None,
GM_CACHE_DISCOVERY_ONLY: True,
GM_MAP_BUILDING_ID_TO_NAME: None
}
#
# Global variables defined by environment variables/signal files