feat: use authoritative organization directory
This commit is contained in:
@@ -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,
|
||||
)
|
||||
],
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user