瀏覽代碼

HUE-3951 [solr] Cleaner user message when missing UPDATE privilege permission

Romain Rigaux 9 年之前
父節點
當前提交
4f31442
共有 2 個文件被更改,包括 23 次插入21 次删除
  1. 6 1
      apps/search/src/search/views.py
  2. 17 20
      desktop/libs/libsolr/src/libsolr/api.py

+ 6 - 1
apps/search/src/search/views.py

@@ -367,7 +367,12 @@ def update_document(request):
     else:
       result['status'] = 0
       result['message'] = _('Document has no modifications to change.')
-
+  except RestException, e:
+    try:
+      result['message'] = json.loads(e.message)['error']['msg']
+    except:
+      LOG.exception('failed to parse json response')
+      result['message'] = force_unicode(e)
   except Exception, e:
     result['message'] = force_unicode(e)
 

+ 17 - 20
desktop/libs/libsolr/src/libsolr/api.py

@@ -779,25 +779,22 @@ class SolrApi(object):
       raise PopupException(e, title=_('Error while accessing Solr'))
 
   def update(self, collection_or_core_name, data, content_type='csv', version=None):
-    try:
-      if content_type == 'csv':
-        content_type = 'application/csv'
-      elif content_type == 'json':
-        content_type = 'application/json'
-      else:
-        LOG.error("Could not update index for %s. Unsupported content type %s. Allowed content types: csv" % (collection_or_core_name, content_type))
-        return False
+    if content_type == 'csv':
+      content_type = 'application/csv'
+    elif content_type == 'json':
+      content_type = 'application/json'
+    else:
+      LOG.error("Could not update index for %s. Unsupported content type %s. Allowed content types: csv" % (collection_or_core_name, content_type))
+      return False
 
-      params = self._get_params() + (
-          ('wt', 'json'),
-          ('overwrite', 'true'),
+    params = self._get_params() + (
+        ('wt', 'json'),
+        ('overwrite', 'true'),
+    )
+    if version is not None:
+      params += (
+        ('_version_', version),
+        ('versions', 'true')
       )
-      if version is not None:
-        params += (
-          ('_version_', version),
-          ('versions', 'true')
-        )
-      self._root.post('%s/update' % collection_or_core_name, contenttype=content_type, params=params, data=data)
-      return True
-    except RestException, e:
-      raise PopupException(e, title=_('Error while accessing Solr'))
+    self._root.post('%s/update' % collection_or_core_name, contenttype=content_type, params=params, data=data)
+    return True