--- a/cubicweb/pyramid/rest_api.py Tue Mar 10 23:44:45 2020 +0100
+++ b/cubicweb/pyramid/rest_api.py Tue Mar 10 23:47:50 2020 +0100
@@ -20,26 +20,44 @@
"""Experimental REST API for CubicWeb using Pyramid."""
-from __future__ import absolute_import
-
+import rdflib
from pyramid.view import view_config
-from cubicweb.pyramid.resources import EntityResource, ETypeResource
+from pyramid.response import Response
+
+from cubicweb import rdf
+from cubicweb.pyramid.resources import rdf_context_from_eid, RDFResource
@view_config(
- route_name='cwentities',
- context=EntityResource,
- request_method='DELETE')
-def delete_entity(context, request):
- context.rset.one().cw_delete()
- request.response.status_int = 204
- return request.response
+ route_name='one_entity',
+ context=RDFResource,
+)
+@view_config(
+ route_name='one_entity_eid',
+ context=RDFResource,
+)
+def view_entity_as_rdf(context, request):
+ graph = rdflib.ConjunctiveGraph()
+ rdf.add_entity_to_graph(graph, context.entity)
+ rdf_format = rdf.RDF_MIMETYPE_TO_FORMAT[context.mime_type]
+ response = Response(graph.serialize(format=rdf_format))
+ response.content_type = context.mime_type
+ return response
def includeme(config):
config.include('.predicates')
config.add_route(
- 'cwentities', '/{etype}/*traverse',
- factory=ETypeResource.from_match('etype'), match_is_etype='etype')
+ 'one_entity',
+ '/{etype}/{eid}',
+ factory=rdf_context_from_eid,
+ match_is_etype_and_eid=('etype', 'eid'),
+ )
+ config.add_route(
+ 'one_entity_eid',
+ '/{eid}',
+ factory=rdf_context_from_eid,
+ match_is_eid='eid'
+ )
config.scan(__name__)