def _get_user(self):
     userid = util.verify_token(self.request.headers.get("Authorization"))
     if not userid:
         raise errors.BadRequestError("Unknown client ID")
     self._user = UserSettings.get_by_key_name(userid)
     if not self._user:
         raise errors.NotFoundError("Unknown user")
Esempio n. 2
0
 def _get_user(self):
   userid = util.verify_token(self.request.headers.get('Authorization'))
   if not userid:
     raise errors.BadRequestError('Unknown client ID')
   self._user = UserSettings.get_by_key_name(userid)
   if not self._user:
     raise errors.NotFoundError('Unknown user')
 def entities_to_process(self):
   """Yield entities that should be processed."""
   now = datetime.datetime.utcnow()
   quarter_mark = (now.minute / 15) * 15
   now_minute = now.hour * 60 + quarter_mark
   query = UserSettings.all()
   if quarter_mark == 30:
     query.filter('frequency IN', [15, 30])
   elif quarter_mark == 15 or quarter_mark == 45:
     query.filter('frequency =', 15)
   for user_settings in query:
     if user_settings.night_mode:
       yield user_settings
     else:
       shifted_now = (now_minute - user_settings.timezone_offset) % 1440
       # Verify that this is day time in the user's timezone.
       if shifted_now >= DAY_TIME_START and shifted_now < DAY_TIME_STOP:
         yield user_settings
Esempio n. 4
0
  def fetchPermissions(self, userIds):
    cachedPermissions = memcache.get_multi(userIds, key_prefix="settings:")

    idsMissingFromCache = list(set(userIds) - set(cachedPermissions.keys()))
    fetchedPermissions = {x.fs_id : json.loads(x.permissions) for x in UserSettings.fetch_by_fs_ids(idsMissingFromCache)}
    # If no permissions are set, the default is to allow all
    defaultedPermissions = {id : {'allowAll': True, 'authorizedFriends': []} for id in idsMissingFromCache
      if fetchedPermissions.get(id) is None
    }
    fetchedPermissions.update(defaultedPermissions)

    if idsMissingFromCache:
      # Add all missing ones that we just fetched to the cache
      failedKeys = memcache.set_multi(fetchedPermissions, key_prefix="settings:", time=86400)
      if failedKeys:
        logging.error('Memcache set failed on settings for %s' % ', '.join(failedKeys))

    cachedPermissions.update(fetchedPermissions)
    return cachedPermissions
Esempio n. 5
0
 def entities_to_process(self):
     """Yield entities that should be processed."""
     now = datetime.datetime.utcnow()
     quarter_mark = (now.minute / 15) * 15
     now_minute = now.hour * 60 + quarter_mark
     query = UserSettings.all()
     if quarter_mark == 30:
         query.filter('frequency IN', [15, 30])
     elif quarter_mark == 15 or quarter_mark == 45:
         query.filter('frequency =', 15)
     for user_settings in query:
         if user_settings.night_mode:
             yield user_settings
         else:
             shifted_now = (now_minute -
                            user_settings.timezone_offset) % 1440
             # Verify that this is day time in the user's timezone.
             if shifted_now >= DAY_TIME_START and shifted_now < DAY_TIME_STOP:
                 yield user_settings
Esempio n. 6
0
  def changeUserSettings(self):
    userId = self.request.get('userId')
    token = self.request.get('access_token')

    access_token = self.verifiedAccessToken(userId, token)
    if (access_token):
      allowAllParam = self.request.get('allowAll')
      selectedParam = self.request.get('authorizedFriends')
      logging.debug('changeUserSettings for user %s. allowAll=%s authorizedFriends=%s' %
                     (userId, allowAllParam, selectedParam))

      allowAll = allowAllParam in ['True', 'true', '1']
      if (selectedParam is None or selectedParam.strip() == ""):
        selectedIds = []
      else:
        selectedIds = selectedParam.split('-')

      existingSettingsObj = UserSettings.get_by_fs_id(userId)
      if existingSettingsObj:
        settingsObj = existingSettingsObj
      else:
        settingsObj = UserSettings()

      if (allowAll):
        permissions = {'allowAll': True, 'authorizedFriends': []}
      else:
        permissions = {'allowAll': False, 'authorizedFriends': selectedIds}

      settingsObj.fs_id = userId
      settingsObj.permissions = json.dumps(permissions)
      settingsObj.put()

      if not memcache.set('settings:%s' % userId, permissions, 86400):
        logging.error('Memcache set failed on settings for %s' % userId)
        memcache.delete('settings:%s' % userId)

      logging.info('%s changed settings to: %s' % (settingsObj.fs_id, settingsObj.permissions))
      self.response.out.write(json.dumps({'status': 'ok'}))
    else:
      self.error(404)
Esempio n. 7
0
def getUserSettingFromDatabase(bot, update):
    return UserSettings.getUserSettings(chat_id=getUserID(update))
Esempio n. 8
0
def updateUserDatbase(bot, update, setting):
    UserSettings.updateUserSettings(chat_id=getUserID(update),
                                    filter_settings=setting)
Esempio n. 9
0
def addUserToDatabase(bot, update):
    UserSettings.addUser(chat_id=getUserID(update), filter_settings='N')