Files
state-corp-backend/tests/apps/external_data/factories.py
Aleksandr Meshchriakov d1b0cd7945
All checks were successful
CI/CD Pipeline / Run Tests (push) Successful in 6m12s
CI/CD Pipeline / Code Quality Checks (push) Successful in 6m19s
CI/CD Pipeline / Build Docker Images (push) Successful in 2m21s
CI/CD Pipeline / Push to Gitea Registry (push) Successful in 1s
CI/CD Pipeline / Deploy to Server (push) Successful in 1s
feat: import mostovik exchange sections
2026-05-27 23:13:40 +02:00

186 lines
6.9 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"
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