Ejemplo n.º 1
0
    def test_marketing_url_missing(self, mock_strip, mock_get_course_run):
        mock_get_course_run.return_value = {}

        url = utils.get_run_marketing_url(self.course_key, self.user)

        self.assertFalse(mock_strip.called)
        self.assertEqual(url, None)
Ejemplo n.º 2
0
 def test_marketing_url_catalog_course_run_not_found(self):
     with mock.patch(
         "openedx.core.djangoapps.catalog.utils.get_course_runs",
         return_value={self.course_runs[0]["key"]: self.course_runs[0]},
     ):
         course_marketing_url = utils.get_run_marketing_url(self.course_key_1, self.user)
         self.assertEqual(self.course_runs[0]["marketing_url"], course_marketing_url)
Ejemplo n.º 3
0
    def test_get_run_marketing_url(self, mock_get_course_run):
        course_run = factories.CourseRun()
        mock_get_course_run.return_value = course_run

        url = utils.get_run_marketing_url(self.course_key, self.user)

        self.assertEqual(url, course_run['marketing_url'])
Ejemplo n.º 4
0
    def test_marketing_url_missing(self, mock_strip, mock_get_course_run):
        mock_get_course_run.return_value = {}

        url = utils.get_run_marketing_url(self.course_key, self.user)

        self.assertFalse(mock_strip.called)
        self.assertEqual(url, None)
Ejemplo n.º 5
0
    def test_get_run_marketing_url(self, mock_get_course_run):
        course_run = factories.CourseRun()
        mock_get_course_run.return_value = course_run

        url = utils.get_run_marketing_url(self.course_key, self.user)

        self.assertEqual(url, course_run['marketing_url'])
Ejemplo n.º 6
0
    def test_marketing_url_empty(self, mock_strip, mock_get_course_run):
        course_run = factories.CourseRun()
        course_run['marketing_url'] = ''
        mock_get_course_run.return_value = course_run

        url = utils.get_run_marketing_url(self.course_key, self.user)

        self.assertFalse(mock_strip.called)
        self.assertEqual(url, None)
Ejemplo n.º 7
0
    def test_marketing_url_empty(self, mock_strip, mock_get_course_run):
        course_run = factories.CourseRun()
        course_run['marketing_url'] = ''
        mock_get_course_run.return_value = course_run

        url = utils.get_run_marketing_url(self.course_key, self.user)

        self.assertFalse(mock_strip.called)
        self.assertEqual(url, None)
Ejemplo n.º 8
0
 def test_marketing_url_missing(self):
     self.course_runs[1]["marketing_url"] = None
     with mock.patch(
         "openedx.core.djangoapps.catalog.utils.get_course_runs",
         return_value={
             self.course_runs[0]["key"]: self.course_runs[0],
             self.course_runs[1]["key"]: self.course_runs[1],
         },
     ):
         course_marketing_url = utils.get_run_marketing_url(CourseKey.from_string("foo2/bar2/baz2"), self.user)
         self.assertEqual(None, course_marketing_url)
Ejemplo n.º 9
0
def get_link_for_about_page(course_key, user, catalog_course_run=None):
    """
    Returns the url to the course about page.
    """
    assert isinstance(course_key, CourseKey)

    if settings.FEATURES.get("ENABLE_MKTG_SITE"):
        if catalog_course_run:
            marketing_url = catalog_course_run.get("marketing_url")
        else:
            marketing_url = get_run_marketing_url(course_key, user)
        if marketing_url:
            return marketing_url

    return u"{about_base_url}/courses/{course_key}/about".format(
        about_base_url=settings.LMS_ROOT_URL, course_key=unicode(course_key)
    )
Ejemplo n.º 10
0
 def _attach_run_mode_marketing_url(self, run_mode):
     run_mode['marketing_url'] = get_run_marketing_url(self.course_key, self.user)
Ejemplo n.º 11
0
 def _attach_run_mode_marketing_url(self, run_mode):
     run_mode['marketing_url'] = get_run_marketing_url(self.course_key, self.user)
Ejemplo n.º 12
0
def supplement_program_data(program_data, user):
    """Supplement program course codes with CourseOverview and CourseEnrollment data.

    Arguments:
        program_data (dict): Representation of a program.
        user (User): The user whose enrollments to inspect.
    """
    for organization in program_data['organizations']:
        # TODO: Cache the results of the get_organization_by_short_name call so
        # the database is hit less frequently.
        org_obj = get_organization_by_short_name(organization['key'])
        if org_obj and org_obj.get('logo'):
            organization['img'] = org_obj['logo'].url

    for course_code in program_data['course_codes']:
        for run_mode in course_code['run_modes']:
            course_key = CourseKey.from_string(run_mode['course_key'])
            course_overview = CourseOverview.get_from_id(course_key)

            course_url = reverse('course_root', args=[course_key])
            course_image_url = course_overview.course_image_url

            start_date_string = course_overview.start_datetime_text()
            end_date_string = course_overview.end_datetime_text()

            end_date = course_overview.end or datetime.datetime.max.replace(tzinfo=pytz.UTC)
            is_course_ended = end_date < timezone.now()

            is_enrolled = CourseEnrollment.is_enrolled(user, course_key)

            enrollment_start = course_overview.enrollment_start or datetime.datetime.min.replace(tzinfo=pytz.UTC)
            enrollment_end = course_overview.enrollment_end or datetime.datetime.max.replace(tzinfo=pytz.UTC)
            is_enrollment_open = enrollment_start <= timezone.now() < enrollment_end

            enrollment_open_date = None if is_enrollment_open else strftime_localized(enrollment_start, 'SHORT_DATE')

            certificate_data = certificate_api.certificate_downloadable_status(user, course_key)
            certificate_uuid = certificate_data.get('uuid')
            certificate_url = certificate_api.get_certificate_url(
                course_id=course_key,
                uuid=certificate_uuid,
            ) if certificate_uuid else None

            required_mode_slug = run_mode['mode_slug']
            enrolled_mode_slug, _ = CourseEnrollment.enrollment_mode_for_user(user, course_key)
            is_mode_mismatch = required_mode_slug != enrolled_mode_slug
            is_upgrade_required = is_enrolled and is_mode_mismatch

            # Requires that the ecommerce service be in use.
            required_mode = CourseMode.mode_for_course(course_key, required_mode_slug)
            ecommerce = EcommerceService()
            sku = getattr(required_mode, 'sku', None)

            if ecommerce.is_enabled(user) and sku:
                upgrade_url = ecommerce.checkout_page_url(required_mode.sku) if is_upgrade_required else None
            else:
                upgrade_url = None

            run_mode.update({
                'certificate_url': certificate_url,
                'course_image_url': course_image_url,
                'course_url': course_url,
                'end_date': end_date_string,
                'enrollment_open_date': enrollment_open_date,
                'is_course_ended': is_course_ended,
                'is_enrolled': is_enrolled,
                'is_enrollment_open': is_enrollment_open,
                'marketing_url': get_run_marketing_url(course_key, user),
                'start_date': start_date_string,
                'upgrade_url': upgrade_url,
            })

    return program_data