Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 5
0
    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)