示例#1
0
def new_action(request, workflow, node_type, parent_action_id):
  ActionForm = design_form_by_type(node_type)

  if request.method == 'POST':
    action_form = ActionForm(request.POST)

    if action_form.is_valid():
      action = action_form.save(commit=False)
      action.node_type = node_type
      action.workflow = workflow
      action.save()

      workflow.add_action(action, parent_action_id)

      return redirect(reverse('oozie:edit_workflow', kwargs={'workflow': workflow.id}))
  else:
    action_form = ActionForm()

  return render('editor/edit_workflow_action.mako', request, {
      'workflow': workflow,
      'job_properties': 'job_properties' in action_form.fields and extract_field_data(action_form['job_properties']) or '[]',
      'files': 'files' in action_form.fields and extract_field_data(action_form['files']) or '[]',
      'archives': 'archives' in action_form.fields and extract_field_data(action_form['archives']) or '[]',
      'params': 'params' in action_form.fields and extract_field_data(action_form['params']) or '[]',
      'prepares': 'prepares' in action_form.fields and extract_field_data(action_form['prepares']) or '[]',
      'action_form': action_form,
      'node_type': node_type,
      'properties_hint': _STD_PROPERTIES_JSON,
      'form_url': reverse('oozie:new_action', kwargs={'workflow': workflow.id,
                                                      'node_type': node_type,
                                                      'parent_action_id': parent_action_id}),
      'can_edit_action': True,
    })
示例#2
0
文件: views.py 项目: jiesicheng/hue
def _render_design_edit(request, form, action_type, properties_hint):
  return render('edit_design.mako', request, {
    'form': form,
    'action': request.path,
    'action_type': action_type,
    'properties': extract_field_data(form.action['job_properties']),
    'files': extract_field_data(form.action['files']),
    'archives': extract_field_data(form.action['archives']),
    'properties_hint': properties_hint,
  })
示例#3
0
def new_action(request, workflow, node_type, parent_action_id):
    ActionForm = design_form_by_type(node_type)

    if request.method == 'POST':
        action_form = ActionForm(request.POST)

        if action_form.is_valid():
            action = action_form.save(commit=False)
            action.node_type = node_type
            action.workflow = workflow
            action.save()

            workflow.add_action(action, parent_action_id)

            return redirect(
                reverse('oozie:edit_workflow',
                        kwargs={'workflow': workflow.id}))
    else:
        action_form = ActionForm()

    return render(
        'editor/edit_workflow_action.mako', request, {
            'workflow':
            workflow,
            'job_properties':
            'job_properties' in action_form.fields
            and extract_field_data(action_form['job_properties']) or '[]',
            'files':
            'files' in action_form.fields
            and extract_field_data(action_form['files']) or '[]',
            'archives':
            'archives' in action_form.fields
            and extract_field_data(action_form['archives']) or '[]',
            'params':
            'params' in action_form.fields
            and extract_field_data(action_form['params']) or '[]',
            'prepares':
            'prepares' in action_form.fields
            and extract_field_data(action_form['prepares']) or '[]',
            'action_form':
            action_form,
            'node_type':
            node_type,
            'properties_hint':
            _STD_PROPERTIES_JSON,
            'form_url':
            reverse('oozie:new_action',
                    kwargs={
                        'workflow': workflow.id,
                        'node_type': node_type,
                        'parent_action_id': parent_action_id
                    }),
            'can_edit_action':
            True,
        })
示例#4
0
def _render_design_edit(request, form, action_type, properties_hint):
    return render(
        'edit_design.mako', request, {
            'form': form,
            'action': request.path,
            'action_type': action_type,
            'properties': extract_field_data(form.action['job_properties']),
            'files': extract_field_data(form.action['files']),
            'archives': extract_field_data(form.action['archives']),
            'properties_hint': properties_hint,
        })
示例#5
0
文件: views.py 项目: kthguru/hue
def _render_design_edit(request, form, action_type, properties_hint):
    return render(
        "edit_design.mako",
        request,
        {
            "form": form,
            "action": request.path,
            "action_type": action_type,
            "properties": extract_field_data(form.action["job_properties"]),
            "files": extract_field_data(form.action["files"]),
            "archives": extract_field_data(form.action["archives"]),
            "properties_hint": properties_hint,
        },
    )
