mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
add sync to specific projects or listen only
This commit is contained in:
parent
0cdeda5396
commit
122a4dc9db
2 changed files with 37 additions and 4 deletions
|
|
@ -124,19 +124,31 @@ def push_to_zou(login, password):
|
|||
|
||||
|
||||
@cli_main.command()
|
||||
@click.option("-prjs", "--projects", envvar="SYNC_PROJECTS", help="Sync specific kitsu projects")
|
||||
@click.option("-l", "--login", envvar="KITSU_LOGIN", help="Kitsu login")
|
||||
@click.option(
|
||||
"-p", "--password", envvar="KITSU_PWD", help="Password for kitsu username"
|
||||
)
|
||||
def sync_service(login, password):
|
||||
def sync_service(login, password, projects="^"):
|
||||
"""Synchronize openpype database from Zou sever database.
|
||||
|
||||
Args:
|
||||
login (str): Kitsu user login
|
||||
password (str): Kitsu user password
|
||||
projects (str): specific kitsu projects
|
||||
|
||||
SYNC_PROJECTS:
|
||||
*: all projects
|
||||
^: dont sync any project just listen
|
||||
"project01 project02 ...": to choose custom projects
|
||||
|
||||
|
||||
"""
|
||||
from .utils.update_op_with_zou import sync_all_projects
|
||||
from .utils.sync_service import start_listeners
|
||||
|
||||
sync_all_projects(login, password)
|
||||
projects = projects.strip()
|
||||
projects = projects.split(' ')
|
||||
|
||||
sync_all_projects(login, password, specific_projects=projects)
|
||||
start_listeners(login, password)
|
||||
|
|
|
|||
|
|
@ -359,7 +359,7 @@ def write_project_to_op(project: dict, dbcon: AvalonMongoDB) -> UpdateOne:
|
|||
|
||||
|
||||
def sync_all_projects(
|
||||
login: str, password: str, ignore_projects: list = None
|
||||
login: str, password: str, ignore_projects: list = None, specific_projects: list = None
|
||||
):
|
||||
"""Update all OP projects in DB with Zou data.
|
||||
|
||||
|
|
@ -367,6 +367,7 @@ def sync_all_projects(
|
|||
login (str): Kitsu user login
|
||||
password (str): Kitsu user password
|
||||
ignore_projects (list): List of unsynced project names
|
||||
specific_projects (list): List of synced project names
|
||||
Raises:
|
||||
gazu.exception.AuthFailedException: Wrong user login and/or password
|
||||
"""
|
||||
|
|
@ -381,7 +382,27 @@ def sync_all_projects(
|
|||
dbcon = AvalonMongoDB()
|
||||
dbcon.install()
|
||||
all_projects = gazu.project.all_projects()
|
||||
for project in all_projects:
|
||||
|
||||
|
||||
project_to_sync = []
|
||||
if specific_projects == ['*']:
|
||||
project_to_sync = all_projects
|
||||
|
||||
elif specific_projects == ['^']:
|
||||
return
|
||||
|
||||
elif isinstance(specific_projects, list):
|
||||
all_kitsu_projects = {p['name']: p for p in all_projects}
|
||||
for proj_name in specific_projects:
|
||||
if proj_name in all_kitsu_projects:
|
||||
project_to_sync.append(all_kitsu_projects[proj_name])
|
||||
else:
|
||||
log.info(f'`{proj_name}` project does not exists in kitsu.'
|
||||
f' Please make sure you write the project correctly.')
|
||||
else:
|
||||
return
|
||||
|
||||
for project in project_to_sync:
|
||||
if ignore_projects and project["name"] in ignore_projects:
|
||||
continue
|
||||
sync_project_from_kitsu(dbcon, project)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue