Monday, September 1, 2025
13 changes · 17.0
Resolved issues and error corrections
Refreshing the final page of a live survey session no longer causes an error if a survey question was deleted in the meantime. This keeps completed survey sessions accessible and avoids a disruptive crash for users or respondents.
Original PR description
Currently, an error occurs when refreshing a live session's `Thank You` page after deleting a survey question. **Steps to reproduce:** - Install the `survey` module. - Create a `new survey`, `add a question` and click on `Create Live Session`. - Complete the survey and leave it on the `Thank You` page. - Switch back to the `first tab`, delete the question and `save` the survey. - Return to the `Thank You` tab and `refresh` the page. **Error:** `IndexError: list index out of range` **Root Cause:** At [1], the controller assumes the question exists and tries to access `index [0]`, but when the question has been deleted, the recordset is empty, causing an `error`. [1] https://github.com/odoo/odoo/blob/ffd9c0f96bda1bad1ad2059d9be2fae54b60eace/addons/survey/controllers/survey_session_manage.py#L236 This commit prevents a crash when refreshing a live session if the question was deleted. sentry-6736648824
Automation Rules can no longer be selected as the target model for new automation rules. This avoids a crash that could occur when users changed an existing rule to another business model and saved trigger conditions.
Original PR description
The system will crash with an error when we create an automation rule using the **Automation Rule** model and set the trigger to **On Save**. After saving, if we edit that rule and change the model…
The system will crash with an error when we create an automation rule using the **Automation Rule** model and set the trigger to **On Save**. After saving, if we edit that rule and change the model to **Lead/Opportunity** and set the trigger to **Stage is set to** = NEW, and then save the rule again, the system will encounter an error.
**Steps to Produce:-**
1. Install **CRM** and **Automation Rules**.
2. **Settings > Technical > Automation > Automation Rules**.
3. Create a new rule using the **Automation Rule** model.
4. In trigger select **On Save** then **Save** the rule.
5. Then change the model to **LEAD/OPPORTUNITY)** and in trigger set **stage is set to**.
6. Try to **Save** the rule.
**Error:-**
`ValueError: Invalid field in filter of base.automation: [('stage_id', '=', 1)]`
**Solution:-**
- Disable the option to display the Automation Rule in the selection.
**Sentry - 6641811582**
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fix prevents errors when an image download from Unsplash is interrupted before completion. Users should experience fewer failed image selections and a more reliable Unsplash integration.
Original PR description
This PR enhances the error handling in the `web_unsplash` controller, particularly for situations where image downloads from Unsplash fail due to `incomplete data transfers`. **Error:-**…
This PR enhances the error handling in the `web_unsplash` controller, particularly for situations where image downloads from Unsplash fail due to `incomplete data transfers`. **Error:-** `ChunkedEncodingError: (Connection broken: IncompleteRead(303138 bytes read, 793090 more expected), IncompleteRead(303138 bytes read, 793090 more expected)` **Root Cause:-** - At [1], we can see that there is a possibility of errors when `incomplete data transfer` occurs, as well as `connection errors` and `timeouts`. - At [2], we have already handled the `connection` and `timeout` errors. [1] https://github.com/odoo/odoo/blob/ca7de6b2fbe4626583b67a34d77bbb523d972f79/addons/web_unsplash/controllers/main.py#L88 [2] https://github.com/odoo/odoo/blob/ca7de6b2fbe4626583b67a34d77bbb523d972f79/addons/web_unsplash/controllers/main.py#L94-L99 **Solution:-** - In this commit, we apply the same fix for `ChunkedEncodingError` that we implemented for other exceptions. **Sentry-6209237744** I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error during Saudi e-invoicing journal re-onboarding when the tax authority returns error details in an unexpected format. It helps users see the actual issue instead of experiencing a system crash, making the onboarding process more reliable.
Original PR description
Currently, an error occurs when re-onboarding a journal if the ZATCA CCSID API returns `errors` in a list format. **Error:** `TypeError: string indices must be integers, not 'str'` **Root Cause:** At [1], the code assumes that `CCSID_data['errors'][0]` is always a dictionary containing a `message` key. However, when the function at [2] returns the errors as a list of strings, it causes an invalid indexing operation. [1] https://github.com/odoo/odoo/blob/385627ff85779a80a5a27d889bc212095754f41a/addons/l10n_sa_edi/models/account_journal.py#L279-L282 [2] https://github.com/odoo/odoo/blob/385627ff85779a80a5a27d889bc212095754f41a/addons/l10n_sa_edi/models/account_journal.py#L601-L604 This commit adds a safe check for the `message` key and handles both dictionary and list formats in the errors response. sentry-6747269450
The Unsplash photo picker now handles temporary connection failures more gracefully. If the external photo service cannot be reached, users avoid a system error and the application remains stable.
Original PR description
The system generates an error when the photo loading likely fails due to a temporary DNS resolution error that prevented api.unsplash.com from being resolved to an IP address. **Error:-** `ConnectionError: HTTPSConnectionPool(host='api.unsplash.com', port=443): Max retries exceeded with url: /search/photos/?query=cow&page=1&per_page=30 &client_id=f01a0029f1057eb8c2e7540997df64b5052ff8b1c5d908a92168a6c30b2765b0 (Caused by NameResolutionError(< urllib3. connection.HTTPSConnection object at 0x72156cdaef30>: Failed to resolve 'api.unsplash.com' ([Errno -2] Name or service not known)))` **Solution:-** - Added a try-except block to prevent crashes during HTTP requests and handle exceptions properly. **Sentry - 6557160164** I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an unexpected system error when saving a view that has an incomplete xpath entry. Users now receive a clearer error message, helping administrators identify and correct the missing information more easily.
Original PR description
Currently, an error occurs when creating a `view` with a `<xpath>` node that is missing the `'expr'` attribute. **Steps to produce:** - Navigate to: `Settings > Technical > User Interface > Views`. - Create a `New view` and select any `Inherited View`. - set `Architecture` to `'<xpath></xpath>'` and try to `save` it. **Error:** `TypeError: Argument must be bytes or unicode, got 'NoneType' ` **Root Cause:** at [1], the `expr` is `None`, and passing it to `ETXPath()` causes an `Error`. [1] https://github.com/odoo/odoo/blob/5201fb02145532e7311986068655e12eaf1ae3ce/odoo/tools/template_inheritance.py#L87 This commit ensures an error message is raised, when the `expr` attribute is missing from a `<xpath>` node. Sentry – 6669873478
Saving a website page with an embedded field missing required type information now shows a clear error instead of causing an unexpected crash. This helps website editors understand what needs to be fixed and prevents a confusing save failure.
Original PR description
Currently, an error occurs when saving a website page that contains an embedded field missing the `'data-oe-type'` attribute. **Steps to produce:** - Install the `website` module. - Open the `Website` app and click `Edit`. - Drag an `Embed Code` block and add the following content: `<span data-oe-field='name' data-oe-model='res.partner' />`. - Try to `Save` it. **Error:** `TypeError: can only concatenate str (not 'NoneType') to str` **Root Cause:** At [1], the value of `data-oe-type` is `None`, causes an `Error`. [1] https://github.com/odoo/odoo/blob/f0d49213ab919bb507e88d1ac725aed92401590b/addons/web_editor/models/ir_ui_view.py#L67 This commit ensures an error message is raised, when `data-oe-type` is missing from the embedded element. Sentry – 6675421840
Creating an employee from a customized form that omits the name field now avoids an unexpected error. This helps HR users and administrators save or test custom employee views without triggering a crash.
Original PR description
Currently, when a user creates a custom form view for the **employee page** without Adding a required field **name** and trying to create an employee, an error is encountered. **Steps to Reproduce:** - Install **HR** module. - Create a new **empty form view** for the `hr.employee` model. - Open the newly created view and click on save. **Error:** `KeyError: 'name'` **Root Cause:** The `_prepare_resource_values` method assumes the 'name' key is present in vals at [1] tries to pop it without checking for its existence. [1]- https://github.com/odoo/odoo/blob/06ec1de2dd8ec5fdb104275cf2bbb3f9f73841da/addons/hr/models/hr_employee.py#L386 **Solution:** This commit ensures that if the `name` key is not present, the method returns `None` instead of raising Error. Sentry-6234873849 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Reversal entries created from tax closing entries will no longer be treated as new tax closing entries. This prevents unintended PDF generation and avoids incorrectly updating the tax lock date.
Original PR description
When you want to create a reversal entry for a tax closing entry, the reversal entry would also be considered a tax closing entry, generate the PDF and set the tax lock date. This is unwanted behavior caused by the fact that creating the the reversal entry copies the `tax_closing_end_date`. In this commit we prevent that field from being copied. Discovered during [task-4525909](https://www.odoo.com/odoo/project.task/4525909) Forward-Port-Of: odoo/enterprise#80603
Opening an empty XLSX file in Odoo Documents no longer triggers a confusing system error. Users now receive a clear error message, helping them understand the file cannot be opened as a spreadsheet.
Original PR description
Currently, an error occurs when trying to open an `empty XLSX` file in the `Odoo Spreadsheet interface`. **Step to produce:** - Install `documents_spreadsheet` module. - Upload [empty.xlsx](https://docs.google.com/spreadsheets/d/1hE3ig2qj2mhRCsh81l3hRVINPDww7VyU/edit?usp=sharing&ouid=106696885518688776086&rtpof=true&sd=true) to the Documents app. - In the Kanban view, click `empty.xlsx > Open with Odoo Spreadsheet`. **Error:** `TypeError: a bytes-like object is required, not 'bool'` **Root Cause:** At [1], `self.attachment_id.raw` is `False`, and passing it to `io.BytesIO()`, causes an Error. [1] https://github.com/odoo/enterprise/blob/8eff9194618a1d181c57820829e53aa23c7759d5/documents_spreadsheet/models/documents_document.py#L281 This commit ensures an error message is raised, when trying to open an empty XLSX file. Sentry – 6690850072
Uploading an OFX bank statement without required balance information now shows a clear error instead of failing unexpectedly. This helps accounting users understand why the import cannot proceed and avoids confusing system errors.
Original PR description
Currently, an error occurs when uploading an `OFX bank statement` file that does not contain a `<LEDGERBAL>` section. **Steps to produce:** - Install the `account_bank_statement_import_ofx` module. - Open invoicing and Upload [this](https://drive.google.com/file/d/1M_4fT6Z48am5rENoMpqL4l2T-pUUXyQ4/view?usp=sharing) file in Bank statements. **Error:** `AttributeError: 'Statement' object has no attribute 'balance'` **Root Cause:** At [1], the OFX file parsing expects a `<LEDGERBAL>` section to set the balance, and its absence causes an error. [1] https://github.com/odoo/enterprise/blob/0b6260ba545bd22dc40f687057e52afc8391abf9/account_bank_statement_import_ofx/models/account_journal.py#L167-L173 This commit ensures an error message is raised, when the OFX file does not contain the `<LEDGERBAL>` section. Sentry – 6701298443
SMS steps in marketing automation now run in a more predictable order, making campaign behavior easier to test and troubleshoot. The update also adds coverage for Twilio-based SMS sending, reducing the risk of issues when businesses use Twilio as their SMS provider.
QIF bank statement imports now detect invalid transaction date entries and show a clear user-facing explanation instead of failing with a technical error. This helps accounting users understand and correct malformed import files more quickly.
Original PR description
Currently, an error occurs when uploading a QIF file containing invalid data in the transaction date line (e.g., arbitrary text instead of a date). **Steps to produce:** - Install the…
Currently, an error occurs when uploading a QIF file containing invalid data in the transaction date line (e.g., arbitrary text instead of a date). **Steps to produce:** - Install the `account_bank_statement_import_qif` module. - Open invoicing and Upload [this](https://drive.google.com/file/d/1i5JTqAZOiT0bLl3h5W-g_iA76hUX5aEs/view?usp=sharing) file in Bank statements. **Error:** `ParserError: Unknown string format: b'BA AMERIPHARMA 132 S ANITA DR STE 210 ORANGE CA 92868-3317'` **Root Cause:** At [1] , the QIF import parser attempts to parse any line that starts with `D (DATE_OF_TRANSACTION)` as a date without validating whether the content is actually a valid date. This leads to a `ParserError` when the string is not in a recognizable date format. [1] https://github.com/odoo/enterprise/blob/3d89d9fe6be8e789278dee9bc706e091ee5a0ec5/account_bank_statement_import_qif/models/account_journal.py#L80 This commit ensures and gives a clear explanation to user, when a QIF file contains invalid date formats. sentry - 6644946417