def test_data_upsert_raises_xml_error_if_failed_during_xml_validation(self): # Arrange data = _create_data(None, user_id='3', title='title', content='') mock_user = _create_user('3') # Act # Assert with self.assertRaises(exceptions.XMLError): data_api.upsert(data, mock_user)
def test_data_upsert_raises_xml_error_if_failed_during_xml_validation(self): # Arrange data = _create_data(None, user_id="3", title="title", content="") mock_user = create_mock_user("3") mock_request = create_mock_request(user=mock_user) # Act # Assert with self.assertRaises(exceptions.XMLError): data_api.upsert(data, mock_request)
def test_data_upsert_raises_xml_error_if_failed_during_validation(self): # Arrange template = _get_template() data = _create_data(template, user_id='3', title='title', content='<new_tag></new_tag>') mock_user = _create_user('3') # Act # Assert with self.assertRaises(exceptions.XMLError): data_api.upsert(data, mock_user)
def test_data_upsert_raises_xml_error_if_failed_during_validation(self): # Arrange template = _get_template() data = _create_data( template, user_id="3", title="title", content="<new_tag></new_tag>" ) mock_user = create_mock_user("3", is_superuser=True) mock_request = create_mock_request(user=mock_user) # Act # Assert with self.assertRaises(exceptions.XMLError): data_api.upsert(data, mock_request)
def save_data(request): """Save data - delete curate data structure. 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) # unlock from database if curate_data_structure.data is not None: lock_api.remove_lock_on_object(curate_data_structure.data, request.user) # generate the XML xml_data = render_xml( curate_data_structure.data_structure_element_root) if curate_data_structure.data is not None: # update existing data data = curate_data_structure.data else: # create new data data = Data() data.title = curate_data_structure.name data.template = curate_data_structure.template data.user_id = str(request.user.id) # set content data.xml_content = xml_data # save data data_api.upsert(data, request.user) curate_data_structure_api.delete(curate_data_structure) messages.add_message( request, messages.SUCCESS, get_data_label().capitalize() + ' saved with success.') except Exception, e: message = e.message.replace('"', '\'') return HttpResponseBadRequest(message, content_type='application/javascript')
def set_status(data, status, user): """ Set the status of a data Args: data: status: user: Returns: Data """ if status == DataStatus.DELETED and (data.workspace is None or data.workspace.is_public is False): raise exceptions.ModelError( "the " + get_data_label() + " should be published if the targeted status is 'Deleted'") # build the xsd tree xml_tree = XSDTree.build_tree(data.xml_content) # get the root root = xml_tree.getroot() # and change the attribute root.attrib['status'] = status # update the xml content data.xml_content = XSDTree.tostring(xml_tree) # upsert the data return data_api.upsert(data, user)
def create(self, validated_data): """ Create and return a new `Data` instance, given the validated data. """ # Create data instance = Data( template=validated_data["template"], workspace=validated_data["workspace"] if "workspace" in validated_data else None, title=validated_data["title"], user_id=str(self.context["request"].user.id), ) # Get template template_api.get(instance.template.id, request=self.context["request"]) # Set xml content instance.xml_content = validated_data["xml_content"] # Save the data and retrieve the inserted object inserted_data = data_api.upsert(instance, self.context["request"]) # Encode the response body inserted_data.xml_content = inserted_data.xml_content.encode("utf-8") return inserted_data
def test_data_upsert_init_creation_date( self, mock_save, mock_check, mock_convert_file ): # Arrange data = _create_data( _get_template(), user_id="3", title="title", content="<tag></tag>" ) mock_save.return_value = data mock_check.return_value = None mock_convert_file.return_value = None mock_user = create_mock_user("3") mock_request = create_mock_request(user=mock_user) # Act data_api.upsert(data, mock_request) # Assert self.assertIsNotNone(data.creation_date)
def update(self, instance, validated_data): """ Update and return an existing `Data` instance, given the validated data. """ instance.title = validated_data.get("title", instance.title) instance.xml_content = validated_data.get("xml_content", instance.xml_content) return data_api.upsert(instance, self.context["request"])
def update(self, instance, validated_data): """ Update and return an existing `Data` instance, given the validated data. """ instance.title = validated_data.get('title', instance.title) instance.xml_content = validated_data.get('xml_content', instance.xml_content) return data_api.upsert(instance, validated_data['user'])
def create(self, validated_data): """ Create and return a new `Data` instance, given the validated data. """ # Create data instance = Data( template=validated_data['template'], title=validated_data['title'], user_id=str(validated_data['user'].id), ) # Set xml content instance.xml_content = validated_data['xml_content'] # Save the data data_api.upsert(instance, validated_data['user']) # Encode the response body instance.xml_content = validated_data['xml_content'].encode('utf-8') return instance
def test_data_upsert_updates_last_modification_date( self, mock_save, mock_check, mock_convert_file ): # Arrange data = _create_data( _get_template(), user_id="3", title="title", content="<tag></tag>" ) mock_save.return_value = data mock_check.return_value = None mock_convert_file.return_value = None mock_user = create_mock_user("3") mock_request = create_mock_request(user=mock_user) # Act result = data_api.upsert(data, mock_request) creation_date = result.last_modification_date # Assert data_api.upsert(data, mock_request) self.assertNotEqual(creation_date, data.last_modification_date)
def save_data(request): """Save data - delete curate data structure. 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) # unlock from database if curate_data_structure.data is not None: lock_api.remove_lock_on_object(curate_data_structure.data, request.user) # generate the XML xml_data = render_xml( request, curate_data_structure.data_structure_element_root) if curate_data_structure.data is not None: # update existing data data = curate_data_structure.data else: # create new data data = Data() data.title = curate_data_structure.name template = template_api.get(str(curate_data_structure.template.id), request=request) data.template = template data.user_id = str(request.user.id) # set content data.xml_content = xml_data # save data data = data_api.upsert(data, request) curate_data_structure_api.delete(curate_data_structure, request.user) messages.add_message( request, messages.SUCCESS, get_data_label().capitalize() + " saved with success.", ) except Exception as e: return HttpResponseBadRequest(str(e).replace('"', "'"), content_type="application/javascript") return HttpResponse(json.dumps({"data_id": str(data.id)}), content_type="application/javascript")
def test_data_edit_does_not_updates_creation_date( self, mock_save, mock_check, mock_convert_file ): # Arrange data = _create_data( _get_template(), user_id="3", title="title", content="<tag></tag>" ) mock_save.return_value = data mock_check.return_value = None mock_convert_file.return_value = None mock_user = create_mock_user("3") mock_request = create_mock_request(user=mock_user) # Act data_api.upsert(data, mock_request) data.id = ObjectId() original_date = data.creation_date data.title = "test" data_api.upsert(data, mock_request) # Assert self.assertIsNotNone(data.creation_date) self.assertEqual(data.creation_date, original_date)
def test_data_upsert_return_data_with_last_modification_date(self, mock_save, mock_check, mock_convert_file): # Arrange data = _create_data(_get_template(), user_id='3', title='title', content='<tag></tag>') mock_save.return_value = data mock_check.return_value = None mock_convert_file.return_value = None mock_user = _create_user('3') # Act result = data_api.upsert(data, mock_user) # Assert self.assertIsNotNone(result.last_modification_date)
def test_data_upsert_return_data_with_new_xml_if_is_called_with_only_xml_modified(self, mock_save, mock_check, mock_convert_file): # Arrange xml = '<new_tag></new_tag>' data = _create_data(_get_template(), user_id='3', title='title', content=xml) mock_save.return_value = data mock_check.return_value = None mock_convert_file.return_value = None mock_user = _create_user('3') # Act result = data_api.upsert(data, mock_user) # Assert self.assertEqual(xml, result.xml_content)
def test_data_upsert_return_data_with_new_title_if_is_called_with_only_title_modified(self, mock_save, mock_check, mock_convert_file): # Arrange data = _create_data(_get_template(), user_id='2', title='new_title', content='<tag></tag>') mock_save.return_value = data mock_check.return_value = None mock_convert_file.return_value = None mock_user = _create_user('2') # Act result = data_api.upsert(data, mock_user) # Assert self.assertEqual('new_title', result.title)
def test_data_upsert_return_data_with_new_user_id_if_is_called_with_only_user_id_modified( self, mock_save, mock_check, mock_convert_file ): # Arrange data = _create_data( _get_template(), user_id="3", title="new_title", content="<tag></tag>" ) mock_save.return_value = data mock_check.return_value = None mock_convert_file.return_value = None mock_user = create_mock_user("3") mock_request = create_mock_request(user=mock_user) # Act result = data_api.upsert(data, mock_request) # Assert self.assertEqual("3", result.user_id)
def _save(self, form): # Save treatment. try: data_api.upsert(self.object, self.request) except Exception as e: form.add_error(None, str(e))