From 4849b1e3dbe31a0c5a814ac3dd4b7250183b6475 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste <bleme@pm.me>
Date: Mon, 5 Aug 2019 16:16:04 +0200
Subject: [PATCH] refactor: don't reload for sources

---
 djangoldp/admin.py  |  2 +-
 djangoldp/models.py |  2 +-
 djangoldp/urls.py   |  5 +++--
 djangoldp/views.py  | 21 +--------------------
 4 files changed, 6 insertions(+), 24 deletions(-)

diff --git a/djangoldp/admin.py b/djangoldp/admin.py
index 94fa93d7..dffdc236 100644
--- a/djangoldp/admin.py
+++ b/djangoldp/admin.py
@@ -23,4 +23,4 @@ for class_name in model_classes:
     if not admin.site.is_registered(model_class):
         admin.site.register(model_class)
 
-admin.site.register(LDPSource)
+# admin.site.register(LDPSource)
diff --git a/djangoldp/models.py b/djangoldp/models.py
index ca8bb3f3..493f3e34 100644
--- a/djangoldp/models.py
+++ b/djangoldp/models.py
@@ -116,7 +116,7 @@ class Model(models.Model):
         return [{'mode': {'@type': name.split('_')[0]}} for name in permissions]
 
 
-class LDPSource(models.Model):
+class LDPSource(Model):
     container = models.URLField()
     federation = models.CharField(max_length=255)
 
diff --git a/djangoldp/urls.py b/djangoldp/urls.py
index 31aa8312..39b9e351 100644
--- a/djangoldp/urls.py
+++ b/djangoldp/urls.py
@@ -4,8 +4,8 @@ from django.conf import settings
 from django.conf.urls import url, include
 
 from djangoldp.models import LDPSource, Model
-from djangoldp.views import LDPSourceViewSet
 from djangoldp.permissions import LDPPermissions
+from djangoldp.views import LDPSourceViewSet
 
 
 def __clean_path(path):
@@ -17,7 +17,8 @@ def __clean_path(path):
 
 
 urlpatterns = [
-    url(r'^sources/', LDPSourceViewSet.urls(model=LDPSource)),
+    url(r'^sources/(?P<federation>\w+)/', LDPSourceViewSet.urls(model=LDPSource, fields=['federation', 'container'],
+                                                                permission_classes=[LDPPermissions], )),
 ]
 
 for package in settings.DJANGOLDP_PACKAGES:
diff --git a/djangoldp/views.py b/djangoldp/views.py
index eb8ecad9..3879cd1f 100644
--- a/djangoldp/views.py
+++ b/djangoldp/views.py
@@ -278,24 +278,5 @@ class LDPSourceViewSet(LDPViewSet):
     model = LDPSource
     federation = None
 
-    @classonlymethod
-    def urls(cls, **kwargs):
-        try:
-            return include([url(name + '/', super(LDPSourceViewSet, cls).urls(federation=name, **kwargs))
-                            for name in LDPSource.objects.order_by().values_list('federation', flat=True).distinct()])
-        except (OperationalError, ProgrammingError):  # for the case where the table doesn't exist
-            return include([])
-
     def get_queryset(self, *args, **kwargs):
-        return super().get_queryset(*args, **kwargs).filter(federation=self.federation)
-
-
-@receiver([post_save, post_delete], sender=LDPSource)
-def reload_sources_module(sender, instance, **kwargs):
-    urlconf = settings.ROOT_URLCONF
-    clear_url_caches()
-
-    if 'djangoldp.urls' in sys.modules:
-        reload(sys.modules['djangoldp.urls'])
-    if urlconf in sys.modules:
-        reload(sys.modules[urlconf])
+        return super().get_queryset(*args, **kwargs).filter(federation=self.kwargs['federation'])
-- 
GitLab