def find(github_user): expert_name = name(github_user) try: return Expert.by_name(expert_name) except Expert.DoesNotExist: pass expert = Expert.objects.filter( contact_details__type="github", contact_details__value=github_user.login ).distinct() if len(expert) == 0: raise Expert.DoesNotExist(expert_name) if len(expert) != 1: raise Expert.MultipleObjectsReturned(expert_name) expert, = expert return expert