79 lines
2.0 KiB
Python
79 lines
2.0 KiB
Python
from .kimaiapi import (
|
|
KimaiAPI,
|
|
Customer as KimaiAPICustomer,
|
|
Project as KimaiAPIProject,
|
|
Activity as KimaiAPIActivity,
|
|
Tag as KimaiAPITag,
|
|
)
|
|
from .db import (
|
|
KimaiTag,
|
|
db,
|
|
KimaiProject,
|
|
KimaiCustomer,
|
|
KimaiActivity,
|
|
)
|
|
|
|
|
|
def sync() -> None:
|
|
api = KimaiAPI()
|
|
|
|
KimaiCustomer.delete().execute()
|
|
KimaiProject.delete().execute()
|
|
KimaiActivity.delete().execute()
|
|
KimaiTag.delete().execute()
|
|
|
|
customers = KimaiAPICustomer.list(api)
|
|
with db.atomic():
|
|
KimaiCustomer.insert_many(
|
|
[
|
|
{
|
|
"id": customer.id,
|
|
"name": customer.name,
|
|
"visible": customer.visible,
|
|
}
|
|
for customer in customers
|
|
]
|
|
).execute()
|
|
|
|
projects = KimaiAPIProject.list(api)
|
|
with db.atomic():
|
|
KimaiProject.insert_many(
|
|
[
|
|
{
|
|
"id": project.id,
|
|
"name": project.name,
|
|
"customer_id": project.customer.id,
|
|
"allow_global_activities": project.allow_global_activities,
|
|
"visible": project.visible,
|
|
}
|
|
for project in projects
|
|
]
|
|
).execute()
|
|
|
|
activities = KimaiAPIActivity.list(api)
|
|
with db.atomic():
|
|
KimaiActivity.insert_many(
|
|
[
|
|
{
|
|
"id": activity.id,
|
|
"name": activity.name,
|
|
"project_id": (activity.project.id if activity.project else None),
|
|
"visible": activity.visible,
|
|
}
|
|
for activity in activities
|
|
]
|
|
).execute()
|
|
|
|
tags = KimaiAPITag.list(api)
|
|
with db.atomic():
|
|
KimaiTag.insert_many(
|
|
[
|
|
{
|
|
"id": tag.id,
|
|
"name": tag.name,
|
|
"visible": tag.visible,
|
|
}
|
|
for tag in tags
|
|
]
|
|
).execute()
|