Wiki
Clone wikiNumera.LibrisAPI / template.event
template.event.wiki
def partner_v2(self, retval): import decimal
- the main difference here is promoting information
- in the script field into first-level properties
- of the object script_data = {} details = {} for s in self.script_blocks(parse_float=decimal.Decimal): script_data.update(s)
if self.fd_disposition is not None: details['fall_disposition'] = self.fd_disposition if self.fd_time is not None: details['fall_time'] = self.fd_time.isoformat()
loc = None if 'location' in retval: loc = retval['location']
if 'geolocation' in retval: if loc is not None: loc['address'] = retval['geolocation'] del retval['geolocation']
if loc is not None: del retval['location']['alt'] del retval['location']['accuracy']
retval['realm'] = self.realm
if self.device is not None: retval['device_status'] = self.device.status retval['device_name'] = self.device.name
for case in util.switch(self.etype): if case('LocationFix'): if self.method is not None and 'satellite' in self.method: retval['type'] = 'GPSLoc' else: retval['type'] = 'NetworkLoc' break if case('Note'): if self.script is not None: details['note'] = self.script break
for data_name in script_data: for case in util.switch(data_name): if case('bat_level'): details['battery_level'] = script_data['bat_level'] battery_raw = int(script_data['bat_level']) battery_pcnt = int(round((battery_raw - 50) * 2)) if battery_pcnt < 0: battery_pcnt = 0 details['battery_percent'] = battery_pcnt break if case('ttf') and loc is not None: retval['location']['time_to_fix'] = script_data['ttf'] break if case('rssi'): details['rssi'] = script_data['rssi'] break if case('ext_pwr'): if int(script_data['ext_pwr']) == 1: details['in_charger'] = True else: details['in_charger'] = False break if case('build'): details['software_version'] = script_data['build'] break if case('safe_mode'): if int(script_data['safe_mode']) == 2: details['safe_mode'] = False else: details['safe_mode'] = True break if case('disposition') and 'fall_disposition' not in details: details['fall_disposition'] = script_data['disposition'] break if case('subtype'): details['sub_type'] = script_data['subtype'] break if case('network_down'): if script_data['network_down'] == 1: details['network_status'] = 'none' else: details['network_status'] = 'available' break if case('action'): details['action_taken'] = script_data['action'] break if case('chrg_state'): if script_data['chrg_state'] == 2 or \ script_data['chrg_state'] == 3: details['in_charger'] = True else: details['in_charger'] = False break if case('srv_status'): if script_data['srv_status'] == 0: details['network_status'] = 'none' elif script_data['srv_status'] == 1: details['network_status'] = 'limited' elif script_data['srv_status'] == 2: details['network_status'] = 'available' elif script_data['srv_status'] == 3: details['network_status'] = 'limited_regional' elif script_data['srv_status'] == 4: details['network_status'] = 'power_save' break if case('code'): details['activation_code'] = script_data['code'] break if case('message'): details['activation_message'] = script_data['message'] break
if len(details) > 0: retval['details'] = details
return retval
Updated