Пример #1
0
def create(request):
    required_fields = set(["name", "description", "template", "type"])
    print request.POST["name"]
    print request.POST["description"]
    print request.POST["type"]
    if not required_fields.issubset(request.POST):
        return render(request, "error.html",
                      {"error": "Invalid Parameters in POST"})

    template = ConfigTemplate()
    template.name = request.POST["name"]
    template.description = request.POST["description"]
    template.action_provider = request.POST["action_provider"]
    if request.POST["action_provider"] == "AnsibleAction":
        template.template_path = request.POST["template_path"]
    template.template = request.POST["template"].strip().replace('\r\n', '\n')
    template.type = request.POST["type"]

    if "new_template_action_options" not in request.session:
        return render(request, "error.html",
                      {"error": "Invalid session data!"})

    configured_action_options = request.session["new_template_action_options"]
    template.action_provider_options = json.dumps(configured_action_options)
    print("action options are:")
    print(configured_action_options)
    print("Saving form")
    template.save()
    return HttpResponseRedirect("/input_forms/view_from_template/%s" %
                                template.id)
Пример #2
0
def clone(request, template_id):
    """
    Clones a template. Allows quickly creating new templates from existing ones.

    :param request:
    :param template_id: id of the template to be cloned
    :return: redirect to edit screen of new template!
    """
    template = get_object_or_404(ConfigTemplate, pk=template_id)

    # create our Dolly the sheep (clone)
    dolly = ConfigTemplate()
    dolly.name = template.name + " Clone"
    dolly.description = template.description
    dolly.action_provider = template.action_provider
    dolly.action_provider_options = template.action_provider_options
    dolly.template = template.template
    dolly.template_path = template.template_path
    dolly.type = template.type

    print("Cloning template %s" % template.name)
    dolly.save()
    dollies_id = dolly.id

    # attempt to save any existing input form associations on the session
    # we'll retrieve this later when creating a new input form
    try:
        input_form = InputForm.objects.get(script=template)

        if 'cloned_templates' in request.session:
            cloned_templates = request.session['cloned_templates']
        else:
            cloned_templates = dict()

        cloned_templates[dollies_id] = dict()
        cloned_templates[dollies_id]['cloned_from'] = template.id
        cloned_templates[dollies_id]['input_form_id'] = input_form.id
        print('added a template to the cloned templates cache in the session')
        print(dollies_id)

        request.session['cloned_templates'] = cloned_templates

    except InputForm.DoesNotExist as dne:
        print('Could not find input_form for this cloned template')

    return HttpResponseRedirect('/tools/edit/%s/' % dolly.id)