示例#6
0
文件: editor.py 项目: romainr/hue
def edit_workflow(request, workflow):
    history = History.objects.filter(submitter=request.user, job=workflow).order_by("-submission_date")
    workflow_form = WorkflowForm(instance=workflow)
    user_can_access_job = workflow.is_accessible(request.user)
    user_can_edit_job = workflow.is_editable(request.user)

    return render(
        "editor/edit_workflow.mako",
        request,
        {
            "workflow_form": workflow_form,
            "workflow": workflow,
            "history": history,
            "user_can_access_job": user_can_access_job,
            "user_can_edit_job": user_can_edit_job,
            "job_properties": extract_field_data(workflow_form["job_properties"]),
            "link_form": LinkForm(),
            "default_link_form": DefaultLinkForm(action=workflow.start),
            "node_form": NodeForm(),
            "action_forms": [
                (node_type, design_form_by_type(node_type, request.user, workflow)())
                for node_type in ACTION_TYPES.iterkeys()
            ],
        },
    )
示例#7
0
文件: editor.py 项目: agibsonccc/hue
def edit_workflow(request, workflow):
    history = History.objects.filter(submitter=request.user,
                                     job=workflow).order_by('-submission_date')
    workflow_form = WorkflowForm(instance=workflow)
    user_can_access_job = workflow.is_accessible(request.user)
    user_can_edit_job = workflow.is_editable(request.user)

    return render(
        'editor/edit_workflow.mako', request, {
            'workflow_form':
            workflow_form,
            'workflow':
            workflow,
            'history':
            history,
            'user_can_access_job':
            user_can_access_job,
            'user_can_edit_job':
            user_can_edit_job,
            'job_properties':
            extract_field_data(workflow_form['job_properties']),
            'link_form':
            LinkForm(),
            'default_link_form':
            DefaultLinkForm(action=workflow.start),
            'node_form':
            NodeForm(),
            'action_forms':
            [(node_type, design_form_by_type(node_type, request.user,
                                             workflow)())
             for node_type in ACTION_TYPES.iterkeys()]
        })
示例#8
0
def edit_action(request, action):
    ActionForm = design_form_by_type(action.node_type)

    if request.method == 'POST' and Job.objects.can_edit_or_exception(
            request, action.workflow):
        action_form = ActionForm(request.POST, instance=action)
        if action_form.is_valid():
            action = action_form.save()
            return redirect(
                reverse('oozie:edit_workflow',
                        kwargs={'workflow': action.workflow.id}))
    else:
        action_form = ActionForm(instance=action)

    return render(
        'editor/edit_workflow_action.mako', request, {
            'workflow':
            action.workflow,
            'job_properties':
            'job_properties' in action_form.fields
            and extract_field_data(action_form['job_properties']) or '[]',
            'files':
            'files' in action_form.fields
            and extract_field_data(action_form['files']) or '[]',
            'archives':
            'archives' in action_form.fields
            and extract_field_data(action_form['archives']) or '[]',
            'params':
            'params' in action_form.fields
            and extract_field_data(action_form['params']) or '[]',
            'prepares':
            'prepares' in action_form.fields
            and extract_field_data(action_form['prepares']) or '[]',
            'action_form':
            action_form,
            'node_type':
            action.node_type,
            'properties_hint':
            _STD_PROPERTIES_JSON,
            'form_url':
            reverse('oozie:edit_action', kwargs={'action': action.id}),
            'can_edit_action':
            action.workflow.is_editable(request.user)
        })
