ayon-core/openpype/modules/sync_server/rest_api.py
Félix David f19c2b3a79 clean
2022-11-08 18:58:19 +01:00

62 lines
1.8 KiB
Python

from aiohttp.web_response import Response
from openpype.lib import Logger
class SyncServerModuleRestApi:
"""
REST API endpoint used for calling from hosts when context change
happens in Workfile app.
"""
def __init__(self, user_module, server_manager):
self._log = None
self.module = user_module
self.server_manager = server_manager
self.prefix = "/sync_server"
self.register()
@property
def log(self):
if self._log is None:
self._log = Logger.get_logger(self.__class__.__name__)
return self._log
def register(self):
self.server_manager.add_route(
"POST",
self.prefix + "/add_sites_to_representations",
self.add_sites_to_representations,
)
async def add_sites_to_representations(self, request):
# Extract data from request
data = await request.json()
try:
project_name = data["project_name"]
sites = data["sites"]
representations = data["representations"]
except KeyError:
msg = (
"Payload must contain fields 'project_name,"
" 'sites' (list of names) and 'representations' (list of IDs)"
)
self.log.error(msg)
return Response(status=400, message=msg)
# Add all sites to each representation
for representation_id in representations:
for site in sites:
self.module.add_site(
project_name,
representation_id,
site,
force=True,
priority=99,
)
# Force timer to run immediately
self.module.reset_timer()
return Response(status=200)