From 1a3e7a5e0dc6b57e603654e51ac97e3e64b9cf03 Mon Sep 17 00:00:00 2001
From: gordon <funkwhale-dev@gordon.re>
Date: Tue, 12 Mar 2019 14:15:58 +0100
Subject: [PATCH] Fix Factories for dev data

---
 api/funkwhale_api/factories.py       | 22 ++++++++++++++++++++++
 changes/changelog.d/factories.bugfix |  1 +
 2 files changed, 23 insertions(+)
 create mode 100644 changes/changelog.d/factories.bugfix

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)
-- 
GitLab