فهرست منبع

HUE-5915 [importer] Friendler error message when trying to create table from a directory

Romain Rigaux 8 سال پیش
والد
کامیت
a5a30fe
2فایلهای تغییر یافته به همراه13 افزوده شده و 3 حذف شده
  1. 5 0
      desktop/libs/indexer/src/indexer/api3.py
  2. 8 3
      desktop/libs/indexer/src/indexer/templates/importer.mako

+ 5 - 0
desktop/libs/indexer/src/indexer/api3.py

@@ -66,11 +66,15 @@ def _convert_format(format_dict, inverse=False):
       format_dict[field] = _escape_white_space_characters(format_dict[field], inverse)
 
 
+@api_error_handler
 def guess_format(request):
   file_format = json.loads(request.POST.get('fileFormat', '{}'))
 
   if file_format['inputFormat'] == 'file':
     indexer = Indexer(request.user, request.fs)
+    if not request.fs.isfile(file_format["path"]):
+      raise PopupException(_('Path %(path)s is not a file') % file_format)
+
     stream = request.fs.open(file_format["path"])
     format_ = indexer.guess_format({
       "file": {
@@ -93,6 +97,7 @@ def guess_format(request):
   elif file_format['inputFormat'] == 'query':
     format_ = {"quoteChar": "\"", "recordSeparator": "\\n", "type": "csv", "hasHeader": False, "fieldSeparator": "\u0001"}
 
+  format_['status'] = 0
   return JsonResponse(format_)
 
 

+ 8 - 3
desktop/libs/indexer/src/indexer/templates/importer.mako

@@ -1481,15 +1481,20 @@ ${ assist.assistPanel() }
         $.post("${ url('indexer:guess_format') }", {
           "fileFormat": ko.mapping.toJSON(self.source)
         }, function (resp) {
-          var newFormat = ko.mapping.fromJS(new FileType(resp['type'], resp));
-          self.source.format(newFormat);
-          self.guessFieldTypes();
+          if (resp.status != 0) {
+            $(document).trigger("error", resp.message);
+          } else {
+            var newFormat = ko.mapping.fromJS(new FileType(resp['type'], resp));
+            self.source.format(newFormat);
+            self.guessFieldTypes();
+          }
 
           self.isGuessingFormat(false);
           viewModel.wizardEnabled(true);
         }).fail(function (xhr, textStatus, errorThrown) {
           $(document).trigger("error", xhr.responseText);
           viewModel.isLoading(false);
+          self.isGuessingFormat(false);
         });
       };