def clear_fields(request): """Clear fields of the current form. Args: request: Returns: """ try: # get curate data structure curate_data_structure_id = request.POST["id"] curate_data_structure = curate_data_structure_api.get_by_id( curate_data_structure_id, request.user) # generate form template = template_api.get(str(curate_data_structure.template.id), request=request) root_element = generate_form(template.content, data_structure=curate_data_structure, request=request) # save the root element in the data structure curate_data_structure_api.update_data_structure_root( curate_data_structure, root_element, request.user) # renders the form xsd_form = render_form(request, root_element) return HttpResponse(json.dumps({"xsdForm": xsd_form}), content_type="application/javascript") except Exception as e: return HttpResponseBadRequest(escape(str(e)))
def test_update_others_data_structure_root_as_anonymous_user_raises_error(self): data_structure = self.fixture.data_structure_1 new_data_structure_element_root = self.fixture.data_structure_2.id with self.assertRaises(AccessControlError): curate_data_structure_api.update_data_structure_root( data_structure, new_data_structure_element_root, AnonymousUser() )
def clear_fields(request): """Clear fields of the current form. Args: request: Returns: """ try: # get curate data structure curate_data_structure_id = request.POST['id'] curate_data_structure = curate_data_structure_api.get_by_id( curate_data_structure_id) # generate form root_element = generate_form(curate_data_structure.template.content) # save the root element in the data structure curate_data_structure_api.update_data_structure_root( curate_data_structure, root_element) # renders the form xsd_form = render_form(request, root_element) return HttpResponse(json.dumps({'xsdForm': xsd_form}), content_type='application/javascript') except: return HttpResponseBadRequest()
def test_update_others_data_structure_root_as_user_raises_error(self): data_structure = self.fixture.data_structure_1 new_data_structure_element_root = self.fixture.data_structure_2.id mock_user = create_mock_user(self.fixture.data_structure_3.user) with self.assertRaises(AccessControlError): curate_data_structure_api.update_data_structure_root( data_structure, new_data_structure_element_root, mock_user )
def cancel_changes(request): """Cancel changes of the current form. Args: request: Returns: """ try: # get curate data structure curate_data_structure_id = request.POST["id"] curate_data_structure = curate_data_structure_api.get_by_id( curate_data_structure_id, request.user) if curate_data_structure.data is not None: # data already saved, reload from data xml_data = curate_data_structure.data.xml_content elif curate_data_structure.form_string is not None: # form already saved, reload from saved form xml_data = curate_data_structure.form_string else: # no saved data, load new form xml_data = None # generate form template = template_api.get(str(curate_data_structure.template.id), request=request) root_element = generate_form( template.content, xml_data, data_structure=curate_data_structure, request=request, ) # save the root element in the data structure curate_data_structure_api.update_data_structure_root( curate_data_structure, root_element, request.user) # renders the form xsd_form = render_form(request, root_element) return HttpResponse(json.dumps({"xsdForm": xsd_form}), content_type="application/javascript") except Exception as e: return HttpResponseBadRequest(escape(str(e)))
def build_context(self, request, curate_data_structure, reload_unsaved_changes): """Build the context of the view Args: request: curate_data_structure: reload_unsaved_changes: Returns: """ # get xsd string from the template template = template_api.get(str(curate_data_structure.template.id), request=request) xsd_string = template.content if reload_unsaved_changes: # get root element from the data structure root_element = curate_data_structure.data_structure_element_root else: # if form string provided, use it to generate the form xml_string = curate_data_structure.form_string # get the root element root_element = generate_form( xsd_string, xml_string, data_structure=curate_data_structure, request=request, ) # save the root element in the data structure curate_data_structure_api.update_data_structure_root( curate_data_structure, root_element, request.user) # renders the form xsd_form = render_form(request, root_element) return { "edit": True if curate_data_structure.data is not None else False, "xsd_form": xsd_form, "data_structure": curate_data_structure, }
def test_update_own_data_structure_root_updates_data_structure(self): data_structure = self.fixture.data_structure_1 new_data_structure_element_root = self.fixture.data_structure_2.id mock_user = create_mock_user(self.fixture.data_structure_1.user) result = curate_data_structure_api.update_data_structure_root( data_structure, new_data_structure_element_root, mock_user ) self.assertTrue(isinstance(result, CurateDataStructure)) self.assertTrue( result.data_structure_element_root, new_data_structure_element_root )
def cancel_changes(request): """Cancel changes of the current form. Args: request: Returns: """ try: # get curate data structure curate_data_structure_id = request.POST['id'] curate_data_structure = curate_data_structure_api.get_by_id( curate_data_structure_id) if curate_data_structure.data is not None: # data already saved, reload from data xml_data = curate_data_structure.data.xml_content elif curate_data_structure.form_string is not None: # form already saved, reload from saved form xml_data = curate_data_structure.form_string else: # no saved data, load new form xml_data = None # generate form root_element = generate_form(curate_data_structure.template.content, xml_data) # save the root element in the data structure curate_data_structure_api.update_data_structure_root( curate_data_structure, root_element) # renders the form xsd_form = render_form(request, root_element) return HttpResponse(json.dumps({'xsdForm': xsd_form}), content_type='application/javascript') except: return HttpResponseBadRequest()
def test_update_others_data_structure_root_as_superuser_updates_data_structure( self, ): data_structure = self.fixture.data_structure_1 new_data_structure_element_root = self.fixture.data_structure_3.id mock_user = create_mock_user( self.fixture.data_structure_2.user, is_staff=True, is_superuser=True ) result = curate_data_structure_api.update_data_structure_root( data_structure, new_data_structure_element_root, mock_user ) self.assertTrue(isinstance(result, CurateDataStructure)) self.assertTrue( result.data_structure_element_root, new_data_structure_element_root )