示例#9
0
文件: editor.py 项目: icheckmate/hue
def edit_coordinator(request, coordinator):
  history = History.objects.filter(submitter=request.user, job=coordinator).order_by('-submission_date')

  DatasetFormSet = inlineformset_factory(Coordinator, Dataset, form=DatasetForm, max_num=0, can_order=False, can_delete=True)
  DataInputFormSet = inlineformset_factory(Coordinator, DataInput, form=DataInputSetForm, max_num=0, can_order=False, can_delete=True)
  DataOutputFormSet = inlineformset_factory(Coordinator, DataOutput, form=DataOutputSetForm, max_num=0, can_order=False, can_delete=True)

  dataset = Dataset(coordinator=coordinator)
  dataset_form = DatasetForm(instance=dataset, prefix='create')

  NewDataInputFormSet = inlineformset_factory(Coordinator, DataInput, form=DataInputForm, extra=0, can_order=False, can_delete=False)
  NewDataInputFormSet.form = staticmethod(curry(DataInputForm, coordinator=coordinator))
  NewDataOutputFormSet = inlineformset_factory(Coordinator, DataOutput, form=DataOutputForm, extra=0, can_order=False, can_delete=False)
  NewDataOutputFormSet.form = staticmethod(curry(DataOutputForm, coordinator=coordinator))

  if request.method == 'POST':
    coordinator_form = CoordinatorForm(request.POST, instance=coordinator, user=request.user)
    dataset_formset = DatasetFormSet(request.POST, request.FILES, instance=coordinator)
    data_input_formset = DataInputFormSet(request.POST, request.FILES, instance=coordinator)
    data_output_formset = DataOutputFormSet(request.POST, request.FILES, instance=coordinator)
    new_data_input_formset = NewDataInputFormSet(request.POST, request.FILES, instance=coordinator, prefix='input')
    new_data_output_formset = NewDataOutputFormSet(request.POST, request.FILES, instance=coordinator, prefix='output')

    if coordinator_form.is_valid() and dataset_formset.is_valid() and data_input_formset.is_valid() and data_output_formset.is_valid() \
        and new_data_input_formset.is_valid() and new_data_output_formset.is_valid():
      coordinator = coordinator_form.save()
      dataset_formset.save()
      data_input_formset.save()
      data_output_formset.save()
      new_data_input_formset.save()
      new_data_output_formset.save()

      request.info(_('Coordinator saved.'))
      return redirect(reverse('oozie:edit_coordinator', kwargs={'coordinator': coordinator.id}))
  else:
    coordinator_form = CoordinatorForm(instance=coordinator, user=request.user)
    dataset_formset = DatasetFormSet(instance=coordinator)
    data_input_formset = DataInputFormSet(instance=coordinator)
    data_output_formset = DataOutputFormSet(instance=coordinator)
    new_data_input_formset = NewDataInputFormSet(queryset=DataInput.objects.none(), instance=coordinator, prefix='input')
    new_data_output_formset = NewDataOutputFormSet(queryset=DataOutput.objects.none(), instance=coordinator, prefix='output')

  return render('editor/edit_coordinator.mako', request, {
    'coordinator': coordinator,
    'coordinator_form': coordinator_form,
    'dataset_formset': dataset_formset,
    'data_input_formset': data_input_formset,
    'data_output_formset': data_output_formset,
    'dataset': dataset,
    'dataset_form': dataset_form,
    'new_data_input_formset': new_data_input_formset,
    'new_data_output_formset': new_data_output_formset,
    'history': history,
    'parameters': extract_field_data(coordinator_form['parameters'])
  })
示例#10
0
def edit_action(request, action):
  ActionForm = design_form_by_type(action.node_type)

  if request.method == 'POST' and Job.objects.can_edit_or_exception(request, action.workflow):
    action_form = ActionForm(request.POST, instance=action)
    if action_form.is_valid():
      action = action_form.save()
      return redirect(reverse('oozie:edit_workflow', kwargs={'workflow': action.workflow.id}))
  else:
    action_form = ActionForm(instance=action)

  return render('editor/edit_workflow_action.mako', request, {
    'workflow': action.workflow,
    'job_properties': 'job_properties' in action_form.fields and extract_field_data(action_form['job_properties']) or '[]',
    'files': 'files' in action_form.fields and extract_field_data(action_form['files']) or '[]',
    'archives': 'archives' in action_form.fields and extract_field_data(action_form['archives']) or '[]',
    'params': 'params' in action_form.fields and extract_field_data(action_form['params']) or '[]',
    'prepares': 'prepares' in action_form.fields and extract_field_data(action_form['prepares']) or '[]',
    'action_form': action_form,
    'node_type': action.node_type,
    'properties_hint': _STD_PROPERTIES_JSON,
    'form_url': reverse('oozie:edit_action', kwargs={'action': action.id}),
    'can_edit_action': action.workflow.is_editable(request.user)
  })
