🏛️Product base types: settings for creators and usage - #266
Conversation
There was a problem hiding this comment.
Pull request overview
This pull request migrates the codebase from using product_type to product_base_type as part of a broader architectural change to support customizable product types in creator settings. The PR updates the AYON Core dependency to version 1.8.0 or higher and AYON Server to version 1.10.0 or higher, which are required for this functionality.
Changes:
- Added
ProductTypeItemModelto server settings for configuring custom product types in creator plugins - Migrated all loader and creator plugins to use
product_base_typeinstead ofproduct_type - Updated version requirements for AYON Core (>=1.8.0), AYON Server (>1.10.0), and AYON Deadline (>=0.7.0)
Reviewed changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| server/creators.py | Added ProductTypeItemModel and product_type_items field to BasicCreatorModel for customizable product types |
| package.py | Updated version requirements for core, server, and deadline addons |
| client/ayon_unreal/plugins/publish/extract_layout.py | Changed product_type to product_base_type in JSON element data |
| client/ayon_unreal/plugins/publish/create_farm_render_instances.py | Updated to use product_base_type and productBaseType |
| client/ayon_unreal/plugins/publish/collect_render_files.py | Updated to use product_base_type and productBaseType |
| client/ayon_unreal/plugins/load/load_yeticache.py | Added product_base_types attribute with backward compatibility alias |
| client/ayon_unreal/plugins/load/load_uasset.py | Added product_base_types with backward compatibility, updated imprint calls |
| client/ayon_unreal/plugins/load/load_staticmesh_fbx.py | Refactored imprint method with type hints, docstring, and product_base_type support |
| client/ayon_unreal/plugins/load/load_staticmesh_abc.py | Refactored imprint method with type hints, docstring, and product_base_type support |
| client/ayon_unreal/plugins/load/load_skeletalmesh_fbx.py | Refactored imprint method with type hints, docstring, and product_base_type support |
| client/ayon_unreal/plugins/load/load_skeletalmesh_abc.py | Refactored imprint method with type hints, docstring, and product_base_type support |
| client/ayon_unreal/plugins/load/load_layout_existing.py | Updated to use product_base_type with fallback pattern for backward compatibility |
| client/ayon_unreal/plugins/load/load_layout.py | Updated to use product_base_type with fallback pattern for backward compatibility |
| client/ayon_unreal/plugins/load/load_image_png.py | Refactored imprint method with type hints, docstring, and product_base_type support |
| client/ayon_unreal/plugins/load/load_geometrycache_abc.py | Refactored imprint method with type hints, docstring, and product_base_type support |
| client/ayon_unreal/plugins/load/load_camera.py | Refactored imprint method with type hints and docstring |
| client/ayon_unreal/plugins/load/load_animation.py | Refactored imprint method with type hints, docstring, and product_base_type support |
| client/ayon_unreal/plugins/load/load_alembic_animation.py | Refactored imprint method with type hints, docstring, and product_base_type support |
| client/ayon_unreal/plugins/create/create_uasset.py | Added product_base_type attribute with backward compatibility alias |
| client/ayon_unreal/plugins/create/create_staticmeshfbx.py | Added product_base_type attribute with backward compatibility alias |
| client/ayon_unreal/plugins/create/create_render.py | Added product_base_type attribute with backward compatibility alias |
| client/ayon_unreal/plugins/create/create_layout.py | Added product_base_type attribute with backward compatibility alias |
| client/ayon_unreal/plugins/create/create_camera.py | Added product_base_type attribute with backward compatibility alias |
| client/ayon_unreal/api/plugin.py | Updated to use product_base_type, refactored caching logic for products, and added type hints |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
fix loaders and imprint renaming, support for legacy instances without product base type
…s' into feature/add-product-type-settings
Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com>
There was a problem hiding this comment.
I am able to define and see my product types withing the Publisher UI...
On the Layout note, I was able to succesfully load the Layout product following with Camera Animation so all good atm...
There are some errors in the console (enclosing but not sure if related at all)
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/char/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/char/combat_mech/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/char/combat_mech/modelMain_v008/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/char/spartan_halo/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/char/spartan_halo/rigMain_v003/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/char/star_fury/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/char/star_fury/modelMain_v006/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/enviro/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/enviro/MainChamber/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/enviro/MainChamber/modelMain_v003/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/props/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/props/container/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/props/container/modelMain_v012/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/props/container_military/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/props/container_military/modelMain_v003/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/props/container_scifi_01/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/props/container_scifi_01/modelMain_v002/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/props/container_scifi_02/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/props/container_scifi_02/modelMain_v005/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/props/power_generator/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/assets/props/power_generator/modelMain_v011/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/AyonPublishInstances/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/episodes/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/episodes/ep01/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/episodes/ep01/sq01/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/episodes/ep01/sq01/sh010/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/episodes/ep01/sq01/sh010/animationspartan_halo_rigMain_01__v008/' because it doesn't contain an asset name.
LogEditorAssetSubsystem: Error: FindAssetData failed: Can't convert the path '/Game/Ayon/episodes/ep01/sq01/sh010/cameraMain_v009/' because it doesn't contain an asset name.
I was able to publish and test it for staticMesh and render with custom productName succesfully...
so basically apart form those logs above it seems its working fine.
@antirotor let me know if I should approve then...
|
Those log messages are probably unrelated, but something to keep an eye on. Lets merge it and observe |

Changelog Description
Changing the usage of
product_typetoproduct_base_typeand adding support to customize product type in creator settings.Additional notes:
There is lot to be refactored, like imprint functions on the loaders, how render instances are created on-the-fly, etc.
Testing notes:
Warning
You'll need ynput/ayon-core 1.8 and higher