mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Merge pull request #856 from pypeclub:bugfix/ftrack_event_entity_store
Ftrack project entity is not stored to event data
This commit is contained in:
commit
28f79d9024
7 changed files with 40 additions and 43 deletions
|
|
@ -56,17 +56,16 @@ class TaskStatusToParent(BaseEvent):
|
|||
return filtered_entity_info
|
||||
|
||||
def process_by_project(self, session, event, project_id, entities_info):
|
||||
# Get project entity
|
||||
project_entity = self.get_project_entity_from_event(
|
||||
# Get project name
|
||||
project_name = self.get_project_name_from_event(
|
||||
session, event, project_id
|
||||
)
|
||||
# Load settings
|
||||
project_settings = self.get_project_settings_from_event(
|
||||
event, project_entity
|
||||
event, project_name
|
||||
)
|
||||
|
||||
# Prepare loaded settings and check if can be processed
|
||||
project_name = project_entity["full_name"]
|
||||
result = self.prepare_settings(project_settings, project_name)
|
||||
if not result:
|
||||
return
|
||||
|
|
@ -133,6 +132,7 @@ class TaskStatusToParent(BaseEvent):
|
|||
obj_id = object_type["id"]
|
||||
object_type_name_by_id[obj_id] = types_mapping[mapping_name]
|
||||
|
||||
project_entity = session.get("Project", project_id)
|
||||
project_schema = project_entity["project_schema"]
|
||||
available_statuses_by_obj_id = {}
|
||||
for obj_id in obj_ids:
|
||||
|
|
|
|||
|
|
@ -99,14 +99,14 @@ class TaskToVersionStatus(BaseEvent):
|
|||
if not entities_info:
|
||||
return
|
||||
|
||||
project_entity = self.get_project_entity_from_event(
|
||||
project_name = self.get_project_name_from_event(
|
||||
session, event, project_id
|
||||
)
|
||||
# Load settings
|
||||
project_settings = self.get_project_settings_from_event(
|
||||
event, project_entity
|
||||
event, project_name
|
||||
)
|
||||
|
||||
project_name = project_entity["full_name"]
|
||||
event_settings = (
|
||||
project_settings["ftrack"]["events"][self.settings_key]
|
||||
)
|
||||
|
|
@ -171,6 +171,7 @@ class TaskToVersionStatus(BaseEvent):
|
|||
}
|
||||
|
||||
# Final process of changing statuses
|
||||
project_entity = session.get("Project", project_id)
|
||||
av_statuses_by_low_name, av_statuses_by_id = (
|
||||
self.get_asset_version_statuses(project_entity)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -19,14 +19,14 @@ class ThumbnailEvents(BaseEvent):
|
|||
def process_project_entities(
|
||||
self, session, event, project_id, entities_info
|
||||
):
|
||||
project_entity = self.get_project_entity_from_event(
|
||||
project_name = self.get_project_name_from_event(
|
||||
session, event, project_id
|
||||
)
|
||||
# Load settings
|
||||
project_settings = self.get_project_settings_from_event(
|
||||
event, project_entity
|
||||
event, project_name
|
||||
)
|
||||
|
||||
project_name = project_entity["full_name"]
|
||||
event_settings = (
|
||||
project_settings
|
||||
["ftrack"]
|
||||
|
|
|
|||
|
|
@ -48,14 +48,15 @@ class VersionToTaskStatus(BaseEvent):
|
|||
def process_by_project(self, session, event, project_id, entities_info):
|
||||
# Check for project data if event is enabled for event handler
|
||||
status_mapping = None
|
||||
project_entity = self.get_project_entity_from_event(
|
||||
|
||||
project_name = self.get_project_name_from_event(
|
||||
session, event, project_id
|
||||
)
|
||||
# Load settings
|
||||
project_settings = self.get_project_settings_from_event(
|
||||
event, project_entity
|
||||
event, project_name
|
||||
)
|
||||
|
||||
project_name = project_entity["full_name"]
|
||||
# Load status mapping from presets
|
||||
event_settings = (
|
||||
project_settings["ftrack"]["events"]["status_version_to_task"]
|
||||
|
|
@ -147,7 +148,7 @@ class VersionToTaskStatus(BaseEvent):
|
|||
|
||||
# Qeury statuses
|
||||
statusese_by_obj_id = self.statuses_for_tasks(
|
||||
session, task_entities, project_entity
|
||||
session, task_entities, project_id
|
||||
)
|
||||
# Prepare status names by their ids
|
||||
status_name_by_id = {
|
||||
|
|
@ -224,11 +225,12 @@ class VersionToTaskStatus(BaseEvent):
|
|||
exc_info=True
|
||||
)
|
||||
|
||||
def statuses_for_tasks(self, session, task_entities, project_entity):
|
||||
def statuses_for_tasks(self, session, task_entities, project_id):
|
||||
task_type_ids = set()
|
||||
for task_entity in task_entities:
|
||||
task_type_ids.add(task_entity["type_id"])
|
||||
|
||||
project_entity = session.get("Project", project_id)
|
||||
project_schema = project_entity["project_schema"]
|
||||
output = {}
|
||||
for task_type_id in task_type_ids:
|
||||
|
|
|
|||
|
|
@ -257,7 +257,7 @@ class BaseAction(BaseHandler):
|
|||
event["data"]["user_roles"] = user_roles
|
||||
return user_roles
|
||||
|
||||
def get_project_entity_from_event(self, session, event, entities):
|
||||
def get_project_name_from_event(self, session, event, entities):
|
||||
"""Load or query and fill project entity from/to event data.
|
||||
|
||||
Project data are stored by ftrack id because in most cases it is
|
||||
|
|
@ -270,20 +270,22 @@ class BaseAction(BaseHandler):
|
|||
"""
|
||||
|
||||
# Try to get project entity from event
|
||||
project_entity = event["data"].get("project_entity")
|
||||
if not project_entity:
|
||||
project_name = event["data"].get("project_name")
|
||||
if not project_name:
|
||||
project_entity = self.get_project_from_entity(
|
||||
entities[0], session
|
||||
)
|
||||
event["data"]["project_entity"] = project_entity
|
||||
return project_entity
|
||||
project_name = project_entity["full_name"]
|
||||
|
||||
event["data"]["project_name"] = project_name
|
||||
return project_name
|
||||
|
||||
def get_ftrack_settings(self, session, event, entities):
|
||||
project_entity = self.get_project_entity_from_event(
|
||||
project_name = self.get_project_name_from_event(
|
||||
session, event, entities
|
||||
)
|
||||
project_settings = self.get_project_settings_from_event(
|
||||
event, project_entity
|
||||
event, project_name
|
||||
)
|
||||
return project_settings["ftrack"]
|
||||
|
||||
|
|
|
|||
|
|
@ -556,7 +556,7 @@ class BaseHandler(object):
|
|||
"Project where id is {}".format(project_data["id"])
|
||||
).one()
|
||||
|
||||
def get_project_settings_from_event(self, event, project_entity):
|
||||
def get_project_settings_from_event(self, event, project_name):
|
||||
"""Load or fill pype's project settings from event data.
|
||||
|
||||
Project data are stored by ftrack id because in most cases it is
|
||||
|
|
@ -566,24 +566,15 @@ class BaseHandler(object):
|
|||
event (ftrack_api.Event): Processed event by session.
|
||||
project_entity (ftrack_api.Entity): Project entity.
|
||||
"""
|
||||
if not project_entity:
|
||||
raise AssertionError((
|
||||
"Invalid arguments entered. Project entity or project id"
|
||||
"must be entered."
|
||||
))
|
||||
|
||||
project_id = project_entity["id"]
|
||||
project_name = project_entity["full_name"]
|
||||
|
||||
project_settings_by_id = event["data"].get("project_settings")
|
||||
if not project_settings_by_id:
|
||||
project_settings_by_id = {}
|
||||
event["data"]["project_settings"] = project_settings_by_id
|
||||
|
||||
project_settings = project_settings_by_id.get(project_id)
|
||||
project_settings = project_settings_by_id.get(project_name)
|
||||
if not project_settings:
|
||||
project_settings = get_project_settings(project_name)
|
||||
event["data"]["project_settings"][project_id] = project_settings
|
||||
event["data"]["project_settings"][project_name] = project_settings
|
||||
return project_settings
|
||||
|
||||
@staticmethod
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class BaseEvent(BaseHandler):
|
|||
ignore=['socialfeed', 'socialnotification']
|
||||
)
|
||||
|
||||
def get_project_entity_from_event(self, session, event, project_id):
|
||||
def get_project_name_from_event(self, session, event, project_id):
|
||||
"""Load or query and fill project entity from/to event data.
|
||||
|
||||
Project data are stored by ftrack id because in most cases it is
|
||||
|
|
@ -65,14 +65,15 @@ class BaseEvent(BaseHandler):
|
|||
)
|
||||
)
|
||||
# Try to get project entity from event
|
||||
project_entities = event["data"].get("project_entities")
|
||||
if not project_entities:
|
||||
project_entities = {}
|
||||
event["data"]["project_entities"] = project_entities
|
||||
project_data = event["data"].get("project_data")
|
||||
if not project_data:
|
||||
project_data = {}
|
||||
event["data"]["project_data"] = project_data
|
||||
|
||||
project_entity = project_entities.get(project_id)
|
||||
if not project_entity:
|
||||
project_name = project_data.get(project_id)
|
||||
if not project_name:
|
||||
# Get project entity from task and store to event
|
||||
project_entity = session.get("Project", project_id)
|
||||
event["data"]["project_entities"][project_id] = project_entity
|
||||
return project_entity
|
||||
project_name = project_entity["full_name"]
|
||||
event["data"]["project_data"][project_id] = project_name
|
||||
return project_name
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue