コード例 #1
0
    def test_noop_on_update_when_not_coaching_logged_in_user(self):
        # Bella + Edward's daughter,
        # (Spoiler Alert!) who Jacob falls in love with in Book 4
        renesmee = self.make_user('*****@*****.**')
        jacob = self.make_user('*****@*****.**')
        CoachRequest.get_or_insert_for(jacob, renesmee)
        requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch(1000)
        self.assertEqual(1, len(requests_for_renesmee))

        coaches_json = [self.make_user_json(jacob, False)]
        coaches.update_coaches_and_requests(renesmee, coaches_json)

        self.assertFalse(renesmee.is_visible_to(jacob))
        requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch(1000)
        self.assertEqual(1, len(requests_for_renesmee))
コード例 #2
0
    def test_noop_on_update_when_not_coaching_logged_in_user(self):
        # Bella + Edward's daughter,
        # (Spoiler Alert!) who Jacob falls in love with in Book 4
        renesmee = self.make_user('*****@*****.**')
        jacob = self.make_user('*****@*****.**')
        CoachRequest.get_or_insert_for(jacob, renesmee)
        requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch(
            1000)
        self.assertEqual(1, len(requests_for_renesmee))

        coaches_json = [self.make_user_json(jacob, False)]
        coaches.update_coaches_and_requests(renesmee, coaches_json)

        self.assertFalse(renesmee.is_visible_to(jacob))
        requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch(
            1000)
        self.assertEqual(1, len(requests_for_renesmee))
コード例 #3
0
def update_requests(user_data, requester_emails):
    """ Remove all CoachRequests not represented by requester_emails.
    """
    current_requests = CoachRequest.get_for_student(user_data)

    for current_request in current_requests:
        coach_email = current_request.coach_requesting_data.email
        if coach_email not in requester_emails:
            current_request.delete()
コード例 #4
0
ファイル: coaches.py プロジェクト: PaulWagener/khan-website
def update_requests(user_data, requester_emails):
    """ Remove all CoachRequests not represented by requester_emails.
    """
    current_requests = CoachRequest.get_for_student(user_data)

    for current_request in current_requests:
        coach_email = current_request.coach_requesting_data.email
        if coach_email not in requester_emails:
            current_request.delete()
コード例 #5
0
    def test_accept_request_on_update_when_coaching_logged_in_user(self):
        renesmee = self.make_user('*****@*****.**')
        jacob = self.make_user('*****@*****.**')
        CoachRequest.get_or_insert_for(jacob, renesmee)

        coaches_json = [self.make_user_json(jacob, True)]
        coaches.update_coaches_and_requests(renesmee, coaches_json)

        self.assertTrue(renesmee.is_visible_to(jacob))
        requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch(1000)
        self.assertEqual(0, len(requests_for_renesmee))
コード例 #6
0
    def test_accept_request_on_update_when_coaching_logged_in_user(self):
        renesmee = self.make_user('*****@*****.**')
        jacob = self.make_user('*****@*****.**')
        CoachRequest.get_or_insert_for(jacob, renesmee)

        coaches_json = [self.make_user_json(jacob, True)]
        coaches.update_coaches_and_requests(renesmee, coaches_json)

        self.assertTrue(renesmee.is_visible_to(jacob))
        requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch(
            1000)
        self.assertEqual(0, len(requests_for_renesmee))
コード例 #7
0
    def test_clear_request_on_update_requests_with_no_email(self):
        bella = self.make_user('*****@*****.**')
        edward = self.make_user('*****@*****.**')
        CoachRequest.get_or_insert_for(edward, bella)

        coaches.update_requests(bella, [])

        requests_for_bella = CoachRequest.get_for_student(bella).fetch(1000)
        self.assertEqual(0, len(requests_for_bella))

        requests_by_edward = CoachRequest.get_for_coach(edward).fetch(1000)
        self.assertEqual(0, len(requests_by_edward))
コード例 #8
0
    def test_ignore_nonexistent_requester_email_on_update_requests(self):
        renesmee = self.make_user('*****@*****.**')
        jacob = self.make_user('*****@*****.**')
        CoachRequest.get_or_insert_for(jacob, renesmee)

        coaches_json = [{
            'email': '*****@*****.**',
            'isCoachingLoggedInUser': False,
        }]
        coaches.update_requests(renesmee, coaches_json)
        requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch(1000)
        self.assertEqual(0, len(requests_for_renesmee))
コード例 #9
0
    def test_clear_request_on_update_requests_with_no_email(self):
        bella = self.make_user('*****@*****.**')
        edward = self.make_user('*****@*****.**')
        CoachRequest.get_or_insert_for(edward, bella)

        coaches.update_requests(bella, [])

        requests_for_bella = CoachRequest.get_for_student(bella).fetch(1000)
        self.assertEqual(0, len(requests_for_bella))

        requests_by_edward = CoachRequest.get_for_coach(edward).fetch(1000)
        self.assertEqual(0, len(requests_by_edward))
コード例 #10
0
    def test_ignore_nonexistent_requester_email_on_update_requests(self):
        renesmee = self.make_user('*****@*****.**')
        jacob = self.make_user('*****@*****.**')
        CoachRequest.get_or_insert_for(jacob, renesmee)

        coaches_json = [{
            'email': '*****@*****.**',
            'isCoachingLoggedInUser': False,
        }]
        coaches.update_requests(renesmee, coaches_json)
        requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch(
            1000)
        self.assertEqual(0, len(requests_for_renesmee))
コード例 #11
0
    def test_noop_on_update_requests_with_email(self):
        bella = self.make_user('*****@*****.**')
        jacob = self.make_user('*****@*****.**')

        CoachRequest.get_or_insert_for(jacob, bella)

        coaches.update_requests(bella, [jacob.key_email])

        requests_for_bella = CoachRequest.get_for_student(bella).fetch(1000)
        self.assertEqual(1, len(requests_for_bella))

        requests_by_jacob = CoachRequest.get_for_coach(jacob).fetch(1000)
        self.assertEqual(1, len(requests_by_jacob))
コード例 #12
0
    def test_noop_on_update_requests_with_email(self):
        bella = self.make_user('*****@*****.**')
        jacob = self.make_user('*****@*****.**')

        CoachRequest.get_or_insert_for(jacob, bella)

        coaches.update_requests(bella, [jacob.key_email])

        requests_for_bella = CoachRequest.get_for_student(bella).fetch(1000)
        self.assertEqual(1, len(requests_for_bella))

        requests_by_jacob = CoachRequest.get_for_coach(jacob).fetch(1000)
        self.assertEqual(1, len(requests_by_jacob))
コード例 #13
0
    def get_coach_and_requester_profiles_for_student(student_user_data):
        coach_profiles = []

        for coach_user_data in student_user_data.get_coaches_data():
            profile = UserProfile._from_coach(coach_user_data, student_user_data)
            coach_profiles.append(profile)

        requests = CoachRequest.get_for_student(student_user_data)
        for request in requests:
            coach_user_data = request.coach_requesting_data
            profile = UserProfile._from_coach(coach_user_data, student_user_data)
            coach_profiles.append(profile)

        return coach_profiles
コード例 #14
0
    def get_coach_and_requester_profiles_for_student(student_user_data):
        coach_profiles = []

        for coach_user_data in student_user_data.get_coaches_data():
            profile = UserProfile._from_coach(coach_user_data,
                                              student_user_data)
            coach_profiles.append(profile)

        requests = CoachRequest.get_for_student(student_user_data)
        for request in requests:
            coach_user_data = request.coach_requesting_data
            profile = UserProfile._from_coach(coach_user_data,
                                              student_user_data)
            coach_profiles.append(profile)

        return coach_profiles
コード例 #15
0
    def test_requesting_by_username_doesnt_leak_email(self):
        bella = self.make_user('*****@*****.**')
        self.assertTrue(bella.claim_username('bella'))
        jacob = self.make_user('*****@*****.**')

        # Request is made using username.
        CoachRequest.get_or_insert_for(jacob, bella, 'bella')

        requests_for_bella = CoachRequest.get_for_student(bella).fetch(1000)
        self.assertEqual(1, len(requests_for_bella))
        self.assertEqual(bella.username,
                         requests_for_bella[0].student_requested_identifier)

        requests_by_jacob = CoachRequest.get_for_coach(jacob).fetch(1000)
        self.assertEqual(1, len(requests_by_jacob))
        self.assertEqual(bella.username,
                         requests_by_jacob[0].student_requested_identifier)