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)
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)