Merge pull request #1896 from tokejepsen/feature/timers_manager_get_task_time

This commit is contained in:
Milan Kolar 2021-10-07 17:32:18 +01:00 committed by GitHub
commit d0b2ab7bee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 1 deletions

View file

@ -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

View file

@ -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))

View file

@ -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: