def test_parse_renders_tags(self): tagstr = "adam, brian, chris" tags = tag_utils.parse_tags(tagstr) tagstr2 = tag_utils.render_tags(tags) self.assertEqual(len(tags), 3) self.assertEqual(tags[0], "adam") self.assertEqual(tags[1], "brian") self.assertEqual(tags[2], "chris") self.assertEqual(tagstr, tagstr2)
def test_parse_renders_tags_complex(self): tagstr = '"""adam brian"", ""chris, dave", "ed, frank", gary' tags = tag_utils.parse_tags(tagstr) tagstr2 = tag_utils.render_tags(tags) self.assertEqual(len(tags), 3) self.assertEqual(tags[0], '"adam brian", "chris, dave') self.assertEqual(tags[1], "ed, frank") self.assertEqual(tags[2], "gary") self.assertEqual(tagstr, tagstr2)
def prepare_value(self, value): """ Prepare the value """ # Could receive iterable of tags from a form's initial object if (isinstance(value, TagModelQuerySet) or (hasattr(value, '__getitem__') and all(isinstance(tag, BaseTagModel) for tag in value))): value = render_tags(value) # Deal with it as normal return super(TagField, self).prepare_value(value)
def prepare_value(self, value): """ Prepare the value """ # Could receive iterable of tags from a form's initial object if ( isinstance(value, TagModelQuerySet) or ( hasattr(value, '__getitem__') and all(isinstance(tag, BaseTagModel) for tag in value) ) ): value = render_tags(value) # Deal with it as normal return super(TagField, self).prepare_value(value)
def __setattr__(self, name, value): """ Only allow an option to be set if it's valid """ if name == 'initial': # Store as a list of strings, with the tag string available on # initial_string for migrations if value is None: self.__dict__['initial_string'] = '' self.__dict__['initial'] = [] elif isinstance(value, six.string_types): self.__dict__['initial_string'] = value self.__dict__['initial'] = parse_tags(value) else: self.__dict__['initial_string'] = render_tags(value) self.__dict__['initial'] = value elif name in constants.OPTION_DEFAULTS: self.__dict__[name] = value else: raise AttributeError(name)
def test_quotes_commas_and_spaces(self): tagstr = tag_utils.render_tags(["adam brian", "chris, dave", "ed"]) self.assertEqual(tagstr, '"adam brian", "chris, dave", ed')
def test_escapes_quotes(self): tagstr = tag_utils.render_tags(['ad"am', '"brian', 'chris"', '"dave"']) self.assertEqual(tagstr, '""brian, ""dave"", ad""am, chris""')
def test_simple(self): tagstr = tag_utils.render_tags(["adam", "brian", "chris"]) self.assertEqual(tagstr, "adam, brian, chris")
def __str__(self): return utils.render_tags(self)
def get_tag_string(self): """ Get the tag edit string for this instance as a string """ return render_tags(self.tags)