feat: use authoritative organization directory
Some checks failed
CI/CD Pipeline / Quality Gate (push) Failing after 9s
CI/CD Pipeline / Build and Push Images (push) Has been skipped
CI/CD Pipeline / Deploy Dev via Compose (push) Has been skipped
CI/CD Pipeline / Internal Notify (push) Successful in 0s

This commit is contained in:
2026-06-07 16:04:43 +02:00
parent 79f0f8ebf7
commit 6ba8fa8d88
41 changed files with 2781 additions and 1058 deletions

View File

@@ -1,5 +1,6 @@
from __future__ import annotations
import hashlib
from datetime import timedelta
from types import SimpleNamespace
from unittest.mock import MagicMock, patch
@@ -17,6 +18,7 @@ from django.http import Http404
from django.test import SimpleTestCase, TestCase, override_settings
from django.test.utils import CaptureQueriesContext
from django.utils import timezone
from organizations.models import Organization
from organizations.source_ingestion import (
OrganizationSourceIngestionService,
SourceRecordInput,
@@ -33,6 +35,21 @@ def _save_source_record(
title: str = "",
payload: dict | None = None,
) -> None:
payload = dict(payload or {})
if inn:
if not Organization.objects.filter(inn=inn).exists():
Organization.objects.create(
name=organization_name or title or external_id,
inn=inn,
)
else:
rn_key = organization_name or title or external_id
rn = str(int(hashlib.sha256(rn_key.encode()).hexdigest()[:12], 16) % 10**12)
payload.setdefault("rn", rn)
Organization.objects.get_or_create(
rn=rn,
defaults={"name": organization_name or title or external_id},
)
OrganizationSourceIngestionService.save_records(
source=source,
load_batch=1,
@@ -42,7 +59,7 @@ def _save_source_record(
title=title,
organization_name=organization_name or title or external_id,
inn=inn,
payload=payload or {},
payload=payload,
)
],
)