def reload_form(request): """ Reload the form string from latest version saved :param request: :return: """ try: form_data_id = request.session['curateFormData'] form_data = FormData.objects().get(pk=form_data_id) xml_data = form_data.xml_data template_id = request.session['currentTemplateID'] template_object = Template.objects.get(pk=template_id) xsd_doc_data = template_object.content # the form has been saved already if xml_data is not None and xml_data != '': request.session['curate_edit'] = True root_element_id = generate_form(request, xsd_doc_data, xml_data, config=load_config()) # the form has never been saved else: root_element_id = generate_form(request, xsd_doc_data, config=load_config()) root_element = SchemaElement.objects.get(pk=root_element_id) renderer = ListRenderer(root_element, request) html_form = renderer.render() request.session['form_id'] = str(root_element_id) return HttpResponse(json.dumps({'xsdForm': html_form}), content_type='application/javascript') except Exception, e: return HttpResponse({}, status=400)
def reload_form(request): """ Reload the form string from latest version saved :param request: :return: """ try: form_data_id = request.session['curateFormData'] form_data = FormData.objects().get(pk=form_data_id) xml_data = form_data.xml_data template_id = request.session['currentTemplateID'] template_object = Template.objects.get(pk=template_id) xsd_doc_data = template_object.content # the form has been saved already if xml_data is not None and xml_data != '': request.session['curate_edit'] = True root_element_id = generate_form(request, xsd_doc_data, xml_data, config=load_config()) # the form has never been saved else: root_element_id = generate_form(request, xsd_doc_data, config=load_config()) root_element = SchemaElement.objects.get(pk=root_element_id) renderer = ListRenderer(root_element, request) html_form = renderer.render() request.session['form_id'] = str(root_element_id) return HttpResponse(json.dumps({'xsdForm': html_form}), content_type='application/javascript') except Exception, e: return HttpResponse({}, status=400)
def curate_edit_form(request): try: if request.method == 'GET': if 'id' in request.GET: form_data_id = request.GET['id'] try: form_data = FormData.objects.get(pk=ObjectId(form_data_id)) except: raise MDCSError( "The form you are looking for doesn't exist.") request.session['curate_edit'] = True # parameters that will be used during curation request.session['curateFormData'] = str(form_data.id) request.session['currentTemplateID'] = form_data.template templateObject = Template.objects.get(pk=form_data.template) xmlDocData = templateObject.content XMLtree = etree.parse(BytesIO(xmlDocData.encode('utf-8'))) request.session['xmlDocTree'] = etree.tostring(XMLtree) if form_data.schema_element_root is not None: delete_branch_from_db(form_data.schema_element_root.pk) form_data.schema_element_root = None if form_data.template is not None: template_object = Template.objects.get( pk=form_data.template) xsd_doc_data = template_object.content else: raise MDCSError("No schema attached to this file") if form_data.xml_data is not None: xml_doc_data = form_data.xml_data else: xml_doc_data = None root_element_id = generate_form(request, xsd_doc_data, xml_doc_data, config=load_config()) root_element = SchemaElement.objects.get(pk=root_element_id) form_data.update(set__schema_element_root=root_element) form_data.reload() request.session['form_id'] = str( form_data.schema_element_root.id) context = RequestContext(request, {}) template = loader.get_template('curate/curate_enter_data.html') return HttpResponse(template.render(context)) else: raise MDCSError("The form ID is missing.") except MDCSError, e: template = loader.get_template('curate/errors.html') context = RequestContext(request, { 'errors': e.message, }) return HttpResponse(template.render(context))
def generate_xsd_form(request): """ Renders HTMl form for display. Parameters: request: Returns: str: HTML form """ try: if 'form_id' in request.session: root_element_id = request.session['form_id'] form_data = None request.session['curate_edit'] = False else: # If this is a new form, generate it and store the root ID # get the xsd tree when going back and forth with review step if 'xmlDocTree' in request.session: xsd_doc_data = request.session['xmlDocTree'] else: template_id = request.session['currentTemplateID'] template_object = Template.objects.get(pk=template_id) xsd_doc_data = template_object.content # get form data from the database (empty one or existing one) form_data_id = request.session['curateFormData'] form_data = FormData.objects.get(pk=ObjectId(form_data_id)) if form_data.xml_data is not None: xml_doc_data = form_data.xml_data else: xml_doc_data = None root_element_id = generate_form(request, xsd_doc_data, xml_doc_data, config=load_config()) request.session['form_id'] = str(root_element_id) root_element = SchemaElement.objects.get(pk=root_element_id) if form_data is not None: if form_data.schema_element_root is not None: delete_branch_from_db(form_data.schema_element_root.pk) form_data.update(set__schema_element_root=root_element) form_data.reload() renderer = ListRenderer(root_element, request) html_form = renderer.render() except Exception as e: renderer = DefaultRenderer(SchemaElement(), {}) if e.message is not None: err_message = e.message else: err_message = "An unknown error raised " + e.__class__.__name__ html_form = renderer._render_form_error(err_message) return HttpResponse(json.dumps({'xsdForm': html_form}), content_type='application/javascript')
def generate_xsd_form(request): """ Renders HTMl form for display. Parameters: request: Returns: str: HTML form """ try: if 'form_id' in request.session: root_element_id = request.session['form_id'] form_data = None request.session['curate_edit'] = False else: # If this is a new form, generate it and store the root ID # get the xsd tree when going back and forth with review step if 'xmlDocTree' in request.session: xsd_doc_data = request.session['xmlDocTree'] else: template_id = request.session['currentTemplateID'] template_object = Template.objects.get(pk=template_id) xsd_doc_data = template_object.content # get form data from the database (empty one or existing one) form_data_id = request.session['curateFormData'] form_data = FormData.objects.get(pk=ObjectId(form_data_id)) if form_data.xml_data is not None: xml_doc_data = form_data.xml_data else: xml_doc_data = None root_element_id = generate_form(request, xsd_doc_data, xml_doc_data, config=load_config()) request.session['form_id'] = str(root_element_id) root_element = SchemaElement.objects.get(pk=root_element_id) if form_data is not None: if form_data.schema_element_root is not None: delete_branch_from_db(form_data.schema_element_root.pk) form_data.update(set__schema_element_root=root_element) form_data.reload() renderer = ListRenderer(root_element, request) html_form = renderer.render() except Exception as e: renderer = DefaultRenderer(SchemaElement(), {}) if e.message is not None: err_message = e.message else: err_message = "An unknown error raised " + e.__class__.__name__ html_form = renderer._render_form_error(err_message) return HttpResponse(json.dumps({'xsdForm': html_form}), content_type='application/javascript')
def retrieve_rendered_form(request): """Retrieve a form :param request: :return: """ root_pk = generate_form(request) root_element = SchemaElement.objects.get(pk=root_pk) renderer = ListRenderer(root_element) return renderer.render()
def retrieve_rendered_form(request): """Retrieve a form :param request: :return: """ root_pk = generate_form(request) root_element = SchemaElement.objects.get(pk=root_pk) renderer = ListRenderer(root_element) return renderer.render()
def test_list_renderer(self): main_directory = self.schema_data_handler.dirname main_dir_len = len(main_directory) + 1 filepath_list = [] for root, dirs, files in walk(main_directory): for filename in files: file_ext = splitext(filename) if file_ext[1] == '.xsd': full_path = join(root, file_ext[0]) filepath_list.append(full_path[main_dir_len:]) report_content = [] error_count = 0 for filepath in filepath_list: report_line = filepath try: xsd_data = self.schema_data_handler.get_xsd2(filepath) self.request.session['xmlDocTree'] = etree.tostring(xsd_data) root_pk = generate_form(self.request) root_element = SchemaElement.objects.get(pk=root_pk) renderer = ListRenderer(root_element) renderer.render() if len(renderer.warnings) != 0: report_line += ',NOK,' + ','.join(renderer.warnings) + '\n' error_count += 1 else: # No warnings yielded by the renderer report_line += ',OK\n' except Exception as e: report_line += ',NOK,' + e.message + '\n' error_count += 1 report_content.append(report_line) with open(join(SITE_ROOT, 'full_tests_report.csv'), 'w') as report_file: report_file.writelines(report_content) self.assertEqual(error_count, 0)
def test_list_renderer(self): main_directory = self.schema_data_handler.dirname main_dir_len = len(main_directory) + 1 filepath_list = [] for root, dirs, files in walk(main_directory): for filename in files: file_ext = splitext(filename) if file_ext[1] == '.xsd': full_path = join(root, file_ext[0]) filepath_list.append(full_path[main_dir_len:]) report_content = [] error_count = 0 for filepath in filepath_list: report_line = filepath try: xsd_data = self.schema_data_handler.get_xsd2(filepath) self.request.session['xmlDocTree'] = etree.tostring(xsd_data) root_pk = generate_form(self.request) root_element = SchemaElement.objects.get(pk=root_pk) renderer = ListRenderer(root_element) renderer.render() if len(renderer.warnings) != 0: report_line += ',NOK,' + ','.join(renderer.warnings) + '\n' error_count += 1 else: # No warnings yielded by the renderer report_line += ',OK\n' except Exception as e: report_line += ',NOK,' + e.message + '\n' error_count += 1 report_content.append(report_line) with open(join(SITE_ROOT, 'full_tests_report.csv'), 'w') as report_file: report_file.writelines(report_content) self.assertEqual(error_count, 0)
def test_schema_generation(self): main_directory = self.schema_data_handler.dirname main_dir_len = len(main_directory) + 1 filepath_list = [] for root, dirs, files in walk(main_directory): for filename in files: file_ext = splitext(filename) if file_ext[1] == '.xsd': full_path = join(root, file_ext[0]) filepath_list.append(full_path[main_dir_len:]) report_content = [] errors_number = 0 for filepath in filepath_list: report_line = filepath try: xsd_data = self.schema_data_handler.get_xsd(filepath) self.request.session['xmlDocTree'] = etree.tostring(xsd_data) root_pk = generate_form(self.request) if root_pk != -1: report_line += ',OK\n' else: errors_number += 1 report_line += ',NOK\n' except Exception as e: errors_number += 1 report_line += ',EXC,' + e.message + '\n' report_content.append(report_line) with open(join(SITE_ROOT, 'full_tests_report.csv'), 'w') as report_file: report_file.writelines(report_content) if errors_number != 0: self.fail(str(errors_number) + " errors detected")
def test_schema_generation(self): main_directory = self.schema_data_handler.dirname main_dir_len = len(main_directory) + 1 filepath_list = [] for root, dirs, files in walk(main_directory): for filename in files: file_ext = splitext(filename) if file_ext[1] == '.xsd': full_path = join(root, file_ext[0]) filepath_list.append(full_path[main_dir_len:]) report_content = [] errors_number = 0 for filepath in filepath_list: report_line = filepath try: xsd_data = self.schema_data_handler.get_xsd(filepath) self.request.session['xmlDocTree'] = etree.tostring(xsd_data) root_pk = generate_form(self.request) if root_pk != -1: report_line += ',OK\n' else: errors_number += 1 report_line += ',NOK\n' except Exception as e: errors_number += 1 report_line += ',EXC,' + e.message + '\n' report_content.append(report_line) with open(join(SITE_ROOT, 'full_tests_report.csv'), 'w') as report_file: report_file.writelines(report_content) if errors_number != 0: self.fail(str(errors_number) + " errors detected")
def generate_xsd_form(request): """ Renders HTMl form for display. Parameters: request: Returns: str: HTML form """ try: if 'form_id' in request.session: root_element_id = request.session['form_id'] form_data = None request.session['curate_edit'] = False else: # If this is a new form, generate it and store the root ID # get the xsd tree when going back and forth with review step if 'xmlDocTree' in request.session: xsd_doc_data = request.session['xmlDocTree'] else: template_id = request.session['currentTemplateID'] template_object = Template.objects.get(pk=template_id) xsd_doc_data = template_object.content # get form data from the database (empty one or existing one) form_data_id = request.session['curateFormData'] form_data = FormData.objects.get(pk=ObjectId(form_data_id)) if form_data.xml_data is not None: xml_doc_data = form_data.xml_data else: xml_doc_data = None root_element_id = generate_form(request, xsd_doc_data, xml_doc_data, config=load_config()) request.session['form_id'] = str(root_element_id) root_element = SchemaElement.objects.get(pk=root_element_id) ##### xxxxxxxxxxxxxxx text2choice(root_element) if form_data is not None: if form_data.schema_element_root is not None: delete_branch_from_db(form_data.schema_element_root.pk) form_data.update(set__schema_element_root=root_element) form_data.reload() renderer = ListRenderer(root_element, request) html_form = renderer.render() except Exception as e: renderer = DefaultRenderer(SchemaElement(), {}) if e.message is not None: err_message = e.message else: err_message = "An unknown error raised " + e.__class__.__name__ html_form = renderer._render_form_error(err_message) #### add image upload button try: page = etree.fromstring(html_form) hrefs = page.xpath(u"//li") for href in hrefs: if href.text.strip() == "imageID": form = etree.SubElement( href, 'form', attrib={ 'action': '''javascript:var request = $.ajax({url: "/rest/blob?id=1243", method: "POST", data: new FormData(document.getElementById('blob321')), processData: false, contentType: false }).done(function(res){document.getElementById('%s').value=res.handle;}).fail(function(res){});''' % (href.getchildren()[0].attrib['id']), 'method': 'post', 'id': 'blob321', 'enctype': 'multipart/form-data' }) attributes = href.getchildren()[0].attrib attributes['type'] = 'submit' attributes['value'] = 'upload' etree.SubElement(form, 'input', attrib={ 'id': 'blob123', 'type': 'file', 'name': 'blob' }) form.append(href.getchildren()[0]) html_form = etree.tostring(page) except Exception as e: pass return HttpResponse(json.dumps({'xsdForm': html_form}), content_type='application/javascript')