示例#11
0
文件: editor.py 项目: zwqjsj0404/hue
def edit_workflow(request, workflow):
  history = History.objects.filter(submitter=request.user, job=workflow).order_by('-submission_date')
  workflow_form = WorkflowForm(instance=workflow)
  user_can_edit_job = workflow.is_editable(request.user)

  return render('editor/edit_workflow.mako', request, {
    'workflow_form': workflow_form,
    'workflow': workflow,
    'history': history,
    'user_can_edit_job': user_can_edit_job,
    'job_properties': extract_field_data(workflow_form['job_properties']),
    'link_form': LinkForm(),
    'default_link_form': DefaultLinkForm(action=workflow.start),
    'action_forms': [(node_type, design_form_by_type(node_type, request.user, workflow)())
                     for node_type in ACTION_TYPES.iterkeys()]
  })
示例#12
0
def edit_workflow(request, workflow):
    history = History.objects.filter(submitter=request.user,
                                     job=workflow).order_by('-submission_date')
    workflow_form = WorkflowForm(instance=workflow)
    user_can_access_job = workflow.can_read(request.user)
    user_can_edit_job = workflow.is_editable(request.user)
    oozie_api = get_oozie(request.user)
    credentials = Credentials()
    credentials.fetch(oozie_api)

    return render(
        'editor/edit_workflow.mako', request, {
            'oozie_api':
            oozie_api,
            'workflow_form':
            workflow_form,
            'workflow':
            workflow,
            'history':
            history,
            'user_can_access_job':
            user_can_access_job,
            'user_can_edit_job':
            user_can_edit_job,
            'job_properties':
            extract_field_data(workflow_form['job_properties']),
            'link_form':
            LinkForm(),
            'default_link_form':
            DefaultLinkForm(action=workflow.start),
            'node_form':
            NodeForm(),
            'action_forms':
            [(node_type, design_form_by_type(node_type, request.user,
                                             workflow)())
             for node_type in ACTION_TYPES.keys()],
            'credentials':
            json.dumps(list(credentials.credentials.keys()))
        })
示例#13
0
文件: editor.py 项目: Web5design/hue
def edit_workflow(request, workflow):
  history = History.objects.filter(submitter=request.user, job=workflow).order_by('-submission_date')
  workflow_form = WorkflowForm(instance=workflow)
  user_can_access_job = workflow.can_read(request.user)
  user_can_edit_job = workflow.is_editable(request.user)
  api = get_oozie(request.user)
  credentials = Credentials()
  credentials.fetch(api)

  return render('editor/edit_workflow.mako', request, {
    'workflow_form': workflow_form,
    'workflow': workflow,
    'history': history,
    'user_can_access_job': user_can_access_job,
    'user_can_edit_job': user_can_edit_job,
    'job_properties': extract_field_data(workflow_form['job_properties']),
    'link_form': LinkForm(),
    'default_link_form': DefaultLinkForm(action=workflow.start),
    'node_form': NodeForm(),
    'action_forms': [(node_type, design_form_by_type(node_type, request.user, workflow)())
                     for node_type in ACTION_TYPES.iterkeys()],
    'credentials': json.dumps(credentials.credentials.keys())
  })
示例#14
0
    if not user_can_edit_job:
        graph_options = {
            'template': 'editor/gen/workflow-graph-readonly.xml.mako'
        }

    graph = workflow.gen_graph(actions_formset.forms, **graph_options)

    return render(
        'editor/edit_workflow.mako', request, {
            'workflow_form': workflow_form,
            'workflow': workflow,
            'actions_formset': actions_formset,
            'graph': graph,
            'history': history,
            'user_can_edit_job': user_can_edit_job,
            'parameters': extract_field_data(workflow_form['parameters']),
            'job_properties': extract_field_data(
                workflow_form['job_properties'])
        })


@check_job_access_permission
@check_job_edition_permission()
def delete_workflow(request, workflow):
    if request.method != 'POST':
        raise PopupException(_('A POST request is required.'))

    Workflow.objects.destroy(workflow, request.fs)
    request.info(_('Workflow deleted!'))

    return redirect(reverse('oozie:list_workflows'))
