def set_locale(locale): user = gae_users.get_current_user() if not user or not user.user_id(): return settings = UserSettings.get_or_insert(user.user_id(), user=user) settings.locale = locale settings.put()
def mark_example_as_seen(): user = gae_users.get_current_user() if not user or not user.user_id(): raise Exception("Logged in user expected") settings = UserSettings.get_or_insert(user.user_id(), user=user) settings.seen_example = True settings.put()
def mark_version_as_seen(version): user = gae_users.get_current_user() if not user or not user.user_id(): return settings = UserSettings.get_or_insert(user.user_id(), user=user) settings.seen_version = version settings.put()
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 mark_guider_as_seen(guider_name): user = gae_users.get_current_user() if not user or not user.user_id(): return settings = UserSettings.get_or_insert(user.user_id(), user=user) if not guider_name in settings.seen_guiders: settings.seen_guiders.append(guider_name) settings.put()
def has_seen_version(version): user = gae_users.get_current_user() if not user or not user.user_id(): return True # don't bother displaying "new version available" to non-authenticated users settings = UserSettings.get_or_insert(user.user_id(), user=user) if not settings.seen_version: settings.seen_version = [0, 0, 0] settings.put() return settings.seen_version >= version
def get_site_settings(cls): settings = cls.query().get() if not settings: settings = SiteSettings(site_title="GAE Keijiban", description="A lightweight Keijiban running on GAE", front_page="", footer_info="Copyright 2014 CNA_Bld & AngelaTang @ SSHZ.ORG", cookie_expiry_days=30, default_page_size=10, default_language="en") settings.put() return settings
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)