SG Addon: 0.3.2
Hi all,
I am testing out the Shotgrid (Or rather Flow Production Tracking lol) Addon. And come across the following error when syncing across a character asset from SG to Ayon:
Error
Logged in as user "service_key"
2024-03-26 03:51:59 DEBUG Succesfully connected to Shotgrid.
2024-03-26 03:52:00 INFO Project BJ0003_Ayon_SGCreated_Test <BJ0003_Ayon_SGCreated_Test> already exists in AYON.
2024-03-26 03:52:00 INFO Project BJ0003_Ayon_SGCreated_Test (BJ0003) <519> already exists in Shotgrid.
2024-03-26 03:52:01 DEBUG Transforming sg_entity '{'type': 'Asset', 'id': 1778, 'code': 'TestChar', 'sg_status_list': 'wtg', 'tags': [], 'project': {'id': 519, 'name': 'BJ0003_Ayon_SGCreated_Test', 'type': 'Project'}, 'shots': [], 'sg_asset_type': 'Character', 'sg_ayon_id': None, 'sg_ayon_sync_status': None}' to ayon dict.
2024-03-26 03:52:01 WARNING Shotgrid Missing Ayon ID
2024-03-26 03:52:01 ERROR Unable to process handler shotgrid_event
2024-03-26 03:52:01 ERROR 'NoneType' object has no attribute 'lower'
Traceback (most recent call last):
File "/service/processor/processor.py", line 161, in start_processing
handler.process_event(
File "/service/processor/handlers/shotgrid_event.py", line 45, in process_event
hub.react_to_shotgrid_event(sg_payload["meta"])
File "/service/ayon_shotgrid_hub/__init__.py", line 335, in react_to_shotgrid_event
update_ayon_entity_from_sg_event(
File "/service/ayon_shotgrid_hub/update_from_shotgrid.py", line 213, in update_ayon_entity_from_sg_event
["task" if sg_entity_dict.get(CUST_FIELD_CODE_ID).lower() == "task" else "folder"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'lower'
2024-03-26 03:52:01 ERROR 403 Client Error: Forbidden for url: http://XX.XX.XX.XX:5000/api/events/f4406cf0eb2311eeaaa30242ac130004
Traceback (most recent call last):
File "/service/processor/processor.py", line 161, in start_processing
handler.process_event(
File "/service/processor/handlers/shotgrid_event.py", line 45, in process_event
hub.react_to_shotgrid_event(sg_payload["meta"])
File "/service/ayon_shotgrid_hub/__init__.py", line 335, in react_to_shotgrid_event
update_ayon_entity_from_sg_event(
File "/service/ayon_shotgrid_hub/update_from_shotgrid.py", line 213, in update_ayon_entity_from_sg_event
["task" if sg_entity_dict.get(CUST_FIELD_CODE_ID).lower() == "task" else "folder"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'lower'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/ayon_api/server_api.py", line 199, in raise_for_status
self._response.raise_for_status()
File "/usr/local/lib/python3.11/site-packages/requests/models.py", line 1021, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: http://XX.XX.XX.XX/api/events/f4406cf0eb2311eeaaa30242ac130004
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/service/processor/processor.py", line 176, in start_processing
ayon_api.update_event(
File "/usr/local/lib/python3.11/site-packages/ayon_api/_api.py", line 518, in update_event
return con.update_event(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/ayon_api/server_api.py", line 1456, in update_event
response.raise_for_status()
File "/usr/local/lib/python3.11/site-packages/ayon_api/server_api.py", line 203, in raise_for_status
raise HTTPRequestError(message, exc.response)
ayon_api.exceptions.HTTPRequestError: 403 Client Error: Forbidden for url: http://XX.XX.XX.XX/api/events/f4406cf0eb2311eeaaa30242ac130004
Obviously sg_parent_entity_dict.get(CUST_FIELD_CODE_ID) isn’t returning anything, presumably due to the Client Error? This only occurs when the leecher finds and syncs a character asset as it works fine with other asset types (prop, env, vehicle) so its a bit strange it fails here.
Is there a best practice I am not following? I am creating assets in SG then syncing them across, is there some catch I’m missing? I have tried with both the flat and Type > Asset Hierarchy in SG so I don’t believe that is the issue.
I would also note that deleting assets in SG doesn’t seem to remove them from Ayon despite the logs saying that it worked.
Summary
DEBUG Succesfully connected to Shotgrid.
INFO Project BJ0003_Ayon_SGCreated_Test <BJ0003_Ayon_SGCreated_Test> already exists in AYON.
INFO Project BJ0003_Ayon_SGCreated_Test (BJ0003) <519> already exists in Shotgrid.
DEBUG Transforming sg_entity '{'type': 'Asset', 'id': 1780, 'code': 'Motorbike', 'sg_status_list': 'wtg', 'tags': [], 'project': {'id': 519, 'name': 'BJ0003_Ayon_SGCreated_Test', 'type': 'Project'}, 'shots': [], 'sg_asset_type': 'Vehicle', 'sg_ayon_id': '0afbb312eb3011ee958300155d700f23', 'sg_ayon_sync_status': None}' to ayon dict.
DEBUG SG Entity as Ay dict: {'label': 'Motorbike', 'name': 'Motorbike', 'shotgridId': 1780, 'shotgridType': 'Asset', 'sg_ayon_id': '0afbb312eb3011ee958300155d700f23', 'sg_ayon_sync_status': None, 'type': 'Asset'}
INFO Deleting AYON entity: <FolderEntity - 0afbb312eb3011ee958300155d700f23>
INFO Event has been processed... setting to finished!
Apologies, while I am at it, how can you add support for other pipeline steps that are not there by default? The Concept art pipeline step doesn’t appear to exist in Ayon. Is this something easily added or is it better to just avoid using non standard pipeline steps?
Cheers,
Stephen