# Copyright 2025 Elabore # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import io import openpyxl from odoo.addons.survey.tests import common class TestExcludeFileQuestion(common.TestSurveyCommon): def setUp(self): super().setUp() self.text_question = self._add_question( self.page_0, "Your name", "char_box", survey_id=self.survey.id, ) self.file_question = self._add_question( self.page_0, "Upload your document", "file", constr_mandatory=False, survey_id=self.survey.id, ) answer = self._add_answer(self.survey, False, email="test@example.com") self._add_answer_line(self.text_question, answer, "Alice") self.env["survey.user_input.line"].create({ "user_input_id": answer.id, "question_id": self.file_question.id, "answer_type": "file", "skipped": False, "value_file": "ZmFrZQ==", "value_file_fname": "doc.pdf", }) answer._mark_done() def _get_sheet(self): report = self.env.ref("survey_xlsx.report_survey_xlsx") rep = self.env["ir.actions.report"]._render(report, self.survey.ids, {}) wb = openpyxl.load_workbook(io.BytesIO(rep[0])) return wb.worksheets[0] def _find_col(self, sheet, header): for col in range(1, sheet.max_column + 1): if sheet.cell(1, col).value == header: return col return None def test_file_question_excluded(self): sheet = self._get_sheet() # Regular questions are still exported self.assertIsNotNone(self._find_col(sheet, "Your name")) # File questions get no column at all self.assertIsNone(self._find_col(sheet, "Upload your document"))