Auto-commit local changes before build (2026-01-15 13:45:53)

This commit is contained in:
Ivo Oskamp 2026-01-15 13:45:53 +01:00
parent 981d65c274
commit 5b9b6f4c38
3 changed files with 30 additions and 9 deletions

View File

@ -1 +1 @@
v20260115-07-autotask-picklist-field-detect v20260115-08-autotask-entityinfo-fields-shape-fix

View File

@ -167,6 +167,10 @@ class AutotaskClient:
if isinstance(items, list): if isinstance(items, list):
return [x for x in items if isinstance(x, dict)] return [x for x in items if isinstance(x, dict)]
fields = payload.get("fields")
if isinstance(fields, list):
return [x for x in fields if isinstance(x, dict)]
# Some endpoints may return a single object. # Some endpoints may return a single object.
if "id" in payload: if "id" in payload:
return [payload] return [payload]
@ -270,11 +274,15 @@ class AutotaskClient:
if not bool(field.get("isPickList")): if not bool(field.get("isPickList")):
raise AutotaskError(f"Tickets.{field.get('name')} is not marked as a picklist in Autotask metadata.") raise AutotaskError(f"Tickets.{field.get('name')} is not marked as a picklist in Autotask metadata.")
picklist_path = field.get("picklistValues") picklist_values = field.get("picklistValues")
if not isinstance(picklist_path, str) or not picklist_path.strip(): # Autotask may return picklist values inline (as a list) or as a URL/path.
raise AutotaskError(f"Tickets.{field.get('name')} metadata did not include a picklistValues endpoint.") if isinstance(picklist_values, list):
return [x for x in picklist_values if isinstance(x, dict)]
return self._call_picklist_values(picklist_path) if not isinstance(picklist_values, str) or not picklist_values.strip():
raise AutotaskError(f"Tickets.{field.get('name')} metadata did not include picklist values.")
return self._call_picklist_values(picklist_values)
def get_ticket_priorities(self) -> List[Dict[str, Any]]: def get_ticket_priorities(self) -> List[Dict[str, Any]]:
"""Return Ticket Priority picklist values. """Return Ticket Priority picklist values.
@ -314,8 +322,11 @@ class AutotaskClient:
if not bool(priority_field.get("isPickList")): if not bool(priority_field.get("isPickList")):
raise AutotaskError("Tickets.priority is not marked as a picklist in Autotask metadata.") raise AutotaskError("Tickets.priority is not marked as a picklist in Autotask metadata.")
picklist_path = priority_field.get("picklistValues") picklist_values = priority_field.get("picklistValues")
if not isinstance(picklist_path, str) or not picklist_path.strip(): if isinstance(picklist_values, list):
raise AutotaskError("Tickets.priority metadata did not include a picklistValues endpoint.") return [x for x in picklist_values if isinstance(x, dict)]
return self._call_picklist_values(picklist_path) if not isinstance(picklist_values, str) or not picklist_values.strip():
raise AutotaskError("Tickets.priority metadata did not include picklist values.")
return self._call_picklist_values(picklist_values)

View File

@ -64,6 +64,16 @@ Changes:
- Applied the same robust detection logic to ticket priority picklist retrieval. - Applied the same robust detection logic to ticket priority picklist retrieval.
- Prevented connection test failures caused by missing or differently named metadata fields. - Prevented connection test failures caused by missing or differently named metadata fields.
## v20260115-08-autotask-entityinfo-fields-shape-fix
### Changes:
- Fixed parsing of Autotask entityInformation responses to correctly read field metadata from the `fields` attribute.
- Extended metadata normalization to support different response shapes returned by Autotask.
- Improved picklist value handling to support both inline picklist values and URL-based retrieval.
- Resolved failures in queue, source, and priority picklist detection caused by empty or misparsed field metadata.
- Stabilized Autotask connection testing across sandbox environments with differing metadata formats.
*** ***
## v0.1.21 ## v0.1.21