示例#15
0
文件: editor.py 项目: fty650660/hue
def edit_coordinator(request, coordinator):
    history = History.objects.filter(submitter=request.user, job=coordinator).order_by("-submission_date")

    DatasetFormSet = inlineformset_factory(
        Coordinator, Dataset, form=DatasetForm, max_num=0, can_order=False, can_delete=True
    )
    DataInputFormSet = inlineformset_factory(
        Coordinator, DataInput, form=DataInputSetForm, max_num=0, can_order=False, can_delete=True
    )
    DataOutputFormSet = inlineformset_factory(
        Coordinator, DataOutput, form=DataOutputSetForm, max_num=0, can_order=False, can_delete=True
    )

    dataset = Dataset(coordinator=coordinator)
    dataset_form = DatasetForm(instance=dataset, prefix="create")

    NewDataInputFormSet = inlineformset_factory(
        Coordinator, DataInput, form=DataInputForm, extra=0, can_order=False, can_delete=False
    )
    NewDataInputFormSet.form = staticmethod(curry(DataInputForm, coordinator=coordinator))
    NewDataOutputFormSet = inlineformset_factory(
        Coordinator, DataOutput, form=DataOutputForm, extra=0, can_order=False, can_delete=False
    )
    NewDataOutputFormSet.form = staticmethod(curry(DataOutputForm, coordinator=coordinator))

    if request.method == "POST":
        coordinator_form = CoordinatorForm(request.POST, instance=coordinator, user=request.user)
        dataset_formset = DatasetFormSet(request.POST, request.FILES, instance=coordinator)
        data_input_formset = DataInputFormSet(request.POST, request.FILES, instance=coordinator)
        data_output_formset = DataOutputFormSet(request.POST, request.FILES, instance=coordinator)
        new_data_input_formset = NewDataInputFormSet(request.POST, request.FILES, instance=coordinator, prefix="input")
        new_data_output_formset = NewDataOutputFormSet(
            request.POST, request.FILES, instance=coordinator, prefix="output"
        )

        if (
            coordinator_form.is_valid()
            and dataset_formset.is_valid()
            and data_input_formset.is_valid()
            and data_output_formset.is_valid()
            and new_data_input_formset.is_valid()
            and new_data_output_formset.is_valid()
        ):
            coordinator = coordinator_form.save()
            dataset_formset.save()
            data_input_formset.save()
            data_output_formset.save()
            new_data_input_formset.save()
            new_data_output_formset.save()

            request.info(_("Coordinator saved!"))
            return redirect(reverse("oozie:edit_coordinator", kwargs={"coordinator": coordinator.id}))
    else:
        coordinator_form = CoordinatorForm(instance=coordinator, user=request.user)
        dataset_formset = DatasetFormSet(instance=coordinator)
        data_input_formset = DataInputFormSet(instance=coordinator)
        data_output_formset = DataOutputFormSet(instance=coordinator)
        new_data_input_formset = NewDataInputFormSet(
            queryset=DataInput.objects.none(), instance=coordinator, prefix="input"
        )
        new_data_output_formset = NewDataOutputFormSet(
            queryset=DataOutput.objects.none(), instance=coordinator, prefix="output"
        )

    return render(
        "editor/edit_coordinator.mako",
        request,
        {
            "coordinator": coordinator,
            "coordinator_form": coordinator_form,
            "dataset_formset": dataset_formset,
            "data_input_formset": data_input_formset,
            "data_output_formset": data_output_formset,
            "dataset_form": dataset_form,
            "new_data_input_formset": new_data_input_formset,
            "new_data_output_formset": new_data_output_formset,
            "history": history,
            "parameters": extract_field_data(coordinator_form["parameters"]),
        },
    )
