Esempio n. 1
0
    async def set_settings(self, **kwargs):
        user_setting = {}
        domain_user_setting = {}
        domain_user_unset_keys = []
        for key, value in kwargs.items():
            if key not in SETTINGS_BY_KEY:
                raise error.UnknownFieldError(key)
            setting = SETTINGS_BY_KEY[key]
            value = value.strip()
            kwargs[key] = setting.factory(value)
            if setting.range and kwargs[key] not in setting.range:
                raise error.ValidationError(key)

            if key in DOMAIN_SETTINGS_KEYS:
                if value:
                    domain_user_setting[key] = kwargs[key]
                else:
                    domain_user_unset_keys.append(key)
            else:
                user_setting[key] = kwargs[key]

        if self.has_priv(builtin.PRIV_USER_PROFILE):
            if user_setting:
                await user.set_by_uid(self.user['_id'], **user_setting)
            if domain_user_setting:
                await domain.set_user(domain_id=self.domain_id,
                                      uid=self.user['_id'],
                                      **domain_user_setting)
            if domain_user_unset_keys:
                await domain.unset_user(self.domain_id, self.user['_id'],
                                        domain_user_unset_keys)
        else:
            await self.update_session(**kwargs)
Esempio n. 2
0
 async def set_settings(self, **kwargs):
     for key, value in kwargs.items():
         if key not in SETTINGS_BY_KEY:
             raise error.UnknownFieldError(key)
         setting = SETTINGS_BY_KEY[key]
         kwargs[key] = setting.factory(value)
         if setting.range and kwargs[key] not in setting.range:
             raise error.ValidationError(key)
     if self.has_priv(builtin.PRIV_USER_PROFILE):
         await user.set_by_uid(self.user['_id'], **kwargs)
     else:
         await self.update_session(**kwargs)