Skip to content

seeder

django_spire.contrib.seeding.seeder

Seeder

Source code in django_spire/contrib/seeding/seeder.py
def __init__(self, count: int = 1, verbose: bool = True) -> None:
    self.seeds: list[Seed] = []
    self._model_object_ids: list[int | str] = []
    self._count: int = count
    self.verbose: bool = verbose

locale = 'en_CA' class-attribute instance-attribute

custom = CustomFieldSeedHelper(locale) class-attribute instance-attribute

fake = FakeFieldSeedHelper(locale) class-attribute instance-attribute

model = ModelFieldSeedHelper(locale) class-attribute instance-attribute

mutate = MutateFieldSeedHelper(locale) class-attribute instance-attribute

ordered = OrderedFieldSeedHelper(locale) class-attribute instance-attribute

random = RandomFieldSeedHelper(locale) class-attribute instance-attribute

cache_enabled = True class-attribute instance-attribute

model_class = None class-attribute instance-attribute

fields_seeds instance-attribute

seeds = [] instance-attribute

verbose = verbose instance-attribute

meta property

name_verbose property

queryset property

__init_subclass__

Source code in django_spire/contrib/seeding/seeder.py
def __init_subclass__(cls, **kwargs) -> None:
    super().__init_subclass__(**kwargs)

    if getattr(cls, 'fields_seeds', None) is None:
        message = f'{cls.__name__}.fields_seeds is None and must be defined'
        raise ValueError(message)

    cls._validate()

exclude staticmethod

Source code in django_spire/contrib/seeding/seeder.py
@staticmethod
def exclude() -> ExcludeFieldSeed:
    return ExcludeFieldSeed()

index staticmethod

Source code in django_spire/contrib/seeding/seeder.py
@staticmethod
def index(index_start: int = 0, index_step: int = 1) -> IndexFieldSeed:
    return IndexFieldSeed(index_start, index_step)

static staticmethod

Source code in django_spire/contrib/seeding/seeder.py
@staticmethod
def static(value: Any) -> StaticFieldSeed:
    return StaticFieldSeed(value)

file staticmethod

Source code in django_spire/contrib/seeding/seeder.py
@staticmethod
def file(upload_to: str | None = None) -> FileFieldSeed:
    return FileFieldSeed(upload_to)

llm classmethod

Source code in django_spire/contrib/seeding/seeder.py
@classmethod
def llm(cls, field_type: type, prompt: str | None = None) -> LlmFieldSeed:
    return LlmFieldSeed(field_type=field_type, prompt=prompt, locale=cls.locale)

reset_meta classmethod

Source code in django_spire/contrib/seeding/seeder.py
@classmethod
def reset_meta(cls):
    cls._meta = SeederMetaData()

__post_seed__

Source code in django_spire/contrib/seeding/seeder.py
def __post_seed__(self) -> None:
    pass

__post_seed_database__

Source code in django_spire/contrib/seeding/seeder.py
def __post_seed_database__(self) -> None:
    pass

seed

Source code in django_spire/contrib/seeding/seeder.py
def seed(self, count: int | None = None) -> None:
    seed_count = self._count if count is None else count

    if not self.seeds:
        start_time = time.perf_counter()

        self._print_seeder_start(seed_count)

        if self.model_class is None:
            self.seeds = SeedFactory(seeder=self).generate_seeds(
                count=seed_count, cache_enabled=self.cache_enabled, cache_name=self._cache_name
            )

        else:
            self.seeds = ModelSeedFactory(seeder=self).generate_seeds(
                count=seed_count, cache_enabled=self.cache_enabled, cache_name=self._cache_name
            )

        self._print_post(spacing=4)

        self.__post_seed__()

        self._print_completed_and_update_meta(start_time)

seed_class

Source code in django_spire/contrib/seeding/seeder.py
def seed_class(self, class_: type, count: int | None = None) -> list[type]:
    self.seed(count)

    return [class_(**fields_values) for fields_values in self.to_list_of_dicts()]

seed_database

Source code in django_spire/contrib/seeding/seeder.py
def seed_database(self, count: int | None = None) -> QuerySet:

    if self.model_class is None:
        message = 'Cannot seed database without a model class'
        raise DjangoSpireSeederError(message)

    self.seed(count)

    start_time = time.perf_counter()

    self._print_saving_to_database()

    model_objects = self.model_class.objects.bulk_create(
        objs=self.to_model_instances(), batch_size=1000
    )

    self._model_object_ids = [model_object.id for model_object in model_objects]

    self._print_post(spacing=7)

    self.__post_seed_database__()

    self._print_completed_and_update_meta(start_time)

    return self.queryset

print_meta_overview classmethod

Source code in django_spire/contrib/seeding/seeder.py
@classmethod
def print_meta_overview(cls):
    cls._meta.print_overview()

reseed_database

Source code in django_spire/contrib/seeding/seeder.py
def reseed_database(self, count: int | None = None) -> QuerySet:
    self.reset()
    return self.seed_database(count=count)

reseed

Source code in django_spire/contrib/seeding/seeder.py
def reseed(self, count: int | None = None) -> None:
    self.reset()
    self.seed(count=count)

reset

Source code in django_spire/contrib/seeding/seeder.py
def reset(self) -> None:
    self.seeds.clear()
    self._model_object_ids.clear()

to_json

Source code in django_spire/contrib/seeding/seeder.py
def to_json(self, count: int | None = None) -> str:
    self.seed(count=count)

    if self.model_class is not None:
        if self._model_object_ids:
            return serializers.serialize('json', self.queryset)

        return serializers.serialize('json', self.to_model_instances())

    return json.dumps(self.to_list_of_dicts(), cls=DjangoJSONEncoder)

to_list_of_dicts

Source code in django_spire/contrib/seeding/seeder.py
def to_list_of_dicts(self, count: int | None = None) -> list[dict[str, Any]]:
    self.seed(count=count)

    return [seed.to_dict() for seed in self.seeds]

to_model_instances

Source code in django_spire/contrib/seeding/seeder.py
def to_model_instances(self, count: int | None = None) -> list[models.Model]:
    if self.model_class is None:
        message = 'Cannot create models instances without a model class'
        raise DjangoSpireSeederError(message)

    self.seed(count=count)

    return [self.model_class(**fields_values) for fields_values in self.to_list_of_dicts()]