Exemple #1
0
 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)
Exemple #2
0
 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)
Exemple #3
0
 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)
Exemple #4
0
 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)
Exemple #5
0
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
Exemple #8
0
 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'])
Exemple #11
0
    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
Exemple #12
0
 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)
Exemple #13
0
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")
Exemple #14
0
 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)
Exemple #15
0
 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)
Exemple #16
0
 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)
Exemple #17
0
 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)
Exemple #18
0
 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)
Exemple #19
0
 def _save(self, form):
     # Save treatment.
     try:
         data_api.upsert(self.object, self.request)
     except Exception as e:
         form.add_error(None, str(e))