示例#1
0
文件: editor2.py 项目: travisle22/hue
def submit_single_action(request, doc_id, node_id):
    parent_doc = Document2.objects.get(id=doc_id)
    parent_wf = Workflow(document=parent_doc)
    workflow_data = parent_wf.create_single_action_workflow_data(node_id)
    _data = json.loads(workflow_data)

    # Create separate wf object for the submit node with new deployment_dir
    workflow = Workflow(data=workflow_data)
    workflow.set_workspace(request.user)

    workflow.check_workspace(request.fs, request.user)

    # The imported wf deployment directory might not neccessarily exist on first submission
    if not request.fs.exists(parent_wf.deployment_dir):
        request.fs.do_as_user(request.user.username, request.fs.mkdir,
                              parent_wf.deployment_dir)
    workflow.import_workspace(request.fs, parent_wf.deployment_dir,
                              request.user)
    workflow.document = parent_doc

    return _submit_workflow_helper(request,
                                   workflow,
                                   submit_action=reverse(
                                       'oozie:submit_single_action',
                                       kwargs={
                                           'doc_id': doc_id,
                                           'node_id': node_id
                                       }))
示例#2
0
文件: editor2.py 项目: cloudera/hue
def new_workflow(request):
  doc = None
  workflow = Workflow(user=request.user)
  workflow.set_workspace(request.user)
  workflow.check_workspace(request.fs, request.user)

  return _edit_workflow(request, doc, workflow)
示例#3
0
def new_workflow(request):
    doc = None
    workflow = Workflow(user=request.user)
    workflow.set_workspace(request.user)
    workflow.check_workspace(request.fs, request.user)

    return _edit_workflow(request, doc, workflow)
示例#4
0
def copy_workflow(request):
  if request.method != 'POST':
    raise PopupException(_('A POST request is required.'))

  jobs = json.loads(request.POST.get('selection'))

  for job in jobs:
    doc2 = Document2.objects.get(type='oozie-workflow2', id=job['id'])
    
    name = doc2.name + '-copy'
    copy_doc = doc2.doc.get().copy(name=name, owner=request.user)
  
    doc2.pk = None
    doc2.id = None
    doc2.uuid = str(uuid.uuid4())
    doc2.name = name
    doc2.owner = request.user    
    doc2.save()
  
    doc2.doc.all().delete()
    doc2.doc.add(copy_doc)
    
    workflow = Workflow(document=doc2)
    workflow.update_name(name)
    doc2.update_data({'workflow': workflow.get_data()['workflow']})
    doc2.save()

    workflow.set_workspace(request.user)
    workflow.check_workspace(request.fs, request.user)

  response = {}  
  request.info(_('Workflows copied.') if len(jobs) > 1 else _('Workflow copied.'))

  return JsonResponse(response)
示例#5
0
def submit_single_action(request, doc_id, node_id):
    parent_doc = Document2.objects.get(id=doc_id)
    workflow_data = Workflow(
        document=parent_doc).create_single_action_workflow_data(node_id)
    _data = json.loads(workflow_data)

    # Create separate wf object for the submit node with new deployment_dir
    workflow = Workflow(data=workflow_data)
    workflow.set_workspace(request.user)

    workflow.check_workspace(request.fs, request.user)
    workflow.document = wf_doc = Document2.objects.create(
        name=_data['workflow']['name'],
        type='oozie-workflow2',
        owner=parent_doc.owner,
        data=workflow_data)
    Document.objects.link(wf_doc,
                          owner=wf_doc.owner,
                          name=wf_doc.name,
                          description=wf_doc.description,
                          extra='workflow2')

    return _submit_workflow_helper(request,
                                   workflow,
                                   submit_action=reverse(
                                       'oozie:submit_single_action',
                                       kwargs={
                                           'doc_id': doc_id,
                                           'node_id': node_id
                                       }))
示例#6
0
def new_workflow(request):
  doc = None
  workflow = Workflow(user=request.user)
  workflow.set_workspace(request.user)

  try:
    workflow.check_workspace(request.fs, request.user)
  except Exception as e:
    raise PopupException(_('Could not create workflow workspace'), detail=e)

  return _edit_workflow(request, doc, workflow)
示例#7
0
文件: editor2.py 项目: cgvarela/hue
def submit_single_action(request, doc_id, node_id):
  parent_doc = Document2.objects.get(id=doc_id)
  workflow_data = Workflow(document=parent_doc).create_single_action_workflow_data(node_id)
  _data = json.loads(workflow_data)

  # Create separate wf object for the submit node with new deployment_dir
  workflow = Workflow(data=workflow_data)
  workflow.set_workspace(request.user)

  workflow.check_workspace(request.fs, request.user)
  workflow.document = wf_doc = Document2.objects.create(name=_data['workflow']['name'], type='oozie-workflow2', owner=parent_doc.owner, data=workflow_data)
  Document.objects.link(wf_doc, owner=wf_doc.owner, name=wf_doc.name, description=wf_doc.description, extra='workflow2')

  return _submit_workflow_helper(request, workflow, submit_action=reverse('oozie:submit_single_action', kwargs={'doc_id': doc_id, 'node_id': node_id}))
