Pārlūkot izejas kodu

HUE-1185 [jobsub] Trash for designs

- Update trash manager to use a different set of idioms for retrieving
trashed and available workflows.
- Datatables and KO fixes.
- Reduce number of RPC calls made by templating system.
- Test cases for jobsub views.
- Re-enable jobsub JS test cases.
Abraham Elmahrek 12 gadi atpakaļ
vecāks
revīzija
3bbb9ec

+ 5 - 4
apps/jobsub/src/jobsub/templates/designs.mako

@@ -134,7 +134,7 @@ ${ commonheader(_('Job Designer'), "jobsub", user, "60px") | n,unicode }
           <th>${_('Type')}</th>
           <th>${_('Status')}</th>
           <th>${_('Last modified')}</th>
-          <th class="hide">${_('Trashed')}</th>
+          <th>${_('Trashed')}</th>
         </tr>
       </thead>
       <tbody id="designs" data-bind="template: {name: 'designTemplate', foreach: designs}">
@@ -163,7 +163,7 @@ ${ commonheader(_('Job Designer'), "jobsub", user, "60px") | n,unicode }
       <!-- /ko -->
     </td>
     <td data-bind="click: function(data, event) { window.location = '#edit-design/' + $index() }, text: new Date(last_modified() * 1000).format('%B %d, %Y %I:%M %p'), attr: { 'data-sort-value': last_modified() }"></td>
-    <td data-bind="visible: false, text: is_trashed"></td>
+    <td data-bind="text: is_trashed"></td>
   </tr>
 </script>
 
@@ -245,11 +245,12 @@ var designTableOptions = {
   "bLengthChange": false,
   "sDom": "<'row'r>t<'row'<'span8'i><''p>>",
   "bDestroy": true,
-  "aoColumnsDefs": [
+  "aoColumnDefs": [
     { "bSortable": false, "aTargets": [ 0 ] },
     { "sSortDataType": "dom-sort-value", "sType": "numeric", "aTargets": [6] },
+    { "bVisible": false, "aTargets": [7] }
   ],
-  "aaSorting": [[ 5, "desc" ]],
+  "aaSorting": [[ 6, "desc" ]],
   "fnPreDrawCallback": function( oSettings ) {
     if (designs.allSelected()) {
       designs.selectAll();

+ 10 - 10
apps/jobsub/src/jobsub/views.py

@@ -133,7 +133,7 @@ def delete_design(request, design_id):
   try:
     workflow = _get_design(design_id)
     _check_permission(request, workflow.owner.username,
-                      _("Access denied: delete workflow %(id)s.") % {'id': design_id},
+                      _("Access denied: delete design %(id)s.") % {'id': design_id},
                       allow_root=True)
     if skip_trash:
       Workflow.objects.destroy(workflow, request.fs)
@@ -141,13 +141,11 @@ def delete_design(request, design_id):
       workflow.delete(skip_trash=False)
 
   except Workflow.DoesNotExist:
-    if skip_trash:
-      LOG.error("Trying to delete non-existent workflow (id %s)" % design_id)
-    else:
-      LOG.error("Trying to trash non-existent workflow (id %s)" % design_id)
-    raise StructuredException(code="NOT_FOUND", message=_('Could not find design.'), error_code=404)
+    raise StructuredException(code="NOT_FOUND", message=_('Could not find design %s.') % design_id, error_code=404)
 
-  return render_json({})
+  return render_json({
+    status: 0
+  })
 
 
 def restore_design(request, design_id):
@@ -157,15 +155,17 @@ def restore_design(request, design_id):
   try:
     workflow = _get_design(design_id)
     _check_permission(request, workflow.owner.username,
-                      _("Access denied: delete workflow %(id)s.") % {'id': design_id},
+                      _("Access denied: delete design %(id)s.") % {'id': design_id},
                       allow_root=True)
     workflow.restore()
 
   except Workflow.DoesNotExist:
     LOG.error("Trying to restore non-existent workflow (id %s)" % (design_id,))
-    raise StructuredException(code="NOT_FOUND", message=_('Could not find design.'), error_code=404)
+    raise StructuredException(code="NOT_FOUND", message=_('Could not find design %s.') % design_id, error_code=404)
 
-  return render_json({})
+  return render_json({
+    status: 0
+  })
 
 
 def get_design(request, design_id):

+ 1 - 1
apps/jobsub/static/jasmine/jobsubSpec.js

@@ -4,7 +4,7 @@ describe("Designs", function(){
 
   function getSampleDesign(id, name, node_type, is_shared, is_trashed, is_editable){
     return {
-      "is_shared": is_shared, 
+      "is_shared": is_shared,
       "node_type": node_type, 
       "last_modified": 1366678126.0, 
       "name": name,