diff --git a/djangoldp/models.py b/djangoldp/models.py index 50b31c6c8181e7642d9c5dcc11ac1df41b1490d9..bcb62f61d233e3e87cb4bd20e4718be78852a27d 100644 --- a/djangoldp/models.py +++ b/djangoldp/models.py @@ -1,6 +1,19 @@ from django.conf import settings from django.db import models + +class LDPModel(models.Model): + ldp_path = None + + def full_path(self): + return "{}/{}".format(self.container_path(), self.pk) + + def container_path(self): + return self.ldp_path + + class Meta: + abstract = True + class LDPSource(models.Model): container = models.URLField() federation = models.CharField(max_length=255) diff --git a/djangoldp/resolver.py b/djangoldp/resolver.py new file mode 100644 index 0000000000000000000000000000000000000000..949ae3f142dc975cb6c4518c2823d2db71a4b5ef --- /dev/null +++ b/djangoldp/resolver.py @@ -0,0 +1,17 @@ +class LDPResolver: + + @classmethod + def resource_url(cls, dummy): + pass + + @classmethod + def container_url(cls, dummy): + pass + + @classmethod + def resource_path(cls, dummy): + pass + + @classmethod + def container_path(cls, dummy): + pass diff --git a/djangoldp/tests/models.py b/djangoldp/tests/models.py index 13a0aedf31da3efac36fd9c00bb64b4d73923119..29b0a5211140c5ace8305c8c09d6690dd7cbd87c 100644 --- a/djangoldp/tests/models.py +++ b/djangoldp/tests/models.py @@ -1,6 +1,8 @@ from django.conf import settings from django.db import models +from djangoldp.models import LDPModel + class Skill(models.Model): title = models.CharField(max_length=255, blank=True, null=True) @@ -23,3 +25,11 @@ class Message(models.Model): author_user = models.ForeignKey(settings.AUTH_USER_MODEL) +class Dummy(models.Model): + some = models.CharField(max_length=255, blank=True, null=True) + + +class LDPDummy(LDPModel): + some = models.CharField(max_length=255, blank=True, null=True) + ldp_path = "ldp-dummys" + diff --git a/djangoldp/tests/runner.py b/djangoldp/tests/runner.py index 1cf8604dbae8eda88317a21cac92b33636febbb5..17419667e78c5a00b4e1f71dba2c0b47f5aaa88f 100644 --- a/djangoldp/tests/runner.py +++ b/djangoldp/tests/runner.py @@ -25,6 +25,7 @@ from django.test.runner import DiscoverRunner test_runner = DiscoverRunner(verbosity=1) failures = test_runner.run_tests([ + 'djangoldp.tests.tests_resolver', 'djangoldp.tests.tests_save', 'djangoldp.tests.tests_update']) if failures: diff --git a/djangoldp/tests/tests_resolver.py b/djangoldp/tests/tests_resolver.py new file mode 100644 index 0000000000000000000000000000000000000000..55818f6da074717fafb82a0f2de9507353294e23 --- /dev/null +++ b/djangoldp/tests/tests_resolver.py @@ -0,0 +1,25 @@ +from django.test import TestCase + +from djangoldp.resolver import LDPResolver +from djangoldp.tests.models import Dummy, LDPDummy + + +class UrlUtils(TestCase): + + def test_class_not_inheriting_ldp_model(self): + dummy = Dummy.objects.create(some="text") + self.assertEquals("http://localhost/dummys/{}".format(dummy.pk), LDPResolver.resource_url(dummy)) + self.assertEquals("/dummys/{}".format(dummy.pk), LDPResolver.resource_path(dummy)) + self.assertEquals("http://localhost/dummys", LDPResolver.container_url(dummy)) + self.assertEquals("/dummys", LDPResolver.container_path(dummy)) + + def test_class_inheriting_ldp_model(self): + dummy = LDPDummy.objects.create(some="text") + self.assertEquals("http://localhost/ldp-dummys/{}".format(dummy.pk), LDPResolver.resource_url(dummy)) + self.assertEquals("/ldp-dummys/{}".format(dummy.pk), LDPResolver.resource_path(dummy)) + self.assertEquals("http://localhost/ldp-dummys/{}".format(dummy.pk), dummy.resource_url()) + self.assertEquals("/ldp-dummys/{}".format(dummy.pk), dummy.resource_path()) + self.assertEquals("http://localhost/ldp-dummys", LDPResolver.container_url(dummy)) + self.assertEquals("/ldp-dummys", LDPResolver.container_path(dummy)) + self.assertEquals("http://localhost/dummys/", dummy.container_url()) + self.assertEquals("/ldp-dummys", dummy.container_path()) diff --git a/djangoldp/tests/tests_save.py b/djangoldp/tests/tests_save.py index 1117c928eb4d5f7908c942666a8a718d87b2c79e..7e05496ab21ab8aff4e639bd6d80dcc5c8873ae5 100644 --- a/djangoldp/tests/tests_save.py +++ b/djangoldp/tests/tests_save.py @@ -4,7 +4,7 @@ from djangoldp.serializers import LDPSerializer from djangoldp.tests.models import Skill, JobOffer -class Serializer(TestCase): +class Save(TestCase): def test_save_m2m(self): skill1 = Skill.objects.create(title="skill1", obligatoire="obligatoire") diff --git a/djangoldp/tests/tests_update.py b/djangoldp/tests/tests_update.py index 7b232b4455e057d97544dac01999657d2d104ca4..622b55ef6c6b2374b5650dbbfa994b400ca96853 100644 --- a/djangoldp/tests/tests_update.py +++ b/djangoldp/tests/tests_update.py @@ -5,7 +5,7 @@ from djangoldp.serializers import LDPSerializer from djangoldp.tests.models import Skill, JobOffer, Thread, Message -class Serializer(TestCase): +class Update(TestCase): def test_update(self): skill = Skill.objects.create(title="to drop", obligatoire="obligatoire") diff --git a/djangoldp/tests/urls.py b/djangoldp/tests/urls.py index 0066129ba1d57ef46610773bbcc237d840232f30..8e1cbc863bfce95dfd9160eb6461bb862d4e87ef 100644 --- a/djangoldp/tests/urls.py +++ b/djangoldp/tests/urls.py @@ -1,6 +1,6 @@ from django.conf import settings -from djangoldp.tests.models import Skill, JobOffer, Message, Thread +from djangoldp.tests.models import Skill, JobOffer, Message, Thread, Dummy from djangoldp.views import LDPViewSet from django.conf.urls import url @@ -11,4 +11,5 @@ urlpatterns = [ url(r'^messages/', LDPViewSet.urls(model=Message, permission_classes=[], fields=["@id", "text"], nested_fields=[])), url(r'^threads/', LDPViewSet.urls(model=Thread, nested_fields=["message_set"], permission_classes=())), url(r'^users/', LDPViewSet.urls(model=settings.AUTH_USER_MODEL, permission_classes=[])), + url(r'^dummys/', LDPViewSet.urls(model=Dummy, permission_classes=[])), ] \ No newline at end of file