Beispiel #1
0
def validate_updates(taglist):
    """
    Validates that the list of tags specified to be updated currently
    exist. If one or more tags do not already exist, it generates a
    `InvalidAttemptToModifyTagsError` exception.
    :return: None
    """
    preexisting_keys = list_of_keys_of(taglist.current_list)
    keys_of_tags_to_update = list_of_keys_of(taglist.updates)

    non_existent_key_set = list(
        set(keys_of_tags_to_update) - set(preexisting_keys))

    if non_existent_key_set:
        raise_validation_error(
            problematic_key_set=non_existent_key_set,
            problem_message=strings['tags.tag_keys_dont_exist_for_update'],
            exception_class=InvalidAttemptToModifyTagsError)
Beispiel #2
0
def validate_updates(taglist):
    """
    Validates that the list of tags specified to be updated currently
    exist. If one or more tags do not already exist, it generates a
    `InvalidAttemptToModifyTagsError` exception.
    :return: None
    """
    preexisting_keys = list_of_keys_of(taglist.current_list)
    keys_of_tags_to_update = list_of_keys_of(taglist.updates)

    non_existent_key_set = list(set(keys_of_tags_to_update) - set(preexisting_keys))

    if non_existent_key_set:
        raise_validation_error(
            problematic_key_set=non_existent_key_set,
            problem_message=strings['tags.tag_keys_dont_exist_for_update'],
            exception_class=InvalidAttemptToModifyTagsError
        )
Beispiel #3
0
def validate_additions(taglist):
    """
    Validates that the list of tags specified to be added do not
    already exist. If one or more tags already exist, it generates a
    `AttemptToCreatePreexistingTagsError` exception.
    :return: None
    """
    preexisting_keys = list_of_keys_of(taglist.current_list)
    keys_of_tags_to_create = list_of_keys_of(taglist.additions)

    preexisting_key_set = set(preexisting_keys).intersection(
        keys_of_tags_to_create)

    if preexisting_key_set:
        raise_validation_error(
            problematic_key_set=preexisting_key_set,
            problem_message=strings['tags.tag_keys_already_exist'],
            exception_class=InvalidAttemptToModifyTagsError)
Beispiel #4
0
def validate_additions(taglist):
    """
    Validates that the list of tags specified to be added do not
    already exist. If one or more tags already exist, it generates a
    `AttemptToCreatePreexistingTagsError` exception.
    :return: None
    """
    preexisting_keys = list_of_keys_of(taglist.current_list)
    keys_of_tags_to_create = list_of_keys_of(taglist.additions)

    preexisting_key_set = set(preexisting_keys).intersection(keys_of_tags_to_create)

    if preexisting_key_set:
        raise_validation_error(
            problematic_key_set=preexisting_key_set,
            problem_message=strings['tags.tag_keys_already_exist'],
            exception_class=InvalidAttemptToModifyTagsError
        )
    def test_list_of_keys_of(self):
        list_of_tags = [
            {
                'Key': 'key1',
                'Value': 'value',
            },
            {
                'Key': 'key2',
                'Value': 'value',
            },
        ]

        self.assertEqual(['key1', 'key2'], list_of_keys_of(list_of_tags))
Beispiel #6
0
    def __communicate_changes_to_stdout(self):
        """
        Print changes to STDOUT.
        :return: None
        """
        keys_to_update = list_of_keys_of(self.taglist.updates)
        additions = [
            addition for addition in self.taglist.additions
            if addition['Key'] not in keys_to_update
        ]
        deletions = self.taglist.deletions
        updates = self.taglist.updates

        if additions:
            io.echo('Added Tags:')
            io.echo(
                linesep.join([
                    "  Key: '{0}'  Value: '{1}'".format(
                        addition['Key'], addition['Value'])
                    for addition in additions
                ]))
            io.echo('')

        if deletions:
            io.echo('Deleted Tags:')
            io.echo(
                linesep.join([
                    "  Key: '{0}'".format(deletion) for deletion in deletions
                ]))
            io.echo('')

        if updates:
            io.echo('Updated Tags:')
            io.echo(
                linesep.join([
                    "  Key: '{0}'  Value: '{1}'".format(
                        update['Key'], update['Value']) for update in updates
                ]))
            io.echo('')
Beispiel #7
0
    def __communicate_changes_to_stdout(self):
        """
        Print changes to STDOUT.
        :return: None
        """
        keys_to_update = list_of_keys_of(self.taglist.updates)
        additions = [addition for addition in self.taglist.additions if addition['Key'] not in keys_to_update]
        deletions = self.taglist.deletions
        updates = self.taglist.updates

        if additions:
            io.echo('Added Tags:')
            io.echo(linesep.join(["  Key: '{0}'  Value: '{1}'".format(addition['Key'], addition['Value']) for addition in additions]))
            io.echo('')

        if deletions:
            io.echo('Deleted Tags:')
            io.echo(linesep.join(["  Key: '{0}'".format(deletion) for deletion in deletions]))
            io.echo('')

        if updates:
            io.echo('Updated Tags:')
            io.echo(linesep.join(["  Key: '{0}'  Value: '{1}'".format(update['Key'], update['Value']) for update in updates]))
            io.echo('')
    def test_list_of_keys_of__empty_list_of_tags(self):
        list_of_tags = []

        self.assertEqual([], list_of_keys_of(list_of_tags))