{"record":{"id":"4231d9c929cadd1b","repo":"HumanSignal/label-studio","slug":"no-projects-found-for-organization-organization-i","errorCode":null,"errorMessage":"No projects found for organization {organization_id}","messagePattern":"No projects found for organization (.+?)","errorType":"console","errorClass":"CommandError","httpStatus":null,"severity":"error","filePath":"label_studio/tasks/management/commands/recalculate_task_counters.py","lineNumber":69,"sourceCode":"            .count()\n        )\n\n    def handle(self, *args, **options):\n        project_id = options.get('project')\n        organization_id = options.get('organization')\n        dry_run = options.get('dry_run')\n\n        if not project_id and not organization_id:\n            raise CommandError('Provide --project <id> or --organization <id>')\n\n        if project_id:\n            projects = Project.objects.filter(id=project_id)\n            if not projects.exists():\n                raise CommandError(f'Project {project_id} not found')\n        else:\n            projects = Project.objects.filter(organization_id=organization_id)\n            if not projects.exists():\n                raise CommandError(f'No projects found for organization {organization_id}')\n\n        for project in projects:\n            drifted_before = self._drifted_count(project)\n            self.stdout.write(\n                f'Project {project.id} ({project.title!r}): {drifted_before} task(s) with drifted counters'\n            )\n\n            if dry_run:\n                continue\n\n            # Recompute counters AND is_labeled (run_sync=True runs the canonical\n            # update_tasks_counters + bulk_update_stats_project_tasks inline, batched\n            # in transactions), so is_labeled can't be left stale after the counters change.\n            updated = project.update_tasks_counters_and_is_labeled(Task.objects.filter(project=project), run_sync=True)\n            drifted_after = self._drifted_count(project)\n            self.stdout.write(\n                self.style.SUCCESS(\n                    f'Project {project.id}: recalculated {updated} task(s); '","sourceCodeStart":51,"sourceCodeEnd":87,"githubUrl":"https://github.com/HumanSignal/label-studio/blob/0b49e9b53917880baf1dd85d574fe5541a9aafb2/label_studio/tasks/management/commands/recalculate_task_counters.py#L51-L87","documentation":"The `recalculate_task_counters` management command was invoked with --organization <id>, but no Projects exist for that organization. CommandError is raised so the operator knows the org has nothing to recalculate rather than exiting silently with zero output.","triggerScenarios":"Running `recalculate_task_counters --organization <id>` where the org ID is wrong, belongs to another environment, or the organization exists but has zero projects (or all projects were deleted).","commonSituations":"Using an organization ID from a different Label Studio instance; passing the org's external/SSO identifier instead of the internal numeric ID; an empty organization with no projects; wrong DB connection pointing at a fresh install.","solutions":["Verify the organization ID via Django shell (Organization.objects.filter(id=<id>)) and that it has projects (Project.objects.filter(organization_id=<id>).count())","If you intended one specific project, use --project <id> instead","Check that you are connected to the expected database/environment","If the org legitimately has no projects, there is nothing to recalculate; no action needed"],"exampleFix":"// before\npython manage.py recalculate_task_counters --organization 999   # org has no projects\n// after\npython manage.py recalculate_task_counters --organization 1     # org confirmed to own projects","handlingStrategy":"validation","validationCode":"from projects.models import Organization, Project\n\ndef assert_org_has_projects(org_id):\n    if not Project.objects.filter(organization_id=org_id).exists():\n        org = Organization.objects.filter(id=org_id).first()\n        raise SystemExit(f\"Organization {org_id} ({org}) has no projects; nothing to recalculate\")","typeGuard":"def org_has_projects(org_id) -> bool:\n    from tasks.models import Project\n    return Project.objects.filter(organization_id=org_id).exists()","tryCatchPattern":"from django.core.management import call_command\nfrom django.core.management.base import CommandError\ntry:\n    call_command('recalculate_task_counters', organization=str(org_id))\nexcept CommandError as e:\n    logger.warning(\"no recalculation performed: %s\", e)","preventionTips":["Verify org ID and its project count before running","Use the internal numeric organization ID, not external/SSO identifiers","Check DB connection settings when IDs 'mysteriously' don't exist","Accept that empty orgs legitimately produce this; skip them in orchestration scripts"],"tags":["django","management-command","cli","not-found"],"backgroundTag":"resource-not-found","analyzedSha":"0b49e9b53917880baf1dd85d574fe5541a9aafb2","analyzedAt":"2026-08-29T00:39:52.578Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}