diff --git a/djangoldp/admin.py b/djangoldp/admin.py index 94fa93d75594ae814d3efef9ac97de5c3fc59857..dffdc236ff97205748b9dcaa3626bbb1f35adcfd 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 ca8bb3f3cf20c89cb7233498e98314484f78976d..493f3e34ae53edade8f233e2ebec8aaceefa3935 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 31aa83129a4d34905f582f9c25b4a92f7761701b..39b9e3518bc8c10bb2b14701591b4549063679f8 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 eb8ecad93c8bb35808d9a99c29c697d7ebd429a0..3879cd1f198a69f26a9c75abed18b129d8c11af8 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'])