@utilities.arguments_not_none<EOL><INDENT>def delete_assessment(self, assessment_id):<DEDENT>
"""<STR_LIT>"""<EOL>def remove_children_parts(parent_id):<EOL><INDENT>part_collection = JSONClientValidated('<STR_LIT>',<EOL>collection='<STR_LIT>',<EOL>runtime=self._runtime)<EOL>if '<STR_LIT>' in parent_id:<EOL><INDENT>query = {"<STR_LIT>": parent_id}<EOL><DEDENT>else:<EOL><INDENT>query = {"<STR_LIT>": parent_id}<EOL><DEDENT>for part in part_collection.find(query):<EOL><INDENT>part = assessment_authoring_objects.AssessmentPart(osid_object_map=part,<EOL>runtime=self._runtime,<EOL>proxy=self._proxy)<EOL>apls = get_assessment_part_lookup_session(runtime=self._runtime,<EOL>proxy=self._proxy)<EOL>apls.use_unsequestered_assessment_part_view()<EOL>apls.use_federated_bank_view()<EOL>part = apls.get_assessment_part(part.ident)<EOL>try:<EOL><INDENT>part.delete()<EOL><DEDENT>except AttributeError:<EOL><INDENT>part_collection.delete_one({'<STR_LIT>': ObjectId(part.ident.get_identifier())})<EOL><DEDENT>remove_children_parts(str(part.ident))<EOL><DEDENT><DEDENT>if not isinstance(assessment_id, ABCId):<EOL><INDENT>raise errors.InvalidArgument('<STR_LIT>')<EOL><DEDENT>collection = JSONClientValidated('<STR_LIT>',<EOL>collection='<STR_LIT>',<EOL>runtime=self._runtime)<EOL>if collection.find({'<STR_LIT>': str(assessment_id)}).count() != <NUM_LIT:0>:<EOL><INDENT>raise errors.IllegalState('<STR_LIT>')<EOL><DEDENT>collection = JSONClientValidated('<STR_LIT>',<EOL>collection='<STR_LIT>',<EOL>runtime=self._runtime)<EOL>collection.delete_one({'<STR_LIT>': ObjectId(assessment_id.get_identifier())})<EOL>remove_children_parts(str(assessment_id))<EOL>
Deletes an ``Assessment``.

        arg:    assessment_id (osid.id.Id): the ``Id`` of the
                ``Assessment`` to remove
        raise:  NotFound - ``assessment_id`` not found
        raise:  NullArgument - ``assessment_id`` is ``null``
        raise:  OperationFailed - unable to complete request
        raise:  PermissionDenied - authorization failure occurred
        *compliance: mandatory -- This method must be implemented.*