def update_glass_battery_status(self, battery_status): # first see if the user has a glass and if not make one. # TODO(elsigh): figure out getting uuid for a glass. glass_uuid = 'glass' glass_device = models.Device.query( ancestor=self._current_user.key).filter( models.Device.uuid == glass_uuid).get() if glass_device is None: glass_device = models.Device( uuid=glass_uuid, parent=self._current_user.key, platform='Google', name='Glass') glass_device.put() settings = models.Settings( parent=glass_device.key ) created_datetime = models.FMBModel.iso_str_to_datetime( battery_status['created']) settings_data = { 'created': created_datetime, 'battery_level': int(battery_status['capacity']), 'is_charging': battery_status['is_charging'] } settings.populate(**settings_data) settings.put() logging.info('Settings %s saved for device %s' % (settings, glass_device))
def post(self): device = self._get_device_by_device_key() battery_level = self._json_request_data['battery_level'] is_this_update_over_notify_level = \ int(battery_level) > int(device.notify_level) settings = models.Settings( parent=device.key ) settings_data = self.pruned_json_request_data settings.populate(**settings_data) logging.info('device.is_last_update_over_notify_level %s, ' 'is_this_update_over_notify_level %s' % (device.is_last_update_over_notify_level, is_this_update_over_notify_level)) if ((device.is_last_update_over_notify_level and not is_this_update_over_notify_level)): logging.info('^^^^ DO NOTIFICATIONS! ^^^^') deferred.defer(send_battery_notifications, self.current_user.key.id(), device.key.id()) # Sets a bit on this settings record because it broke the # threshold. settings.caused_battery_notifications = True settings.put() if ((is_this_update_over_notify_level != device.is_last_update_over_notify_level)): device.is_last_update_over_notify_level = \ is_this_update_over_notify_level device.put() device.increment_count('settings_received_count') # Hack in is_last_update_over_notify_level json_output = settings.to_dict() json_output.update({ 'is_last_update_over_notify_level': is_this_update_over_notify_level }) return self.output_json_success(json_output)