示例#1
0
文件: fields.py 项目: gustav0/ciem
    def __get__(self, instance, owner=None):
        """
        Tag getter. Returns an instance's tags if accessed on an instance, and
        all of a model's tags if called on a class. That is, this model::

           class Link(models.Model):
               ...
               tags = TagField()

        Lets you do both of these::

           >>> l = Link.objects.get(...)
           >>> l.tags
           'tag1 tag2 tag3'

           >>> Link.tags
           'tag1 tag2 tag3 tag4'

        """
        # Handle access on the model (i.e. Link.tags)
        if instance is None:
            return edit_string_for_tags(Tag.objects.usage_for_model(owner))

        tags = self._get_instance_tag_cache(instance)
        if tags is None:
            if instance.pk is None:
                self._set_instance_tag_cache(instance, '')
            else:
                self._set_instance_tag_cache(
                    instance, edit_string_for_tags(Tag.objects.get_for_object(instance)))
        return self._get_instance_tag_cache(instance)
示例#2
0
文件: tests.py 项目: gustav0/ciem
 def test_recreation_of_tag_list_string_representations(self):
     plain = Tag.objects.create(name="plain")
     spaces = Tag.objects.create(name="spa ces")
     comma = Tag.objects.create(name="com,ma")
     self.assertEquals(edit_string_for_tags([plain]), u"plain")
     self.assertEquals(edit_string_for_tags([plain, spaces]), u"plain, spa ces")
     self.assertEquals(edit_string_for_tags([plain, spaces, comma]), u'plain, spa ces, "com,ma"')
     self.assertEquals(edit_string_for_tags([plain, comma]), u'plain "com,ma"')
     self.assertEquals(edit_string_for_tags([comma, spaces]), u'"com,ma", spa ces')