Example #1
0
    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))
Example #2
0
File: api.py Project: elsigh/levels
    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)