Kaynağa Gözat

HUE-8161 [metadata] API to map a namespace entity to a class

     $.post("/metadata/api/navigator/namespace/property/create/", {
        "namespace": "huecatalog",
        "properties": ko.mapping.toJSON({
          "name" : "relatedEntities2",
          "displayName" : "Related objects",
          "description" : "My desc",
          "multiValued" : true,
          "maxLength" : 50,
          "pattern" : ".*",
          "enumValues" : null,
          "type" : "TEXT"
        })
      }, function(data) {
        console.log(ko.mapping.toJSON(data));
      });
Romain Rigaux 7 yıl önce
ebeveyn
işleme
a65d88c

+ 20 - 0
desktop/libs/metadata/src/metadata/navigator_api.py

@@ -597,3 +597,23 @@ def create_namespace_property(request):
 
   return JsonResponse(response)
 
+
+@error_handler
+def map_namespace_property(request):
+  """
+  {
+  namespace: "huecatalog",
+  name: "relatedEntities"
+  }"""
+  response = {'status': -1}
+
+  api = NavigatorApi(request.user)
+  clazz = request.POST.get('class')
+  properties = json.loads(request.POST.get('properties', '[]'))
+
+  namespace = api.map_namespace_property(clazz=clazz, properties=properties)
+
+  response['namespace'] = namespace
+  response['status'] = 0
+
+  return JsonResponse(response)

+ 9 - 0
desktop/libs/metadata/src/metadata/navigator_client.py

@@ -532,6 +532,15 @@ class NavigatorApi(object):
       LOG.error(msg)
       raise NavigatorApiException(e.message)
 
+  def map_namespace_property(self, clazz, properties):
+    try:
+      data = json.dumps(properties)
+      return self._root.post('models/packages/nav/classes/%(class)s/properties' % {'class': clazz}, data=data, contenttype=_JSON_CONTENT_TYPE, clear_cookies=True)
+    except RestException, e:
+      msg = 'Failed to map class %s property' % clazz
+      LOG.error(msg)
+      raise NavigatorApiException(e.message)
+
 
   def _get_boosted_term(self, term):
     return 'AND'.join([

+ 1 - 0
desktop/libs/metadata/src/metadata/urls.py

@@ -34,6 +34,7 @@ urlpatterns = patterns('metadata.navigator_api',
   url(r'^api/navigator/namespace/create/?$', 'create_namespace', name='create_namespace'),
   url(r'^api/navigator/namespace/?$', 'get_namespace', name='get_namespace'),
   url(r'^api/navigator/namespace/property/create/?$', 'create_namespace_property', name='create_namespace_property'),
+  url(r'^api/navigator/namespace/property/map/?$', 'map_namespace_property', name='map_namespace_property'),
 )
 
 

+ 15 - 1
docs/sdk/sdk.md

@@ -984,7 +984,7 @@ How to create a new locale for an app::
 # API
 
 ## Metadata
- 
+
 ### Getting a namespace
 
 <pre>
@@ -1028,6 +1028,20 @@ How to create a new locale for an app::
       });
 </pre>
 
+### Map a namespace property to a class entity
+
+<pre>
+     $.post("/metadata/api/navigator/namespace/property/map/", {
+        "class": "hv_view",
+        "properties": ko.mapping.toJSON([{
+           namespace: "huecatalog",
+           name: "relatedQueries"
+        }])
+      }, function(data) {
+        console.log(ko.mapping.toJSON(data));
+      });
+</pre>
+
 # Testing
 
 ## The short story