Skip to content

override

django_spire.contrib.seeding.field.override

FieldOverride

Source code in django_spire/contrib/seeding/field/override.py
def __init__(self, seeder_class: Any) -> None:
    self.seeder_class = seeder_class
    self.overrides = {}

seeder_class = seeder_class instance-attribute

overrides = {} instance-attribute

__getattr__

Delegate attribute lookup to self.seeder_class if the attribute isn't found in this FieldOverride instance.

Source code in django_spire/contrib/seeding/field/override.py
def __getattr__(self, name: str) -> Any:
    """
    Delegate attribute lookup to self.seeder_class if the attribute isn't found
    in this FieldOverride instance.
    """

    attr = getattr(self.seeder_class, name)

    if callable(attr):
        def wrapper(*args: Any, **kwargs: Any) -> Any:
            # TODO: Error here if fields is passed as an arg.

            # Pass the overrides field to the seed method
            if 'fields' in kwargs and isinstance(kwargs['fields'], dict):
                kwargs['fields'] = {**kwargs['fields'], **self.overrides}
            else:
                kwargs['fields'] = self.overrides

            return attr(*args, **kwargs)

        return wrapper

    return attr

filter

Source code in django_spire/contrib/seeding/field/override.py
def filter(self, **kwargs: Any) -> FieldOverride:
    self.overrides.update(kwargs)
    return self

seed

Source code in django_spire/contrib/seeding/field/override.py
def seed(self, count: int = 1) -> list:
    return self.seeder_class.seed(count=count, fields=self.overrides)