import logging
|
|
from core.redis import start_job_async_or_sync
|
from django.core.management.base import BaseCommand
|
from projects.models import Project
|
from tasks.functions import update_tasks_counters
|
|
logger = logging.getLogger(__name__)
|
|
|
class Command(BaseCommand):
|
help = 'Recalculate organization project stats (total_annotations, etc)'
|
|
def add_arguments(self, parser):
|
parser.add_argument('organization', type=int, help='organization id')
|
|
def handle(self, *args, **options):
|
logger.debug(f"Start recalculating for Organization {options['organization']}.")
|
projects = Project.objects.filter(organization_id=options['organization'])
|
|
for project in projects:
|
logger.debug(f'Start processing project {project.id}.')
|
start_job_async_or_sync(update_tasks_counters, project.tasks.all())
|
logger.debug(f'End processing project {project.id}.')
|
|
logger.debug(f"Organization {options['organization']} stats were recalculated.")
|