From 6b034e865988b55d3b75ffec447f3e10ca5fd0c9 Mon Sep 17 00:00:00 2001 From: Thibaud Duquennoy <thibaud@duquennoy.fr> Date: Fri, 25 Jan 2019 15:48:00 +0100 Subject: [PATCH] Fix bug #74: Container include a @type": "ldp:Container" Changed the behavior of the serialization in LDListMixin tho that it includes @type: ldp:Container --- README.md | 33 ++++++++++----------------------- djangoldp/serializers.py | 1 + 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 17b3fabe..07ac1cf2 100644 --- a/README.md +++ b/README.md @@ -147,12 +147,14 @@ class MyModel(models.Model): ## permissions This allows you to add permissions for AnonymousUser, logged in user, author ... in the url: Currently, there are 3 choices : -* PublicPostPermissions -* PrivateProjectPermissions -* NotificationsPermissions +* ObjectPermission +* AnonymousReadOnly +* InboxPermissions Specific permissin classes can be developed to fit special needs. -PublicPostPermissions gives these permissions: +ObjectPermission give permissions assign in the administration + +AnonymousReadOnly gives these permissions: * Anonymous users: can read all posts * Logged in users: can read all posts + create new posts * Author: can read all posts + create new posts + update their own @@ -160,30 +162,15 @@ PublicPostPermissions gives these permissions: ``` from django.conf.urls import url from djangoldp.views import LDPViewSet -from djangoldp.permissions import PublicPostPermissions +from djangoldp.permissions import AnonymousReadOnly urlpatterns = [ - url(r'^projects/', ProjectViewSet.urls(permission_classes=(PublicPostPermissions,))), + url(r'^projects/', ProjectViewSet.urls(permission_classes=(AnonymousReadOnly,))), url(r'^customers/', LDPViewSet.urls(model=Customer)), ] ``` -PrivateProjectPermissions provides the following -* Anonymous users: no permissions -* Logged in users: can read projects if they're in the team -* Users of group Partners: can see all projects + update all projects - -``` -from django.conf.urls import url -from djangoldp.views import LDPViewSet -from djangoldp.permissions import PrivateProjectPermissions - -urlpatterns = [ - url(r'^projects/', ProjectViewSet.urls(permission_classes=(PrivateProjectPermissions,))), - url(r'^customers/', LDPViewSet.urls(model=Customer)), -] -``` -NotificationsPermissions is used for, well, notifications: +InboxPermissions is used for, well, notifications: * Anonymous users: can create notifications but can't read * Logged in users: can create notifications but can't read * Inbox owners: can read + update all notifications @@ -194,7 +181,7 @@ from djangoldp.views import LDPViewSet from djangoldp.permissions import NotificationsPermissions urlpatterns = [ - url(r'^projects/', ProjectViewSet.urls(permission_classes=(NotificationsPermissions,))), + url(r'^projects/', ProjectViewSet.urls(permission_classes=(InboxPermissions,))), url(r'^customers/', LDPViewSet.urls(model=Customer)), ] ``` diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py index 54c599c6..f6318c28 100644 --- a/djangoldp/serializers.py +++ b/djangoldp/serializers.py @@ -183,6 +183,7 @@ class LDPSerializer(HyperlinkedModelSerializer): def to_representation(self, obj): data = super().to_representation(obj) + if hasattr(obj._meta, 'rdf_type'): data['@type'] = obj._meta.rdf_type data['permissions'] = [{'mode': {'@type': name.split('_')[0]}} for name in -- GitLab