Skip to content

push

ensure_task_status(project, task_status_name) async

TODO: kitsu listener for new task statuses would be preferable

Source code in server/kitsu/push.py
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
async def ensure_task_status(
    project: "ProjectEntity",
    task_status_name: str,
) -> bool:
    """#TODO: kitsu listener for new task statuses would be preferable"""

    if task_status_name not in [
        status["name"]
        for status in project.statuses
    ]:
        logging.info(
            f"Creating task status {task_status_name} for '{project.name}'"
        )
        project.statuses.append(
            {
                "name": task_status_name,
                "icon": "task_alt",
                "shortName": task_status_name[:4],
            }
        )
        await project.save()
        return True
    return False

ensure_task_type(project, task_type_name) async

TODO: kitsu listener for new task types would be preferable

Source code in server/kitsu/push.py
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
async def ensure_task_type(
    project: "ProjectEntity",
    task_type_name: str,
) -> bool:
    """#TODO: kitsu listener for new task types would be preferable"""
    if task_type_name not in [
        task_type["name"]
        for task_type in project.task_types
    ]:
        logging.info(
            f"Creating task type {task_type_name} for '{project.name}'"
        )
        project.task_types.append(
            {
                "name": task_type_name,
                "shortName": task_type_name[:4],
                "icon": "task_alt",
            }
        )
        await project.save()
        return True
    return False

get_root_folder_id(user, project_name, kitsu_type, kitsu_type_id, subfolder_id=None, subfolder_name=None) async

Get the root folder ID for a given Kitsu type and ID. If a folder/subfolder does not exist, it will be created.

Source code in server/kitsu/push.py
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
async def get_root_folder_id(
    user: "UserEntity",
    project_name: str,
    kitsu_type: KitsuEntityType,
    kitsu_type_id: str,
    subfolder_id: str | None = None,
    subfolder_name: str | None = None,
) -> str:
    """
    Get the root folder ID for a given Kitsu type and ID.
    If a folder/subfolder does not exist, it will be created.
    """
    res = await Postgres.fetch(
        f"""
        SELECT id FROM project_{project_name}.folders
        WHERE data->>'kitsuId' = $1
        """,
        kitsu_type_id,
    )

    if res:
        id = res[0]["id"]
    else:
        folder = await create_folder(
            project_name=project_name,
            name=kitsu_type,
            data={"kitsuId": kitsu_type_id},
        )
        id = folder.id

    if not (subfolder_id or subfolder_name):
        return id

    res = await Postgres.fetch(
        f"""
        SELECT id FROM project_{project_name}.folders
        WHERE data->>'kitsuId' = $1
        """,
        subfolder_id,
    )

    if res:
        sub_id = res[0]["id"]
    else:
        sub_folder = await create_folder(
            project_name=project_name,
            name=subfolder_name,
            parent_id=id,
            data={"kitsuId": subfolder_id},
        )
        sub_id = sub_folder.id
    return sub_id