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..cd0e7fa356 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,37 @@ 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=error_msg, + ) + # Default: success 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}") @@ -3679,34 +3686,40 @@ async def groups_group_onenote_notebooks_notebook_sections_onenote_section_copy_ """ # Build query parameters including OData for OneNote try: - # Use typed query parameters - query_params = RequestConfiguration() - # 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 + # Eliminate repeated RequestConfiguration() instantiations when no params are provided + query_params = None + have_query_params = ( + select or expand or filter or orderby or search or top is not None or skip is not None + ) + if have_query_params: + query_params = RequestConfiguration() + 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 + # Create proper typed request configuration config = RequestConfiguration() - config.query_parameters = query_params + if query_params: + config.query_parameters = query_params if headers: config.headers = headers # Add consistency level for search operations in OneNote if search: - if not config.headers: + if not getattr(config, "headers", None): config.headers = {} config.headers['ConsistencyLevel'] = 'eventual'