diff --git a/api/funkwhale_api/factories.py b/api/funkwhale_api/factories.py index 5db75fd58..472ff3feb 100644 --- a/api/funkwhale_api/factories.py +++ b/api/funkwhale_api/factories.py @@ -1,6 +1,9 @@ +import uuid import factory import persisting_theory +from faker.providers import internet as internet_provider + class FactoriesRegistry(persisting_theory.Registry): look_into = "factories" @@ -39,3 +42,22 @@ class NoUpdateOnCreate: @classmethod def _after_postgeneration(cls, instance, create, results=None): return + + +class FunkwhaleProvider(internet_provider.Provider): + """ + Our own faker data generator, since built-in ones are sometimes + not random enough + """ + + def federation_url(self, prefix=""): + def path_generator(): + return "{}/{}".format(prefix, uuid.uuid4()) + + domain = self.domain_name() + protocol = "https" + path = path_generator() + return "{}://{}/{}".format(protocol, domain, path) + + +factory.Faker.add_provider(FunkwhaleProvider) diff --git a/changes/changelog.d/factories.bugfix b/changes/changelog.d/factories.bugfix new file mode 100644 index 000000000..58fa58074 --- /dev/null +++ b/changes/changelog.d/factories.bugfix @@ -0,0 +1 @@ +Fixed dev command for fake data creation (!664)