def transform_description(self, content_metadata_item): """ Return the description of the content item. Also include the course pacing, and start and end dates. """ description_with_locales = [] description = (content_metadata_item.get('full_description') or content_metadata_item.get('short_description') or content_metadata_item.get('title', '')) course_runs = content_metadata_item.get('course_runs') if course_runs: closest_course_run = get_closest_course_run(course_runs) # Include the course run start and end dates date_str = self._get_course_run_start_end_str(closest_course_run) if date_str: description = date_str + description # Include the course pacing course_pacing = CourseEnrollmentView.PACING_FORMAT.get( closest_course_run['pacing_type'], '') if course_pacing: pacing_desc = 'Pacing: {pacing_type}. '.format( pacing_type=course_pacing) description = pacing_desc + description for locale in self.enterprise_configuration.get_locales(): description_with_locales.append({ 'locale': locale, 'value': description }) return description_with_locales
def transform_modified(self, content_metadata_item): """ Return the modified datetime of closest course run`. """ modified_datetime = datetime.datetime.now(pytz.UTC).strftime(ISO_8601_DATE_FORMAT) course_runs = content_metadata_item.get('course_runs') if course_runs: closest_course_run = get_closest_course_run(course_runs) modified_datetime = closest_course_run.get('modified', modified_datetime) return str(modified_datetime)
def transform_estimated_hours(self, content_metadata_item): """ Return the duration of course in hh:mm:ss format. """ duration = None course_runs = content_metadata_item.get('course_runs') if course_runs: closest_course_run = get_closest_course_run(course_runs) estimated_hours = closest_course_run.get('estimated_hours') duration = get_duration_from_estimated_hours(estimated_hours) return duration
def transform_estimated_hours(self, content_metadata_item): """ Return the duration of course in hh:mm:ss format. """ duration = None course_runs = content_metadata_item.get('course_runs') if course_runs: closest_course_run = get_closest_course_run(course_runs) estimated_hours = closest_course_run.get('estimated_hours') if estimated_hours and isinstance(estimated_hours, (int, float)): fraction, whole_number = math.modf(estimated_hours) hours = "{:02d}".format(int(whole_number)) minutes = "{:02d}".format(int(60 * fraction)) duration = "{hours}:{minutes}:00".format(hours=hours, minutes=minutes) return duration
def transform_description(self, content_metadata_item): """ Return the transformed version of the course description. We choose one value out of the course's full description, short description, and title depending on availability and length limits. """ course_runs = content_metadata_item.get('course_runs') duration_info = get_course_run_duration_info( get_closest_course_run(course_runs) ) if course_runs else '' full_description = content_metadata_item.get('full_description') or '' if full_description and 0 < len(full_description + duration_info) <= self.LONG_STRING_LIMIT: # pylint: disable=len-as-condition description = full_description else: description = content_metadata_item.get('short_description') or content_metadata_item.get('title') or '' if description: description = "{duration_info}{description}".format(duration_info=duration_info, description=description) return strip_html_tags(description)