model_train_dm/backend/apps/datasets/dataset_stats.py

25 lines
833 B
Python
Raw Permalink Normal View History

2026-07-27 17:51:49 +08:00
from django.db.models import Q
from apps.core.models import AiDataset, AiDatasetSample
def get_dataset_sample_counters(dataset_id: str) -> tuple[int, int]:
queryset = AiDatasetSample.objects.filter(dataset_id=dataset_id)
total_count = queryset.count()
annotated_count = queryset.filter(
(Q(rectangle__isnull=False) & ~Q(rectangle=""))
| (Q(polygon__isnull=False) & ~Q(polygon=""))
).count()
return total_count, annotated_count
def refresh_dataset_sample_counters(dataset_id: str) -> tuple[int, int]:
if not dataset_id:
return 0, 0
total_count, annotated_count = get_dataset_sample_counters(dataset_id)
AiDataset.objects.filter(id=dataset_id).update(
dataset_count=total_count,
annotated_count=annotated_count,
)
return total_count, annotated_count