@utilities.arguments_not_none<EOL><INDENT>@check_effective<EOL>def get_previous_unanswered_question(self, assessment_section_id, item_id):<DEDENT>
<EOL>questions = self.get_unanswered_questions(assessment_section_id)<EOL>previous_question = questions.next()<EOL>if previous_question.get_id() == item_id:<EOL><INDENT>raise errors.IllegalState('<STR_LIT>')<EOL><DEDENT>for question in questions:<EOL><INDENT>if question.get_id() == item_id:<EOL><INDENT>return previous_question<EOL><DEDENT>else:<EOL><INDENT>previous_question = question<EOL><DEDENT><DEDENT>raise errors.NotFound('<STR_LIT>')<EOL>
Gets the previous unanswered question in this assesment section.

        arg:    assessment_section_id (osid.id.Id): ``Id`` of the
                ``AssessmentSection``
        arg:    item_id (osid.id.Id): ``Id`` of the ``Item``
        return: (osid.assessment.Question) - the previous unanswered
                question
        raise:  IllegalState - ``has_previous_unanswered_question()`` is
                ``false``
        raise:  NotFound - ``assessment_section_id or item_id is not
                found, or item_id not part of assessment_section_id``
        raise:  NullArgument - ``assessment_section_id or item_id is
                null``
        raise:  OperationFailed - unable to complete request
        raise:  PermissionDenied - authorization failure occurred
        *compliance: mandatory -- This method must be implemented.*