示例#16
0
def edit_coordinator(request, coordinator):
    history = History.objects.filter(
        submitter=request.user, job=coordinator).order_by('-submission_date')

    DatasetFormSet = inlineformset_factory(Coordinator,
                                           Dataset,
                                           form=DatasetForm,
                                           max_num=0,
                                           can_order=False,
                                           can_delete=True)
    DataInputFormSet = inlineformset_factory(Coordinator,
                                             DataInput,
                                             form=DataInputSetForm,
                                             max_num=0,
                                             can_order=False,
                                             can_delete=True)
    DataOutputFormSet = inlineformset_factory(Coordinator,
                                              DataOutput,
                                              form=DataOutputSetForm,
                                              max_num=0,
                                              can_order=False,
                                              can_delete=True)

    dataset = Dataset(coordinator=coordinator)
    dataset_form = DatasetForm(instance=dataset, prefix='create')

    NewDataInputFormSet = inlineformset_factory(Coordinator,
                                                DataInput,
                                                form=DataInputForm,
                                                extra=0,
                                                can_order=False,
                                                can_delete=False)
    NewDataInputFormSet.form = staticmethod(
        curry(DataInputForm, coordinator=coordinator))
    NewDataOutputFormSet = inlineformset_factory(Coordinator,
                                                 DataOutput,
                                                 form=DataOutputForm,
                                                 extra=0,
                                                 can_order=False,
                                                 can_delete=False)
    NewDataOutputFormSet.form = staticmethod(
        curry(DataOutputForm, coordinator=coordinator))

    if request.method == 'POST':
        coordinator_form = CoordinatorForm(request.POST,
                                           instance=coordinator,
                                           user=request.user)
        dataset_formset = DatasetFormSet(request.POST,
                                         request.FILES,
                                         instance=coordinator)
        data_input_formset = DataInputFormSet(request.POST,
                                              request.FILES,
                                              instance=coordinator)
        data_output_formset = DataOutputFormSet(request.POST,
                                                request.FILES,
                                                instance=coordinator)
        new_data_input_formset = NewDataInputFormSet(request.POST,
                                                     request.FILES,
                                                     instance=coordinator,
                                                     prefix='input')
        new_data_output_formset = NewDataOutputFormSet(request.POST,
                                                       request.FILES,
                                                       instance=coordinator,
                                                       prefix='output')

        if coordinator_form.is_valid() and dataset_formset.is_valid() and data_input_formset.is_valid() and data_output_formset.is_valid() \
            and new_data_input_formset.is_valid() and new_data_output_formset.is_valid():
            coordinator = coordinator_form.save()
            dataset_formset.save()
            data_input_formset.save()
            data_output_formset.save()
            new_data_input_formset.save()
            new_data_output_formset.save()

            request.info(_('Coordinator saved.'))
            return redirect(
                reverse('oozie:edit_coordinator',
                        kwargs={'coordinator': coordinator.id}))
    else:
        coordinator_form = CoordinatorForm(instance=coordinator,
                                           user=request.user)
        dataset_formset = DatasetFormSet(instance=coordinator)
        data_input_formset = DataInputFormSet(instance=coordinator)
        data_output_formset = DataOutputFormSet(instance=coordinator)
        new_data_input_formset = NewDataInputFormSet(
            queryset=DataInput.objects.none(),
            instance=coordinator,
            prefix='input')
        new_data_output_formset = NewDataOutputFormSet(
            queryset=DataOutput.objects.none(),
            instance=coordinator,
            prefix='output')

    return render(
        'editor/edit_coordinator.mako', request, {
            'coordinator': coordinator,
            'coordinator_form': coordinator_form,
            'dataset_formset': dataset_formset,
            'data_input_formset': data_input_formset,
            'data_output_formset': data_output_formset,
            'dataset_form': dataset_form,
            'new_data_input_formset': new_data_input_formset,
            'new_data_output_formset': new_data_output_formset,
            'history': history,
            'parameters': extract_field_data(coordinator_form['parameters'])
        })
示例#17
0
  graph_options = {}
  user_can_edit_job = workflow.is_editable(request.user)
  if not user_can_edit_job:
    graph_options = {'template': 'editor/gen/workflow-graph-readonly.xml.mako'}

  graph = workflow.gen_graph(actions_formset.forms, **graph_options)

  return render('editor/edit_workflow.mako', request, {
    'workflow_form': workflow_form,
    'workflow': workflow,
    'actions_formset': actions_formset,
    'graph': graph,
    'history': history,
    'user_can_edit_job': user_can_edit_job,
    'parameters': extract_field_data(workflow_form['parameters']),
    'job_properties': extract_field_data(workflow_form['job_properties'])
  })


@check_job_access_permission
@check_job_edition_permission()
def delete_workflow(request, workflow):
  if request.method != 'POST':
    raise PopupException(_('A POST request is required.'))

  Workflow.objects.destroy(workflow, request.fs)
  request.info(_('Workflow deleted!'))

  return redirect(reverse('oozie:list_workflows'))