#21 - Safer handling of hierarchy

'hierarchy' in asset might not be used everywhere
Added missed file with route definition
This commit is contained in:
Petr Kalis 2021-03-16 13:23:01 +01:00
parent b138bdd202
commit 1675d6690b
3 changed files with 45 additions and 3 deletions

View file

@ -1167,7 +1167,8 @@ def change_timer_to_current_context():
data = {
"project_name": avalon.io.Session["AVALON_PROJECT"],
"asset_name": avalon.io.Session["AVALON_ASSET"],
"task_name": avalon.io.Session["AVALON_TASK"]
"task_name": avalon.io.Session["AVALON_TASK"],
"hierarchy": get_hierarchy()
}
requests.post(rest_api_url, json=data)

View file

@ -0,0 +1,40 @@
from aiohttp.web_response import Response
from pype.api import Logger
log = Logger().get_logger("Event processor")
class TimersManagerModuleRestApi:
"""
REST API endpoint used for calling from hosts when context change
happens in Workfile app.
"""
def __init__(self, user_module, server_manager):
self.module = user_module
self.server_manager = server_manager
self.prefix = "/timers_manager"
self.register()
def register(self):
self.server_manager.add_route(
"POST",
self.prefix + "/start_timer",
self.start_timer
)
async def start_timer(self, request):
data = await request.json()
try:
project_name = data['project_name']
asset_name = data['asset_name']
task_name = data['task_name']
hierarchy = data['hierarchy']
except KeyError:
log.error("Payload must contain fields 'project_name, " +
"'asset_name', 'task_name', 'hierarchy'")
return Response(status=400)
self.module.stop_timers()
self.module.start_timer(project_name, asset_name, task_name, hierarchy)
return Response(status=200)

View file

@ -81,7 +81,7 @@ class TimersManager(PypeModule, ITrayService, IIdleManager, IWebServerRoutes):
self.rest_api_obj = TimersManagerModuleRestApi(self,
server_manager)
def start_timer(self, project_name, asset_name, task_name):
def start_timer(self, project_name, asset_name, task_name, hierarchy):
"""
Start timer for 'project_name', 'asset_name' and 'task_name'
@ -91,6 +91,7 @@ class TimersManager(PypeModule, ITrayService, IIdleManager, IWebServerRoutes):
project_name (string)
asset_name (string)
task_name (string)
hierarchy (string)
"""
dbconn = AvalonMongoDB()
dbconn.install()
@ -109,7 +110,7 @@ class TimersManager(PypeModule, ITrayService, IIdleManager, IWebServerRoutes):
self.log.warning("Couldn't find task_type for {}".
format(task_name))
hierarchy = asset_doc["data"]["hierarchy"].split("\\")
hierarchy = hierarchy.split("\\")
hierarchy.append(asset_name)
data = {