فهرست منبع

HUE-1443 [hbase] Upload data to a cell

Kevin Wang 12 سال پیش
والد
کامیت
bd73e46eaf
4فایلهای تغییر یافته به همراه19 افزوده شده و 0 حذف شده
  1. 5 0
      apps/hbase/src/hbase/api.py
  2. 1 0
      apps/hbase/src/hbase/templates/app.mako
  3. 2 0
      apps/hbase/src/hbase/views.py
  4. 11 0
      apps/hbase/static/js/utils.js

+ 5 - 0
apps/hbase/src/hbase/api.py

@@ -149,6 +149,11 @@ class HbaseApi(object):
   def putColumn(self, cluster, tableName, row, column, value):
     return self.putRow(cluster, tableName, row, {column: value})
 
+  def putUpload(self, cluster, tableName, row, column, value):
+    client = self.connectCluster(cluster)
+    Mutation = get_thrift_type('Mutation')
+    return client.mutateRow(tableName, row, [Mutation(column=column, value=value.file.read(value.size))], None)
+
   def getRowQuerySet(self, cluster, tableName, columns, queries):
     client = self.connectCluster(cluster)
     aggregate_data = []

+ 1 - 0
apps/hbase/src/hbase/templates/app.mako

@@ -339,6 +339,7 @@ ${ commonheader(None, "hbase", user) | n,unicode }
       <div class="modal-footer">
         % if user.is_superuser:
           <button class="btn" data-dismiss="modal" aria-hidden="true">${_('Cancel')}</button>
+          <button id="file-upload-btn" class="btn fileChooserBtn" aria-hidden="true"><i class="icon-upload"></i> ${_('Upload')}</button>
           <input type="submit" class="btn btn-primary" value="${_('Save')}">
         % else:
           <button class="btn" data-dismiss="modal" aria-hidden="true">${_('OK')}</button>

+ 2 - 0
apps/hbase/src/hbase/views.py

@@ -57,6 +57,8 @@ def api_router(request, url): #on split, deserialize anything
         data[i] = deserialize(item) #sets local binding, needs to set in data
     return data
   url_params = [safe_json_load((arg, request.POST.get(arg[0:16], arg))[arg[0:15] == 'hbase-post-key-']) for arg in re.split(r'(?<!\\)/', url.strip('/'))] #deserialize later
+  if request.POST.get('dest', False):
+    url_params += [request.FILES.get(request.POST.get('dest'))]
   return api_dump(HbaseApi().query(*url_params))
 
 def api_dump(response):

+ 11 - 0
apps/hbase/static/js/utils.js

@@ -110,6 +110,17 @@ function launchModal(modal, data) {
           }
           app.focusModel(data.content);
       data.content.history.reload();
+
+      var path = '/hbase/api/putUpload/"' + app.cluster() + '"/"' + app.views.tabledata.name() + '"/"' + data.content.parent.row + '"/"' + data.content.name + '"';
+      var uploader = new qq.FileUploaderBasic({
+        button: document.getElementById("file-upload-btn"),
+        action: path,
+        fileFieldLabel: 'hbase_file',
+        multiple: false,
+        onComplete:function (id, fileName, response) {
+          data.content.reload();
+        }
+      });
       break;
   }
   element.modal('show');