Пример #1
0
 def test_has_paid_for_any_in_program(self):
     """
     Assert that has_paid_for_any_in_program returns True if any CourseRun associated with a Program has been
     paid for.
     """
     new_program = ProgramFactory.create()
     new_course_runs = CourseRunFactory.create_batch(2, course__program=new_program)
     mmtrack = MMTrack(
         user=self.user,
         program=new_program,
         edx_user_data=self.cached_edx_user_data
     )
     assert mmtrack.has_paid_for_any_in_program() is False
     fg = FinalGradeFactory.create(user=self.user, course_run=new_course_runs[0], course_run_paid_on_edx=True)
     assert mmtrack.has_paid_for_any_in_program() is True
     fg.delete()
     FinalGradeFactory.create(user=self.user, course_run=new_course_runs[1], course_run_paid_on_edx=True)
     assert mmtrack.has_paid_for_any_in_program() is True
Пример #2
0
 def test_has_paid_for_any_in_program(self):
     """
     Assert that has_paid_for_any_in_program returns True if any CourseRun associated with a Program has been
     paid for.
     """
     new_program = ProgramFactory.create()
     new_course_runs = CourseRunFactory.create_batch(2, course__program=new_program)
     mmtrack = MMTrack(
         user=self.user,
         program=new_program,
         edx_user_data=self.cached_edx_user_data
     )
     assert mmtrack.has_paid_for_any_in_program() is False
     fg = FinalGradeFactory.create(user=self.user, course_run=new_course_runs[0], course_run_paid_on_edx=True)
     assert mmtrack.has_paid_for_any_in_program() is True
     fg.delete()
     FinalGradeFactory.create(user=self.user, course_run=new_course_runs[1], course_run_paid_on_edx=True)
     assert mmtrack.has_paid_for_any_in_program() is True
Пример #3
0
    def has_object_permission(self, request, view, obj):
        """
        Returns True if the user has the permission to message a specific learner.
        Args:
            request (Request): DRF request object
            view (View): DRF view object
            obj (Profile): Recipient Profile object
        Returns:
            boolean
        """
        if not obj.email_optin:
            return False

        sender_user = request.user
        recipient_enrolled_program_ids = obj.user.programenrollment_set.values_list('program', flat=True)

        # If the sender is a staff/instructor in any of the recipients enrolled programs, the
        # sender has permission
        if sender_user.role_set.filter(
                role__in=[Staff.ROLE_ID, Instructor.ROLE_ID],
                program__id__in=recipient_enrolled_program_ids
        ).exists():
            return True

        # If the sender has paid for any course run in any of the recipient's enrolled programs, the
        # sender has permission
        matching_program_enrollments = (
            sender_user.programenrollment_set
            .filter(program__id__in=recipient_enrolled_program_ids)
            .select_related('program').all()
        )
        edx_user_data = CachedEdxUserData(sender_user)
        for program_enrollment in matching_program_enrollments:
            mmtrack = MMTrack(
                sender_user,
                program_enrollment.program,
                edx_user_data
            )
            if mmtrack.has_paid_for_any_in_program():
                return True

        return False
Пример #4
0
    def has_object_permission(self, request, view, obj):
        """
        Returns True if the user has the permission to message a specific learner.
        Args:
            request (Request): DRF request object
            view (View): DRF view object
            obj (Profile): Recipient Profile object
        Returns:
            boolean
        """
        if not obj.email_optin:
            return False

        sender_user = request.user
        recipient_enrolled_program_ids = obj.user.programenrollment_set.values_list(
            'program', flat=True)

        # If the sender is a staff/instructor in any of the recipients enrolled programs, the
        # sender has permission
        if sender_user.role_set.filter(
                role__in=[Staff.ROLE_ID, Instructor.ROLE_ID],
                program__id__in=recipient_enrolled_program_ids).exists():
            return True

        # If the sender has paid for any course run in any of the recipient's enrolled programs, the
        # sender has permission
        matching_program_enrollments = (
            sender_user.programenrollment_set.filter(
                program__id__in=recipient_enrolled_program_ids).select_related(
                    'program').all())
        edx_user_data = CachedEdxUserData(sender_user)
        for program_enrollment in matching_program_enrollments:
            mmtrack = MMTrack(sender_user, program_enrollment.program,
                              edx_user_data)
            if mmtrack.has_paid_for_any_in_program():
                return True

        return False