def save_settings(cls, project=None, user=None, settings=None):
        """
        Save settings for a user without first fetching their preferences.

        - **user** and **project** can be either a :py:class:`.User` and
          :py:class:`.Project` instance respectively, or they can be given as
          IDs. If either argument is given, the other is also required.
        - **settings** is a :py:class:`dict` containing the settings to be
          saved.
        """

        if (isinstance(settings, dict)):
            _to_update = settings
            if (
                isinstance(user, User)
                and isinstance(project, Project)
            ):
                _user_id = user.id
                _project_id = project.id
            elif (
                isinstance(user, (int, str,))
                and isinstance(project, (int, str,))
            ):
                _user_id = user
                _project_id = project
            else:
                raise TypeError
            cls.http_post(
                'update_settings',
                json={
                    'project_preferences': {
                        'user_id': _user_id,
                        'project_id': _project_id,
                        'settings': _to_update,
                    }
                }
            )
        else:
            raise TypeError
Save settings for a user without first fetching their preferences.

        - **user** and **project** can be either a :py:class:`.User` and
          :py:class:`.Project` instance respectively, or they can be given as
          IDs. If either argument is given, the other is also required.
        - **settings** is a :py:class:`dict` containing the settings to be
          saved.