Commit 33bbc8d7 by Saleem Latif Committed by Matt Drayer

display certificate generate history in reverse chronological order

parent 30f25105
...@@ -294,9 +294,9 @@ class CertificateGenerationHistory(TimeStampedModel): ...@@ -294,9 +294,9 @@ class CertificateGenerationHistory(TimeStampedModel):
[CertificateStatuses.readable_statuses.get(status, "") for status in statuses] [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 # If students is present in task_input then, certificate generation task was run to
# generate certificates for white listed students # generate certificates for white listed students otherwise it is for all students.
return "for exceptions" return "For exceptions" if 'students' in task_input_json else "All learners"
class Meta(object): class Meta(object):
app_label = "certificates" app_label = "certificates"
......
...@@ -92,7 +92,7 @@ from instructor.views import INVOICE_KEY ...@@ -92,7 +92,7 @@ from instructor.views import INVOICE_KEY
from submissions import api as sub_api # installed from the edx-submissions repository from submissions import api as sub_api # installed from the edx-submissions repository
from certificates import api as certs_api 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 bulk_email.models import CourseEmail
from student.models import get_user_by_username_or_email from student.models import get_user_by_username_or_email
...@@ -2708,7 +2708,7 @@ def start_certificate_regeneration(request, course_id): ...@@ -2708,7 +2708,7 @@ def start_certificate_regeneration(request, course_id):
) )
# Check if the selected statuses are allowed # 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): if not set(certificates_statuses).issubset(allowed_statuses):
return JsonResponse( return JsonResponse(
{'message': _('Please select certificate statuses from the list only.')}, {'message': _('Please select certificate statuses from the list only.')},
...@@ -2789,11 +2789,18 @@ def add_certificate_exception(course_key, student, certificate_exception): ...@@ -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({ exception = dict({
'id': certificate_white_list.id, 'id': certificate_white_list.id,
'user_email': student.email, 'user_email': student.email,
'user_name': student.username, 'user_name': student.username,
'user_id': student.id, '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"), 'created': certificate_white_list.created.strftime("%A, %B %d, %Y"),
}) })
......
...@@ -324,7 +324,8 @@ def _section_certificates(course): ...@@ -324,7 +324,8 @@ def _section_certificates(course):
'active_certificate': certs_api.get_active_web_certificate(course), 'active_certificate': certs_api.get_active_web_certificate(course),
'certificate_statuses_with_count': certificate_statuses_with_count, 'certificate_statuses_with_count': certificate_statuses_with_count,
'status': CertificateStatuses, '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': { 'urls': {
'generate_example_certificates': reverse( 'generate_example_certificates': reverse(
'generate_example_certificates', 'generate_example_certificates',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment