mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 05:14:40 +01:00
moveed the ftrack logic into separated method
This commit is contained in:
parent
5baedfc3a0
commit
409362e4ff
1 changed files with 67 additions and 36 deletions
|
|
@ -370,45 +370,76 @@ class DeleteOldVersions(load.SubsetLoaderPlugin):
|
|||
|
||||
self.dbcon.uninstall()
|
||||
|
||||
modules_manager = ModulesManager()
|
||||
ftrack_module = modules_manager.modules_by_name.get("ftrack")
|
||||
if ftrack_module and ftrack_module.enabled:
|
||||
# Set attribute `is_published` to `False` on ftrack AssetVersions
|
||||
import ftrack_api
|
||||
|
||||
session = ftrack_api.Session()
|
||||
query = (
|
||||
"AssetVersion where asset.parent.id is \"{}\""
|
||||
" and asset.name is \"{}\""
|
||||
" and version is \"{}\""
|
||||
)
|
||||
for v in data["versions"]:
|
||||
try:
|
||||
ftrack_version = session.query(
|
||||
query.format(
|
||||
data["asset"]["data"]["ftrackId"],
|
||||
data["subset"]["name"],
|
||||
v["name"]
|
||||
)
|
||||
).one()
|
||||
except ftrack_api.exception.NoResultFoundError:
|
||||
continue
|
||||
|
||||
ftrack_version["is_published"] = False
|
||||
|
||||
try:
|
||||
session.commit()
|
||||
|
||||
except Exception:
|
||||
msg = (
|
||||
"Could not set `is_published` attribute to `False`"
|
||||
" for selected AssetVersions."
|
||||
)
|
||||
self.log.error(msg)
|
||||
self.message(msg)
|
||||
self._ftrack_delete_versions(data)
|
||||
|
||||
return size
|
||||
|
||||
def _ftrack_delete_versions(self, data):
|
||||
"""Delete version on ftrack.
|
||||
|
||||
Handling of ftrack logic in this plugin is not ideal. But in OP3 it is
|
||||
almost impossible to solve the issue other way.
|
||||
|
||||
Note:
|
||||
Asset versions on ftrack are not deleted but marked as
|
||||
"not published" which cause that they're invisible.
|
||||
|
||||
Args:
|
||||
data (dict): Data sent to subset loader with full context.
|
||||
"""
|
||||
|
||||
# First check for ftrack id on asset document
|
||||
# - skip if ther is none
|
||||
asset_ftrack_id = data["asset"]["data"].get("ftrackId")
|
||||
if not asset_ftrack_id:
|
||||
self.log.info((
|
||||
"Asset does not have filled ftrack id. Skipped delete"
|
||||
" of ftrack version."
|
||||
))
|
||||
return
|
||||
|
||||
# Check if ftrack module is enabled
|
||||
modules_manager = ModulesManager()
|
||||
ftrack_module = modules_manager.modules_by_name.get("ftrack")
|
||||
if not ftrack_module or not ftrack_module.enabled:
|
||||
return
|
||||
|
||||
import ftrack_api
|
||||
|
||||
session = ftrack_api.Session()
|
||||
subset_name = data["subset"]["name"]
|
||||
versions = {
|
||||
'"{}"'.format(version_doc["name"])
|
||||
for version_doc in data["versions"]
|
||||
}
|
||||
asset_versions = session.query(
|
||||
(
|
||||
"select id, is_published from AssetVersion where"
|
||||
" asset.parent.id is \"{}\""
|
||||
" and asset.name is \"{}\""
|
||||
" and version in (\"{}\")"
|
||||
).format(
|
||||
asset_ftrack_id,
|
||||
subset_name,
|
||||
",".join(versions)
|
||||
)
|
||||
)
|
||||
|
||||
# Set attribute `is_published` to `False` on ftrack AssetVersions
|
||||
for asset_version in asset_versions:
|
||||
asset_version["is_published"] = False
|
||||
|
||||
try:
|
||||
session.commit()
|
||||
|
||||
except Exception:
|
||||
msg = (
|
||||
"Could not set `is_published` attribute to `False`"
|
||||
" for selected AssetVersions."
|
||||
)
|
||||
self.log.error(msg)
|
||||
self.message(msg)
|
||||
|
||||
def load(self, contexts, name=None, namespace=None, options=None):
|
||||
try:
|
||||
size = 0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue