Browse Source

HUE-6560 [metastore] Add proper timestamp to the action tasks

Romain Rigaux 8 years ago
parent
commit
7c056e6

+ 5 - 0
apps/metastore/src/metastore/templates/metastore.mako

@@ -365,6 +365,7 @@ ${ components.menubar(is_embeddable) }
       % if is_embeddable:
         <form action="/metastore/databases/drop" data-bind="submit: dropAndWatch" method="POST">
           <input type="hidden" name="is_embeddable" value="true"/>
+          <input type="hidden" name="start_time" value=""/>
       % else:
         <form id="dropDatabaseForm" action="/metastore/databases/drop" method="POST">
       % endif
@@ -548,6 +549,7 @@ ${ components.menubar(is_embeddable) }
       % if is_embeddable:
         <form data-bind="attr: { 'action': '/metastore/tables/drop/' + name }, submit: dropAndWatch" method="POST">
           <input type="hidden" name="is_embeddable" value="true"/>
+          <input type="hidden" name="start_time" value=""/>
       % else:
         <form data-bind="attr: { 'action': '/metastore/tables/drop/' + name }" method="POST">
       % endif
@@ -780,6 +782,7 @@ ${ components.menubar(is_embeddable) }
       <form data-bind="attr: { 'action': '/metastore/table/' + $parent.database.name + '/' + $parent.name + '/partitions/drop' }, submit: dropAndWatch" method="POST">
         <input type="hidden" name="is_embeddable" value="true"/>
         <input type="hidden" name="format" value="json"/>
+        <input type="hidden" name="start_time" value=""/>
     % else:
       <form data-bind="attr: { 'action': '/metastore/table/' + $parent.database.name + '/' + $parent.name + '/partitions/drop' }" method="POST">
     % endif
@@ -1194,6 +1197,7 @@ ${ components.menubar(is_embeddable) }
     % if is_embeddable:
     <form data-bind="submit: dropAndWatch" method="POST">
       <input type="hidden" name="is_embeddable" value="true"/>
+      <input type="hidden" name="start_time" value=""/>
     % else:
     <form method="POST">
     % endif
@@ -1220,6 +1224,7 @@ ${ components.menubar(is_embeddable) }
 <script type="text/javascript">
 
   function dropAndWatch(formElement) {
+    $(formElement).find('input[name=start_time]').val(ko.mapping.toJSON(new Date().getTime()));
     $(formElement).ajaxSubmit({
       dataType: 'json',
       success: function(resp) {

+ 2 - 0
apps/metastore/src/metastore/templates/popups/load_data.mako

@@ -27,6 +27,7 @@ from django.utils.translation import ugettext as _
     </div>
     <div class="modal-body">
         <input id="load_data_is_embeddable" type="hidden" name="is_embeddable" value="false">
+        <input type="hidden" name="start_time" value=""/>
 
         <div class="control-group">
             ${comps.bootstrapLabel(load_form["path"])}
@@ -133,6 +134,7 @@ from django.utils.translation import ugettext as _
     $("#load-data-submit-btn").click(function (e) {
       if (IS_HUE_4) {
         $("#load_data_is_embeddable").val("true");
+        $("#load-data-form").find('input[name=start_time]').val(ko.mapping.toJSON(new Date().getTime()));
       }
       $.post("${ url('metastore:load_table', database=database, table=table.name) }",
         $("#load-data-form").serialize(),

+ 13 - 5
apps/metastore/src/metastore/views.py

@@ -100,6 +100,7 @@ def drop_database(request):
       design = SavedQuery.create_empty(app_name='beeswax', owner=request.user, data=hql_query('').dumps())
 
       if request.POST.get('is_embeddable'):
+        last_executed = json.loads(request.POST.get('start_time'), '-1')
         sql = db.drop_databases(databases, design, generate_ddl_only=True)
         job = make_notebook(
             name=_('Drop database %s') % ', '.join(databases)[:100],
@@ -108,7 +109,8 @@ def drop_database(request):
             status='ready',
             database=None,
             on_success_url='assist.db.refresh',
-            is_task=True
+            is_task=True,
+            last_executed=last_executed
         )
         return JsonResponse(job.execute(request))
       else:
@@ -386,6 +388,7 @@ def drop_table(request, database):
       skip_trash = request.POST.get('skip_trash') == 'on'
 
       if request.POST.get('is_embeddable'):
+        last_executed = json.loads(request.POST.get('start_time'), '-1')
         sql = db.drop_tables(database, tables_objects, design=None, skip_trash=skip_trash, generate_ddl_only=True)
         job = make_notebook(
             name=_('Drop table %s') % ', '.join([table.name for table in tables_objects])[:100],
@@ -394,7 +397,8 @@ def drop_table(request, database):
             status='ready',
             database=database,
             on_success_url='assist.db.refresh',
-            is_task=True
+            is_task=True,
+            last_executed=last_executed
         )
         return JsonResponse(job.execute(request))
       else:
@@ -446,14 +450,16 @@ def load_table(request, database, table):
         }
         query_history = db.load_data(database, table.name, form_data, design, generate_ddl_only=generate_ddl_only)
         if generate_ddl_only:
+          last_executed = json.loads(request.POST.get('start_time'), '-1')
           job = make_notebook(
-            name='Execute and watch',
+            name=_('Load data in %s.%s') % (database, table.name),
             editor_type=_get_servername(db),
             statement=query_history.strip(),
             status='ready',
             database=database,
             on_success_url='assist.db.refresh',
-            is_task=True
+            is_task=True,
+            last_executed=last_executed
           )
           response = job.execute(request)
         else:
@@ -599,6 +605,7 @@ def drop_partition(request, database, table):
     partition_specs = [spec for spec in partition_specs]
     try:
       if request.REQUEST.get("format", "html") == "json":
+        last_executed = json.loads(request.POST.get('start_time'), '-1')
         sql = db.drop_partitions(database, table, partition_specs, design=None, generate_ddl_only=True)
         job = make_notebook(
             name=_('Drop partition %s') % ', '.join(partition_specs)[:100],
@@ -607,7 +614,8 @@ def drop_partition(request, database, table):
             status='ready',
             database=None,
             on_success_url='assist.db.refresh',
-            is_task=True
+            is_task=True,
+            last_executed=last_executed
         )
         return JsonResponse(job.execute(request))
       else: