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)
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 )
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 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))
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 __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))