From 33bbc8d77ed932e2c40106757c433f4ca00695a1 Mon Sep 17 00:00:00 2001 From: Saleem Latif Date: Mon, 14 Dec 2015 12:40:50 +0500 Subject: [PATCH] display certificate generate history in reverse chronological order --- lms/djangoapps/certificates/models.py | 6 +++--- lms/djangoapps/instructor/views/api.py | 11 +++++++++-- .../instructor/views/instructor_dashboard.py | 3 ++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index e85b72d942..4061b70edf 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -294,9 +294,9 @@ class CertificateGenerationHistory(TimeStampedModel): [CertificateStatuses.readable_statuses.get(status, "") for status in statuses] ) - # If statuses_to_regenerate is not present in task_input then, certificate generation task was run to - # generate certificates for white listed students - return "for exceptions" + # If students is present in task_input then, certificate generation task was run to + # generate certificates for white listed students otherwise it is for all students. + return "For exceptions" if 'students' in task_input_json else "All learners" class Meta(object): app_label = "certificates" diff --git a/lms/djangoapps/instructor/views/api.py b/lms/djangoapps/instructor/views/api.py index bab6c47f89..6898e7c6ef 100644 --- a/lms/djangoapps/instructor/views/api.py +++ b/lms/djangoapps/instructor/views/api.py @@ -92,7 +92,7 @@ from instructor.views import INVOICE_KEY from submissions import api as sub_api # installed from the edx-submissions repository from certificates import api as certs_api -from certificates.models import CertificateWhitelist, GeneratedCertificate +from certificates.models import CertificateWhitelist, GeneratedCertificate, CertificateStatuses from bulk_email.models import CourseEmail from student.models import get_user_by_username_or_email @@ -2708,7 +2708,7 @@ def start_certificate_regeneration(request, course_id): ) # Check if the selected statuses are allowed - allowed_statuses = GeneratedCertificate.get_unique_statuses(course_key=course_key, flat=True) + allowed_statuses = [CertificateStatuses.downloadable, CertificateStatuses.error, CertificateStatuses.notpassing] if not set(certificates_statuses).issubset(allowed_statuses): return JsonResponse( {'message': _('Please select certificate statuses from the list only.')}, @@ -2789,11 +2789,18 @@ def add_certificate_exception(course_key, student, certificate_exception): } ) + generated_certificate = GeneratedCertificate.objects.filter( + user=student, + course_id=course_key, + status=CertificateStatuses.downloadable, + ).first() + exception = dict({ 'id': certificate_white_list.id, 'user_email': student.email, 'user_name': student.username, 'user_id': student.id, + 'certificate_generated': generated_certificate and generated_certificate.created_date.strftime("%B %d, %Y"), 'created': certificate_white_list.created.strftime("%A, %B %d, %Y"), }) diff --git a/lms/djangoapps/instructor/views/instructor_dashboard.py b/lms/djangoapps/instructor/views/instructor_dashboard.py index dba499e1c2..3fefde4464 100644 --- a/lms/djangoapps/instructor/views/instructor_dashboard.py +++ b/lms/djangoapps/instructor/views/instructor_dashboard.py @@ -324,7 +324,8 @@ def _section_certificates(course): 'active_certificate': certs_api.get_active_web_certificate(course), 'certificate_statuses_with_count': certificate_statuses_with_count, 'status': CertificateStatuses, - 'certificate_generation_history': CertificateGenerationHistory.objects.filter(course_id=course.id), + 'certificate_generation_history': + CertificateGenerationHistory.objects.filter(course_id=course.id).order_by("-created"), 'urls': { 'generate_example_certificates': reverse( 'generate_example_certificates',