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