diff --git a/backend/python/app/sources/external/microsoft/one_note/one_note.py b/backend/python/app/sources/external/microsoft/one_note/one_note.py index 76dbc9ad19..21d3f5f686 100644 --- a/backend/python/app/sources/external/microsoft/one_note/one_note.py +++ b/backend/python/app/sources/external/microsoft/one_note/one_note.py @@ -1,5 +1,3 @@ - - import json import logging from dataclasses import asdict @@ -111,28 +109,35 @@ def _handle_onenote_response(self, response: object) -> OneNoteResponse: if response is None: return OneNoteResponse(success=False, error="Empty response from OneNote API") - success = True - error_msg = None - # Enhanced error response handling for OneNote if hasattr(response, 'error'): - success = False - error_msg = str(response.error) + return OneNoteResponse( + success=False, + data=response, + error=str(response.error), + ) elif isinstance(response, dict) and 'error' in response: - success = False error_info = response['error'] if isinstance(error_info, dict): error_msg = f"{error_info.get('code', 'Unknown')}: {error_info.get('message', 'No message')}" else: error_msg = str(error_info) + return OneNoteResponse( + success=False, + data=response, + error=error_msg, + ) elif hasattr(response, 'code') and hasattr(response, 'message'): - success = False - error_msg = f"{response.code}: {response.message}" + return OneNoteResponse( + success=False, + data=response, + error=f"{response.code}: {response.message}", + ) return OneNoteResponse( - success=success, + success=True, data=response, - error=error_msg, + error=None, ) except Exception as e: logger.error(f"Error handling OneNote response: {e}") @@ -7715,27 +7720,31 @@ async def me_onenote_notebooks_section_groups_sections_pages_get_parent_section( """ # Build query parameters including OData for OneNote try: - # Use typed query parameters - query_params = NotebooksRequestBuilder.NotebooksRequestBuilderGetQueryParameters() - # Set query parameters using typed object properties - if select: - query_params.select = select if isinstance(select, list) else [select] - if expand: - query_params.expand = expand if isinstance(expand, list) else [expand] - if filter: - query_params.filter = filter - if orderby: - query_params.orderby = orderby - if search: - query_params.search = search - if top is not None: - query_params.top = top - if skip is not None: - query_params.skip = skip + # Only create query parameters if needed to avoid unnecessary object creation + if (select or expand or filter or orderby or search or + top is not None or skip is not None): + query_params = NotebooksRequestBuilder.NotebooksRequestBuilderGetQueryParameters() + if select: + query_params.select = select if isinstance(select, list) else [select] + if expand: + query_params.expand = expand if isinstance(expand, list) else [expand] + if filter: + query_params.filter = filter + if orderby: + query_params.orderby = orderby + if search: + query_params.search = search + if top is not None: + query_params.top = top + if skip is not None: + query_params.skip = skip + else: + query_params = None # Create proper typed request configuration config = NotebooksRequestBuilder.NotebooksRequestBuilderGetRequestConfiguration() - config.query_parameters = query_params + if query_params: + config.query_parameters = query_params if headers: config.headers = headers