Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
Django LDP
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
20
Issues
20
List
Boards
Labels
Milestones
Merge Requests
5
Merge Requests
5
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Startin blox
djangoldp-packages
Django LDP
Commits
109a4cf6
Commit
109a4cf6
authored
Jan 22, 2020
by
Christophe Henry
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: Add support for defining a custom serializer
parent
48c16aeb
Pipeline
#7122
passed with stage
in 1 minute and 15 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
31 additions
and
13 deletions
+31
-13
djangoldp/__init__.py
djangoldp/__init__.py
+1
-1
djangoldp/views.py
djangoldp/views.py
+30
-12
No files found.
djangoldp/__init__.py
View file @
109a4cf6
...
...
@@ -4,4 +4,4 @@ __version__ = '0.0.0'
options
.
DEFAULT_NAMES
+=
(
'lookup_field'
,
'rdf_type'
,
'rdf_context'
,
'auto_author'
,
'owner_field'
,
'view_set'
,
'container_path'
,
'permission_classes'
,
'serializer_fields'
,
'nested_fields'
,
'depth'
,
'anonymous_perms'
,
'authenticated_perms'
,
'owner_perms'
)
'owner_perms'
,
'ldp_read_serializer'
,
'ldp_write_serializer'
)
djangoldp/views.py
View file @
109a4cf6
from
inspect
import
isclass
from
django.apps
import
apps
from
django.conf
import
settings
from
django.conf.urls
import
url
,
include
from
django.conf.urls
import
include
,
url
from
django.contrib.auth
import
get_user_model
from
django.core.exceptions
import
FieldDoesNotExist
from
django.core.urlresolvers
import
get_resolver
...
...
@@ -20,7 +22,6 @@ from djangoldp.endpoints.webfinger import WebFingerEndpoint, WebFingerError
from
djangoldp.models
import
LDPSource
,
Model
from
djangoldp.permissions
import
LDPPermissions
get_user_model
()
.
_meta
.
rdf_context
=
{
"get_full_name"
:
"rdfs:label"
}
...
...
@@ -120,22 +121,39 @@ class LDPViewSet(LDPViewSetGenerator):
def
build_read_serializer
(
self
):
model_name
=
self
.
model
.
_meta
.
object_name
.
lower
()
lookup_field
=
get_resolver
()
.
reverse_dict
[
model_name
+
'-detail'
][
0
][
0
][
1
][
0
]
meta_args
=
{
'model'
:
self
.
model
,
'extra_kwargs'
:
{
'@id'
:
{
'lookup_field'
:
lookup_field
}},
'depth'
:
getattr
(
self
,
'depth'
,
Model
.
get_meta
(
self
.
model
,
'depth'
,
0
)),
'extra_fields'
:
self
.
nested_fields
}
meta_args
=
{
"model"
:
self
.
model
,
"meta"
:
self
.
model
.
_meta
,
"extra_kwargs"
:
{
"@id"
:
{
"lookup_field"
:
lookup_field
}
},
"depth"
:
getattr
(
self
,
"depth"
,
Model
.
get_meta
(
self
.
model
,
"depth"
,
0
)),
"extra_fields"
:
self
.
nested_fields
}
return
self
.
build_serializer
(
meta_args
,
'Read'
)
def
build_write_serializer
(
self
):
model_name
=
self
.
model
.
_meta
.
object_name
.
lower
()
lookup_field
=
get_resolver
()
.
reverse_dict
[
model_name
+
'-detail'
][
0
][
0
][
1
][
0
]
meta_args
=
{
'model'
:
self
.
model
,
'extra_kwargs'
:
{
'@id'
:
{
'lookup_field'
:
lookup_field
}},
'depth'
:
10
,
'extra_fields'
:
self
.
nested_fields
}
return
self
.
build_serializer
(
meta_args
,
'Write'
)
lookup_field
=
get_resolver
()
.
reverse_dict
[
model_name
+
"-detail"
][
0
][
0
][
1
][
0
]
meta_args
=
{
"model"
:
self
.
model
,
"meta"
:
self
.
model
.
_meta
,
"extra_kwargs"
:
{
"@id"
:
{
"lookup_field"
:
lookup_field
}
},
"depth"
:
10
,
"extra_fields"
:
self
.
nested_fields
}
return
self
.
build_serializer
(
meta_args
,
"Write"
)
def
build_serializer
(
self
,
meta_args
,
name_prefix
):
# If the model specifies a custom write serializer, let's respect that choice
lower_name_prefix
=
name_prefix
.
lower
()
ldp_serializer
=
getattr
(
meta_args
[
"meta"
],
"ldp_{}_serializer"
.
format
(
lower_name_prefix
),
None
)
from
djangoldp.serializers
import
LDPSerializer
if
isclass
(
ldp_serializer
)
and
issubclass
(
ldp_serializer
,
LDPSerializer
):
return
ldp_serializer
if
self
.
fields
:
meta_args
[
'fields'
]
=
self
.
fields
else
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment