All checks were successful
CI/CD Pipeline / Code Quality Checks (push) Successful in 2m41s
CI/CD Pipeline / Run Tests (push) Successful in 2m47s
CI/CD Pipeline / Build Docker Images (push) Successful in 2m24s
CI/CD Pipeline / Push to Gitea Registry (push) Successful in 0s
CI/CD Pipeline / Deploy to Server (push) Successful in 0s
129 lines
4.9 KiB
Python
129 lines
4.9 KiB
Python
"""Factories for external data models."""
|
||
|
||
import factory
|
||
from apps.external_data.models import (
|
||
ArbitrationCase,
|
||
BankruptcyProcedure,
|
||
DefenseUnreliableSupplier,
|
||
IndustrialProduct,
|
||
InformationSecurityRegistryEntry,
|
||
LaborVacancy,
|
||
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 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}")
|