cubicweb/pyramid/rest_api.py
changeset 12911 a17cbf539a69
parent 11967 83739be20fab
--- 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__)