示例#8
0
def save_workflow(request):
    response = {'status': -1}

    workflow = json.loads(request.POST.get('workflow', '{}'))
    layout = json.loads(request.POST.get('layout', '{}'))

    if workflow.get('id'):
        workflow_doc = Document2.objects.get(id=workflow['id'])
    else:
        workflow_doc = Document2.objects.create(
            name=workflow['name'],
            uuid=workflow['uuid'],
            type='oozie-workflow2',
            owner=request.user,
            description=workflow['properties']['description'])
        Document.objects.link(workflow_doc,
                              owner=workflow_doc.owner,
                              name=workflow_doc.name,
                              description=workflow_doc.description,
                              extra='workflow2')

    subworkflows = [
        node['properties']['workflow'] for node in workflow['nodes']
        if node['type'] == 'subworkflow-widget'
    ]
    if subworkflows:
        dependencies = Document2.objects.filter(uuid__in=subworkflows)
        workflow_doc.dependencies = dependencies

    if workflow['properties'].get('imported'):  # Old workflow format
        workflow['properties']['imported'] = False
        response['url'] = reverse('oozie:edit_workflow') + '?workflow=' + str(
            workflow_doc.id)

    workflow_doc.update_data({'workflow': workflow})
    workflow_doc.update_data({'layout': layout})
    workflow_doc.name = workflow['name']
    workflow_doc.save()

    workflow_instance = Workflow(document=workflow_doc)
    workflow_instance.set_workspace(request.user)
    workflow_instance.check_workspace(request.fs, request.user)

    response['status'] = 0
    response['id'] = workflow_doc.id
    response['doc1_id'] = workflow_doc.doc.get().id
    response['message'] = _('Page saved !')

    return JsonResponse(response)
示例#9
0
def submit_single_action(request, doc_id, node_id):
  parent_doc = Document2.objects.get(id=doc_id)
  parent_wf = Workflow(document=parent_doc)
  workflow_data = parent_wf.create_single_action_workflow_data(node_id)
  _data = json.loads(workflow_data)

  # Create separate wf object for the submit node with new deployment_dir
  workflow = Workflow(data=workflow_data)
  workflow.set_workspace(request.user)

  workflow.check_workspace(request.fs, request.user)
  workflow.import_workspace(request.fs, parent_wf.deployment_dir, request.user)
  workflow.document = parent_doc

  return _submit_workflow_helper(request, workflow, submit_action=reverse('oozie:submit_single_action', kwargs={'doc_id': doc_id, 'node_id': node_id}))
示例#10
0
文件: editor2.py 项目: richardxin/hue
def submit_single_action(request, doc_id, node_id):
  parent_doc = Document2.objects.get(id=doc_id)
  parent_wf = Workflow(document=parent_doc)
  workflow_data = parent_wf.create_single_action_workflow_data(node_id)
  _data = json.loads(workflow_data)

  # Create separate wf object for the submit node with new deployment_dir
  workflow = Workflow(data=workflow_data)
  workflow.set_workspace(request.user)

  workflow.check_workspace(request.fs, request.user)
  workflow.import_workspace(request.fs, parent_wf.deployment_dir, request.user)
  workflow.document = parent_doc

  return _submit_workflow_helper(request, workflow, submit_action=reverse('oozie:submit_single_action', kwargs={'doc_id': doc_id, 'node_id': node_id}))
示例#11
0
文件: editor2.py 项目: cloudera/hue
def submit_single_action(request, doc_id, node_id):
  parent_doc = Document2.objects.get(id=doc_id)
  parent_wf = Workflow(document=parent_doc)
  workflow_data = parent_wf.create_single_action_workflow_data(node_id)
  _data = json.loads(workflow_data)

  # Create separate wf object for the submit node with new deployment_dir
  workflow = Workflow(data=workflow_data)
  workflow.set_workspace(request.user)

  workflow.check_workspace(request.fs, request.user)

  # The imported wf deployment directory might not neccessarily exist on first submission
  if not request.fs.exists(parent_wf.deployment_dir):
    request.fs.do_as_user(request.user.username, request.fs.mkdir, parent_wf.deployment_dir)
  workflow.import_workspace(request.fs, parent_wf.deployment_dir, request.user)
  workflow.document = parent_doc

  return _submit_workflow_helper(request, workflow, submit_action=reverse('oozie:submit_single_action', kwargs={'doc_id': doc_id, 'node_id': node_id}))
示例#12
0
def save_workflow(request):
  response = {'status': -1}

  workflow = json.loads(request.POST.get('workflow', '{}'))
  layout = json.loads(request.POST.get('layout', '{}'))

  if workflow.get('id'):
    workflow_doc = Document2.objects.get(id=workflow['id'])
  else:      
    workflow_doc = Document2.objects.create(name=workflow['name'], uuid=workflow['uuid'], type='oozie-workflow2', owner=request.user, description=workflow['properties']['description'])
    Document.objects.link(workflow_doc, owner=workflow_doc.owner, name=workflow_doc.name, description=workflow_doc.description, extra='workflow2')

  subworkflows = [node['properties']['workflow'] for node in workflow['nodes'] if node['type'] == 'subworkflow-widget']
  if subworkflows:
    dependencies = Document2.objects.filter(uuid__in=subworkflows)
    workflow_doc.dependencies = dependencies

  if workflow['properties'].get('imported'): # Old workflow format
    workflow['properties']['imported'] = False
    response['url'] = reverse('oozie:edit_workflow') + '?workflow=' + str(workflow_doc.id)

  workflow_doc.update_data({'workflow': workflow})
  workflow_doc.update_data({'layout': layout})
  workflow_doc.name = workflow['name']
  workflow_doc.save()

  workflow_instance = Workflow(document=workflow_doc)
  workflow_instance.set_workspace(request.user)
  workflow_instance.check_workspace(request.fs, request.user)

  response['status'] = 0
  response['id'] = workflow_doc.id
  response['doc1_id'] = workflow_doc.doc.get().id
  response['message'] = _('Page saved !')

  return JsonResponse(response)