Wiki

Clone wiki

Numera.LibrisAPI / template.event

template.event.wiki

def partner_v2(self, retval): import decimal

  1. the main difference here is promoting information
  2. in the script field into first-level properties
  3. 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