Skip to content

Custom Faker Storage provider

python
from faker.providers.lorem.en_US import Provider as LoremProvider
from factory import Faker as BaseFaker
from factory import Factory
from localize.models import Location
import os


class FakerStorageProvider(LoremProvider):
    """Custom Faker provider for generating random server path."""

    __provider__ = "faker_storage"

    def faker_storage(self) -> str:
        """Generate a random server path."""

        depth = self.random_int(1, 5)
        final_path = os.sep.join(self.words(depth, unique=True))
        return f"/storage/{final_path}"


our_faker = BaseFaker("faker_storage", locale="en_US")
our_faker.add_provider(FakerStorageProvider)


class LocationFactory(Factory):
    """Factory for generating location data."""

    class Meta:
        model = Location

    root = our_faker