code: def find(cls, id='', user=None, project=None):
          
  
          if not id:
              if not (user and project):
                  raise ValueError('Both user and project required')
              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
              id = cls.where(user_id=_user_id, project_id=_project_id).next().id
          return super(ProjectPreferences, cls).find(id)
docs: Like :py:meth:`.PanoptesObject.find` but can also query by user and
          project.
  
          - **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.