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)
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)
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'])
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)
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)
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) )
def _attach_run_mode_marketing_url(self, run_mode): run_mode['marketing_url'] = get_run_marketing_url(self.course_key, self.user)
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