Prechádzať zdrojové kódy

[oozie] Cannot delete a coordinator

Romain Rigaux 13 rokov pred
rodič
commit
cc814c5

+ 18 - 18
apps/oozie/src/oozie/templates/editor/list_coordinators.mako

@@ -51,7 +51,7 @@ ${ layout.menubar(section='coordinators') }
 
   <br/>
 
-  <table id="workflowTable" class="table datatables">
+  <table id="coordinatorTable" class="table datatables">
     <thead>
       <tr>
         <th></th>
@@ -65,36 +65,36 @@ ${ layout.menubar(section='coordinators') }
       </tr>
     </thead>
     <tbody>
-      %for workflow in workflows:
+      %for coordinator in jobs:
         <tr class="action-row">
           <td class=".btn-large action-column" data-row-selector-exclude="true" style="background-color: white;">
             <input type="radio" name="action" data-row-selector-exclude="true"
-              % if currentuser.username == workflow.owner.username:
-                  data-param-url="${ url('oozie:workflow_parameters', workflow=workflow.id) }"
-                  data-delete-url="${ url('oozie:delete_workflow', workflow=workflow.id) }"
+              % if currentuser.username == coordinator.owner.username:
+                  data-param-url="${ url('oozie:workflow_parameters', workflow=coordinator.id) }"
+                  data-delete-url="${ url('oozie:delete_coordinator', coordinator=coordinator.id) }"
               % endif
-                  data-clone-url="${ url('oozie:clone_workflow', workflow=workflow.id) }"
-                  data-bundle-url="${ url('oozie:create_coordinator', workflow=workflow.id) }"
-                  data-submit-url="${ url('oozie:submit_coordinator', coordinator=workflow.id) }"
+                  data-clone-url="${ url('oozie:clone_workflow', workflow=coordinator.id) }"
+                  data-bundle-url="${ url('oozie:create_coordinator') }"
+                  data-submit-url="${ url('oozie:submit_coordinator', coordinator=coordinator.id) }"
               >
             </input>
-            %if currentuser.username == workflow.owner.username:
-              <a href="${ url('oozie:edit_coordinator', coordinator=workflow.id) }" data-row-selector="true"/>
+            %if currentuser.username == coordinator.owner.username:
+              <a href="${ url('oozie:edit_coordinator', coordinator=coordinator.id) }" data-row-selector="true"/>
             %endif%
           </td>
-          <td>${ workflow.name }</td>
-          <td>${ workflow.description }</td>
+          <td>${ coordinator.name }</td>
+          <td>${ coordinator.description }</td>
           <td>
-            % if workflow.workflow is not None:
-              ${ workflow.workflow }
+            % if coordinator.workflow is not None:
+              ${ coordinator.workflow }
             % endif
           </td>
-          <td>${ workflow.text_frequency }</td>
+          <td>${ coordinator.text_frequency }</td>
           <td>
             <span class="label label-info">${ _('production') }</span>
           </td>
-          <td nowrap="nowrap">${ utils.format_date(workflow.last_modified) }</td>
-          <td>${ workflow.owner.username }</td>
+          <td nowrap="nowrap">${ utils.format_date(coordinator.last_modified) }</td>
+          <td>${ coordinator.owner.username }</td>
         </tr>
       %endfor
     </tbody>
@@ -253,7 +253,7 @@ ${ layout.menubar(section='coordinators') }
         $("#submitWf").modal("hide");
     });
 
