Files
state-corp-backend/tests/apps/external_data/factories.py
Aleksandr Meshchriakov eb170ff914
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 5m33s
CI/CD Pipeline / Run Tests (push) Failing after 5m33s
CI/CD Pipeline / Build and Push Dev Images (push) Has been skipped
CI/CD Pipeline / Deploy Dev via Compose (push) Has been skipped
feat: restore report files and export claim amounts
2026-08-09 12:23:37 +02:00

189 lines
7.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Factories for external data models."""
import factory
from apps.external_data.models import (
ArbitrationCase,
BankruptcyProcedure,
DefenseUnreliableSupplier,
FinancialReport,
FinancialReportLine,
IndustrialCertificate,
IndustrialProduct,
InformationSecurityRegistryEntry,
LaborVacancy,
ManufacturerRegistryEntry,
ProsecutorCheck,
PublicProcurement,
)
from faker import Faker
from tests.apps.organization.factories import OrganizationFactory
fake = Faker("ru_RU")
class IndustrialProductFactory(factory.django.DjangoModelFactory):
class Meta:
model = IndustrialProduct
organization = factory.SubFactory(OrganizationFactory)
product_name = factory.LazyAttribute(lambda _: fake.sentence(nb_words=3))
product_class = "electronics"
okpd2_code = "26.51.53"
tnved_code = "9015.10"
registry_number = factory.Sequence(lambda n: f"{1000 + n}/2026")
class IndustrialCertificateFactory(factory.django.DjangoModelFactory):
class Meta:
model = IndustrialCertificate
organization = factory.SubFactory(OrganizationFactory)
certificate_number = factory.Sequence(lambda n: f"CERT-{n:04d}")
issue_date = factory.LazyAttribute(lambda _: fake.date_this_year())
expiry_date = factory.LazyAttribute(lambda _: fake.date_this_decade())
certificate_file_url = factory.Sequence(
lambda n: f"https://minpromtorg.gov.ru/cert/{n}"
)
organisation_name = factory.LazyAttribute(lambda obj: obj.organization.name)
ogrn = factory.LazyAttribute(lambda obj: obj.organization.ogrn)
class ManufacturerRegistryEntryFactory(factory.django.DjangoModelFactory):
class Meta:
model = ManufacturerRegistryEntry
organization = factory.SubFactory(OrganizationFactory)
full_legal_name = factory.LazyAttribute(lambda obj: obj.organization.name)
inn = factory.LazyAttribute(lambda obj: obj.organization.inn)
ogrn = factory.LazyAttribute(lambda obj: obj.organization.ogrn)
address = factory.LazyAttribute(lambda _: fake.address())
class ProsecutorCheckFactory(factory.django.DjangoModelFactory):
class Meta:
model = ProsecutorCheck
organization = factory.SubFactory(OrganizationFactory)
registration_number = factory.Sequence(lambda n: f"{2_900_000_000 + n}")
law_type = "294_fz"
control_authority = "Центральное управление Ростехнадзора"
prosecutor_office = "Московская городская прокуратура"
start_date = factory.LazyAttribute(lambda _: fake.date_this_decade())
status = "planned"
class PublicProcurementFactory(factory.django.DjangoModelFactory):
class Meta:
model = PublicProcurement
organization = factory.SubFactory(OrganizationFactory)
purchase_number = factory.Sequence(lambda n: f"{37_310_000_000_000_0000 + n:019d}")
law_type = "44_fz"
status = "signing"
contract_amount = factory.LazyAttribute(
lambda _: fake.pydecimal(left_digits=8, right_digits=2, positive=True)
)
contract_date = factory.LazyAttribute(lambda _: fake.date_this_year())
execution_start_date = factory.LazyAttribute(lambda _: fake.date_this_year())
execution_end_date = factory.LazyAttribute(
lambda _: fake.date_between(start_date="+30d", end_date="+365d")
)
purchase_name = factory.LazyAttribute(lambda _: fake.sentence(nb_words=6))
class ArbitrationCaseFactory(factory.django.DjangoModelFactory):
class Meta:
model = ArbitrationCase
organization = factory.SubFactory(OrganizationFactory)
case_number = factory.Sequence(lambda n: f"А40-{16_000 + n}/2026")
court_name = "Арбитражный суд города Москвы"
party_role = "defendant"
status = "hearing_scheduled"
claim_amount = factory.LazyAttribute(
lambda _: fake.pydecimal(left_digits=8, right_digits=2, positive=True)
)
decision_date = factory.LazyAttribute(lambda _: fake.date_this_year())
class InformationSecurityRegistryEntryFactory(factory.django.DjangoModelFactory):
class Meta:
model = InformationSecurityRegistryEntry
organization = factory.SubFactory(OrganizationFactory)
registry_name = "Реестр лицензий на деятельность по технической защите конфиденциальной информации"
presence_status = "present"
entry_number = "77-001234"
issued_at = factory.LazyAttribute(lambda _: fake.date_this_year())
expires_at = factory.LazyAttribute(lambda _: fake.date_this_year())
class BankruptcyProcedureFactory(factory.django.DjangoModelFactory):
class Meta:
model = BankruptcyProcedure
organization = factory.SubFactory(OrganizationFactory)
external_id = factory.Sequence(lambda n: f"fedresurs:{n}")
message_type = "Сообщение о намерении"
message_date = factory.LazyAttribute(lambda _: fake.date_this_year())
case_number = factory.Sequence(lambda n: f"А40-{20_000 + n}/2026")
status = "published"
source_url = factory.Sequence(lambda n: f"https://fedresurs.ru/message/{n}")
class DefenseUnreliableSupplierFactory(factory.django.DjangoModelFactory):
class Meta:
model = DefenseUnreliableSupplier
organization = factory.SubFactory(OrganizationFactory)
external_id = factory.Sequence(lambda n: f"fas-goz:{n}")
registry_source = "fas_goz"
registry_number = factory.Sequence(lambda n: f"ГОЗ-{n:04d}")
supplier_name = factory.LazyAttribute(lambda obj: obj.organization.name)
reason = "Уклонение от заключения контракта"
included_at = factory.LazyAttribute(lambda _: fake.date_this_year())
status = "active"
source_url = factory.Sequence(lambda n: f"https://fas.gov.ru/register/{n}")
class LaborVacancyFactory(factory.django.DjangoModelFactory):
class Meta:
model = LaborVacancy
organization = factory.SubFactory(OrganizationFactory)
external_id = factory.Sequence(lambda n: f"trudvsem:{n}")
vacancy_source = "trudvsem"
title = "Инженер-испытатель"
status = "open"
published_at = factory.LazyAttribute(lambda _: fake.date_this_year())
salary_amount = "175000.00"
source_url = factory.Sequence(lambda n: f"https://trudvsem.ru/vacancy/{n}")
class FinancialReportFactory(factory.django.DjangoModelFactory):
class Meta:
model = FinancialReport
organization = factory.SubFactory(OrganizationFactory)
external_id = factory.Sequence(lambda n: f"fin-{n:04d}")
ogrn = factory.LazyAttribute(lambda obj: obj.organization.ogrn)
file_name = factory.Sequence(lambda n: f"fin_{n:04d}.xlsx")
file_hash = factory.Sequence(lambda n: f"{n:064x}"[-64:])
load_batch = factory.Sequence(lambda n: n + 1)
status = "success"
source = "api"
class FinancialReportLineFactory(factory.django.DjangoModelFactory):
class Meta:
model = FinancialReportLine
report = factory.SubFactory(FinancialReportFactory)
form_code = "1"
line_code = "1600"
line_name = "Баланс"
year = 2025
period_start = 1000
period_end = 1500