<%page expression_filter="h"/> <%inherit file="/main.html" /> <%namespace name='static' file='/static_content.html'/> <%def name="online_help_token()"><% return "progress" %> <%! from course_modes.models import CourseMode from lms.djangoapps.certificates.models import CertificateStatuses from lms.djangoapps.grades.models import PersistentSubsectionGradeOverrideHistory from django.utils.translation import ugettext as _ from openedx.core.djangolib.markup import HTML, Text from django.urls import reverse from django.conf import settings from django.utils.http import urlquote_plus from six import text_type from openedx.features.enterprise_support.utils import get_enterprise_learner_generic_name %> <% username = get_enterprise_learner_generic_name(request) or student.username %> <%block name="bodyclass">view-in-course view-progress <%block name="headextra"> <%static:css group='style-course-vendor'/> <%static:css group='style-course'/> <%namespace name="progress_graph" file="/courseware/progress_graph.js"/> <%block name="pagetitle">${_("{course_number} Progress").format(course_number=course.display_number_with_default)} <%block name="js_extra"> <%include file="/courseware/course_navigation.html" args="active_page='progress'" />
% if staff_access and studio_url is not None: % endif

${_("Course Progress for Student '{username}' ({email})").format(username=username, email=student.email)}

% if course_expiration_fragment: ${HTML(course_expiration_fragment.content)} % endif
<%block name="certificate_block"> %if certificate_data:
<% post_url = reverse('generate_user_cert', args=[unicode(course.id)]) %>

${_(certificate_data.title)}

${_(certificate_data.msg)}

%if certificate_data.cert_web_view_url: ${_("View Certificate")} ${_("Opens in a new browser window")} %elif certificate_data.cert_status == CertificateStatuses.downloadable and certificate_data.download_url: ${_("Download Your Certificate")} ${_("Opens in a new browser window")} %elif certificate_data.cert_status == CertificateStatuses.requesting: %endif
%endif
%if not course.disable_progress_graph:
%endif % if credit_course_requirements:

${_("Requirements for Course Credit")}

%if credit_course_requirements['eligibility_status'] == 'not_eligible': ${_("{student_name}, you are no longer eligible for credit in this course.").format(student_name=student.profile.name)} %elif credit_course_requirements['eligibility_status'] == 'eligible': ${Text(_("{student_name}, you have met the requirements for credit in this course. {a_start}Go to your dashboard{a_end} to purchase course credit.")).format( student_name=student.profile.name, a_start=HTML("").format(url=reverse('dashboard')), a_end=HTML("") )} %elif credit_course_requirements['eligibility_status'] == 'partial_eligible': ${_("{student_name}, you have not yet met the requirements for credit.").format(student_name=student.profile.name)} %endif ${_("Information about course credit requirements")}
%for requirement in credit_course_requirements['requirements']:
${_(requirement['display_name'])} %if requirement['namespace'] == 'grade': ${int(requirement['criteria']['min_grade'] * 100)}% %endif
%if requirement['status']: %if requirement['status'] == 'submitted': %elif requirement['status'] == 'failed': ${_("Verification Failed" )} %elif requirement['status'] == 'declined': ${_("Verification Declined" )} %elif requirement['status'] == 'satisfied': %endif %else: ${_("Upcoming")} %endif
%endfor
%endif %if courseware_summary:

${_('Details for each chapter')}

%for chapter in courseware_summary: %if not chapter['display_name'] == "hidden":

${ chapter['display_name']}

%for section in chapter['sections']:
<% earned = section.graded_total.earned total = section.graded_total.possible percentageString = "{0:.0%}".format(section.percent_graded) if total > 0 or earned > 0 else "" %>

${ section.display_name} %if total > 0 or earned > 0: ${_("{earned} of {total} possible points").format(earned='{:.3n}'.format(float(earned)), total='{:.3n}'.format(float(total)))} %endif %if total > 0 or earned > 0: ${"({0:.3n}/{1:.3n}) {2}".format( float(earned), float(total), percentageString )} %endif

%if section.format is not None: ${section.format} %endif %if section.due is not None: %endif

%if section.override is not None: <%last_override_history = section.override.get_history().order_by('created').last()%> %if (not last_override_history or last_override_history.feature == PersistentSubsectionGradeOverrideHistory.PROCTORING) and section.format == "Exam" and earned == 0: ${_("Suspicious activity detected during proctored exam review. Exam score 0.")} %else: ${_("Section grade has been overridden.")} %endif %endif

%if len(section.problem_scores.values()) > 0: %if section.show_grades(staff_access):
${ _("Problem Scores: ") if section.graded else _("Practice Scores: ")}
%for score in section.problem_scores.values():
${"{0:.3n}/{1:.3n}".format(float(score.earned),float(score.possible))}
%endfor
%else:

%if section.show_correctness == 'past_due': %if section.graded: ${_("Problem scores are hidden until the due date.")} %else: ${_("Practice scores are hidden until the due date.")} %endif %else: %if section.graded: ${_("Problem scores are hidden.")} %else: ${_("Practice scores are hidden.")} %endif %endif

%endif %else:

${_("No problem scores in this section")}

%endif
%endfor
%endif %endfor
%endif
<%static:require_module_async module_name="js/dateutil_factory" class_name="DateUtilFactory"> DateUtilFactory.transform(iterationKey=".localized-datetime");