-    var oTable = $('#workflowTable').dataTable( {
+    var oTable = $('#coordinatorTable').dataTable( {
       "sPaginationType": "bootstrap",
       'iDisplayLength': 50,
       "bLengthChange": false,

+ 1 - 1
apps/oozie/src/oozie/templates/editor/list_workflows.mako

@@ -66,7 +66,7 @@ ${ layout.menubar(section='workflows') }
       </tr>
     </thead>
     <tbody>
-      %for workflow in workflows:
+      %for workflow in jobs:
         <tr class="action-row">
           <td class=".btn-large action-column" data-row-selector-exclude="true" style="background-color: white;">
             <input type="radio" name="action" data-row-selector-exclude="true"

+ 9 - 10
apps/oozie/src/oozie/tests.py

@@ -451,16 +451,15 @@ class TestEditor:
       finish()
 
     # Delete
-    # TODO view!
-#    finish = SHARE_JOBS.set_for_testing(False)
-#    try:
-#      response = client_not_me.post(reverse('oozie:delete_coordinator', args=[coord.id]))
-#      assert_true('Permission denied' in response.content, response.content)
-#    finally:
-#      finish()
-#
-#    response = self.c.post(reverse('oozie:delete_coordinator', args=[coord.id]), follow=True)
-#    assert_equal(200, response.status_code)
+    finish = SHARE_JOBS.set_for_testing(False)
+    try:
+      response = client_not_me.post(reverse('oozie:delete_coordinator', args=[coord.id]))
+      assert_true('Permission denied' in response.content, response.content)
+    finally:
+      finish()
+
+    response = self.c.post(reverse('oozie:delete_coordinator', args=[coord.id]), follow=True)
+    assert_equal(200, response.status_code)
 
 
   def test_coordinator_gen_xml(self):

+ 1 - 0
apps/oozie/src/oozie/urls.py

@@ -42,6 +42,7 @@ urlpatterns = patterns(
   url(r'^list_coordinator/$', 'list_workflows', name='list_coordinator', kwargs={'job_type': 'coordinators'}),
   url(r'^create_coordinator/(?P<workflow>[-\w]+)?$', 'create_coordinator', name='create_coordinator'),
   url(r'^edit_coordinator/(?P<coordinator>[-\w]+)$', 'edit_coordinator', name='edit_coordinator'),
+  url(r'^delete_coordinator/(?P<coordinator>\d+)$', 'delete_coordinator', name='delete_coordinator'),
   url(r'^create_coordinator_dataset/(?P<coordinator>[-\w]+)$', 'create_coordinator_dataset', name='create_coordinator_dataset'),
   url(r'^create_coordinator_data/(?P<coordinator>[-\w]+)/(?P<data_type>(input|output))$', 'create_coordinator_data', name='create_coordinator_data'),
   url(r'^submit_coordinator/(?P<coordinator>\d+)$', 'submit_coordinator', name='submit_coordinator'),

+ 21 - 12
apps/oozie/src/oozie/views/editor.py

@@ -74,7 +74,7 @@ def can_access_job(request, job_id):
       raise PopupException(message)
 
   except Job.DoesNotExist:
-    raise PopupException(_('job %(id)s not found') % {'id': job_id})
+    raise PopupException(_('job %(id)s not exist') % {'id': job_id})
 
 
 def can_modify_job(request, job):
@@ -184,7 +184,7 @@ def list_workflows(request, job_type='workflow'):
   data = data.order_by('-last_modified')
 
   return render(template, request, {
-    'workflows': list(data),
+    'jobs': list(data),
     'currentuser': request.user,
     'show_install_examples': show_install_examples,
   })
@@ -249,16 +249,12 @@ def delete_workflow(request, workflow):
   if request.method != 'POST':
     raise PopupException(_('A POST request is required.'))
 
-  try:
-    workflow.coordinator_set.update(workflow=None) # In Django 1.3 could do ON DELETE set NULL
-    workflow.save()
-    workflow.delete()
-    Submission(workflow, request.fs, {}).remove_deployment_dir()
-  except Workflow.DoesNotExist:
-    LOG.error("Trying to delete non-existent workflow (id %s)" % (workflow,))
-    raise PopupException(_('Workflow not found'))
-
-  # TODO notification
+  workflow.coordinator_set.update(workflow=None) # In Django 1.3 could do ON DELETE set NULL
+  workflow.save()
+  workflow.delete()
+  Submission(workflow, request.fs, {}).remove_deployment_dir()
+  request.info(_('Workflow deleted!'))
+
   return redirect(reverse('oozie:list_workflows'))
 
 
@@ -463,6 +459,19 @@ def create_coordinator(request, workflow=None):
   })
 
 
+@check_job_access_permission
+@check_job_modification_permission()
+def delete_coordinator(request, coordinator):
+  if request.method != 'POST':
+    raise PopupException(_('A POST request is required.'))
+
+  coordinator.delete()
+  Submission(coordinator, request.fs, {}).remove_deployment_dir()
+  request.info(_('Coordinator deleted!'))
+  
+  return redirect(reverse('oozie:list_workflows'))
+
+
 @check_job_access_permission
 @check_job_modification_permission(True)
 def edit_coordinator(request, coordinator):