Skip to content
Snippets Groups Projects
Commit 9ee2a850 authored by Jean-Baptiste's avatar Jean-Baptiste
Browse files

update: manage slug on custom model

parent df0a759f
No related branches found
No related tags found
No related merge requests found
from django.conf import settings from django.conf import settings
from django.db import models from django.db import models
from django.urls import get_resolver
class Model(models.Model): class Model(models.Model):
container_path = None container_path = None
def get_container_path(self):
return self.container_path
def get_absolute_url(self): def get_absolute_url(self):
return Model.resource_id(self) return Model.resource_id(self)
...@@ -13,16 +17,19 @@ class Model(models.Model): ...@@ -13,16 +17,19 @@ class Model(models.Model):
@classmethod @classmethod
def resource_id(cls, instance): def resource_id(cls, instance):
return "{}{}".format(Model.container_id(instance), instance.pk) view_name = '{}-detail'.format(instance._meta.object_name.lower())
slug_field = '/{}'.format(get_resolver().reverse_dict[view_name][0][0][1][0])
if slug_field.startswith('/'):
slug_field = slug_field[1:]
return "{}{}".format(Model.container_id(instance), getattr(instance, slug_field))
@classmethod @classmethod
def container_id(cls, instance): def container_id(cls, instance):
if isinstance(instance, cls): if isinstance(instance, cls):
path = instance.container_path path = instance.container_path
else: else:
from django.urls import get_resolver
view_name = '{}-list'.format(instance._meta.object_name.lower()) view_name = '{}-list'.format(instance._meta.object_name.lower())
path = '/{}'.format(get_resolver().reverse_dict[view_name][0][0][0], instance.pk) path = '/{}'.format(get_resolver().reverse_dict[view_name][0][0][0])
if not path.startswith("/"): if not path.startswith("/"):
path = "/{}".format(path) path = "/{}".format(path)
......
...@@ -41,7 +41,7 @@ class LDListMixin: ...@@ -41,7 +41,7 @@ class LDListMixin:
try: try:
object_list = dictionary["@graph"] object_list = dictionary["@graph"]
view_name = '{}-list'.format(self.parent.Meta.model._meta.object_name.lower()) view_name = '{}-list'.format(self.parent.Meta.model._meta.object_name.lower())
part_id = '/{}'.format(get_resolver().reverse_dict[view_name][0][0][0], self.parent.instance.pk) part_id = '/{}'.format(get_resolver().reverse_dict[view_name][0][0][0])
obj = next(filter(lambda o: part_id in o['@id'], object_list)) obj = next(filter(lambda o: part_id in o['@id'], object_list))
list = super().get_value(obj) list = super().get_value(obj)
try: try:
......
from django.conf import settings from django.conf import settings
from djangoldp.tests.models import Skill, JobOffer, Message, Thread, Dummy from djangoldp.tests.models import Skill, JobOffer, Message, Thread, Dummy, LDPDummy
from djangoldp.views import LDPViewSet from djangoldp.views import LDPViewSet
from django.conf.urls import url from django.conf.urls import url
...@@ -12,4 +12,5 @@ urlpatterns = [ ...@@ -12,4 +12,5 @@ urlpatterns = [
url(r'^threads/', LDPViewSet.urls(model=Thread, nested_fields=["message_set"], permission_classes=())), 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'^users/', LDPViewSet.urls(model=settings.AUTH_USER_MODEL, permission_classes=[])),
url(r'^dummys/', LDPViewSet.urls(model=Dummy, permission_classes=[])), url(r'^dummys/', LDPViewSet.urls(model=Dummy, permission_classes=[])),
url(r'^ldp-dummys/', LDPViewSet.urls(model=LDPDummy, permission_classes=[])),
] ]
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment