mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 05:14:40 +01:00
Merge pull request #1896 from tokejepsen/feature/timers_manager_get_task_time
This commit is contained in:
commit
d0b2ab7bee
3 changed files with 47 additions and 1 deletions
|
|
@ -1,7 +1,6 @@
|
|||
import os
|
||||
import json
|
||||
import collections
|
||||
import openpype
|
||||
from openpype.modules import OpenPypeModule
|
||||
|
||||
from openpype_interfaces import (
|
||||
|
|
@ -397,3 +396,16 @@ class FtrackModule(
|
|||
def timer_stopped(self):
|
||||
if self._timers_manager_module is not None:
|
||||
self._timers_manager_module.timer_stopped(self.id)
|
||||
|
||||
def get_task_time(self, project_name, asset_name, task_name):
|
||||
session = self.create_ftrack_session()
|
||||
query = (
|
||||
'Task where name is "{}"'
|
||||
' and parent.name is "{}"'
|
||||
' and project.full_name is "{}"'
|
||||
).format(task_name, asset_name, project_name)
|
||||
task_entity = session.query(query).first()
|
||||
if not task_entity:
|
||||
return 0
|
||||
hours_logged = (task_entity["time_logged"] / 60) / 60
|
||||
return hours_logged
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
import json
|
||||
|
||||
from aiohttp.web_response import Response
|
||||
from openpype.api import Logger
|
||||
|
||||
|
|
@ -28,6 +30,11 @@ class TimersManagerModuleRestApi:
|
|||
self.prefix + "/stop_timer",
|
||||
self.stop_timer
|
||||
)
|
||||
self.server_manager.add_route(
|
||||
"GET",
|
||||
self.prefix + "/get_task_time",
|
||||
self.get_task_time
|
||||
)
|
||||
|
||||
async def start_timer(self, request):
|
||||
data = await request.json()
|
||||
|
|
@ -48,3 +55,20 @@ class TimersManagerModuleRestApi:
|
|||
async def stop_timer(self, request):
|
||||
self.module.stop_timers()
|
||||
return Response(status=200)
|
||||
|
||||
async def get_task_time(self, request):
|
||||
data = await request.json()
|
||||
try:
|
||||
project_name = data['project_name']
|
||||
asset_name = data['asset_name']
|
||||
task_name = data['task_name']
|
||||
except KeyError:
|
||||
message = (
|
||||
"Payload must contain fields 'project_name, 'asset_name',"
|
||||
" 'task_name'"
|
||||
)
|
||||
log.warning(message)
|
||||
return Response(text=message, status=404)
|
||||
|
||||
time = self.module.get_task_time(project_name, asset_name, task_name)
|
||||
return Response(text=json.dumps(time))
|
||||
|
|
|
|||
|
|
@ -191,6 +191,16 @@ class TimersManager(OpenPypeModule, ITrayService):
|
|||
}
|
||||
self.timer_started(None, data)
|
||||
|
||||
def get_task_time(self, project_name, asset_name, task_name):
|
||||
times = {}
|
||||
for module_id, connector in self._connectors_by_module_id.items():
|
||||
if hasattr(connector, "get_task_time"):
|
||||
module = self._modules_by_id[module_id]
|
||||
times[module.name] = connector.get_task_time(
|
||||
project_name, asset_name, task_name
|
||||
)
|
||||
return times
|
||||
|
||||
def timer_started(self, source_id, data):
|
||||
for module_id, connector in self._connectors_by_module_id.items():
|
||||
if module_id == source_id:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue