from rest_framework import status from rest_framework.exceptions import APIException from django.utils.translation import gettext as _ class ExamError(APIException): status_code = status.HTTP_500_INTERNAL_SERVER_ERROR default_detail = _("Exam error.") class ExamAttemptError(ExamError): default_detail = _("Exam attempt error.") class ActiveExamAttemptExistsError(ExamAttemptError): default_detail = _( "You already have an active exam in progress, please finish it first." ) class ExamAttemptSubmitSectionError(ExamAttemptError): default_detail = _("This section cannot be submitted.") class ExamAttemptNotInProgressError(ExamAttemptError): status_code = status.HTTP_403_FORBIDDEN default_detail = _("This exam attempt is not in progress.") class ExamAttemptExpiredError(ExamAttemptError): status_code = status.HTTP_403_FORBIDDEN default_detail = _("This exam attempt has expired.") class ExamRedeemError(ExamError): default_detail = _("Exam redeem error.") class ExamStartError(ExamError): default_detail = _("Exam start error.") class ExamSectionError(ExamError): default_detail = _("Exam section error.") class ExamSectionHandlerCapabilityError(ExamSectionError): default_detail = _("Exam section handler capability error.") class ExamQuestionNotFoundError(ExamSectionError): status_code = status.HTTP_404_NOT_FOUND default_detail = _("Exam question not found.") class ExamAnswerValidationError(ExamSectionError): status_code = status.HTTP_400_BAD_REQUEST default_detail = _("Invalid answer.")