Statistics
| Branch: | Revision:

root / taggit / tests / models.py @ 04733cdb

History | View | Annotate | Download (3.1 kB)

1 04733cdb Leonidas Poulopoulos
from django.db import models
2 04733cdb Leonidas Poulopoulos
3 04733cdb Leonidas Poulopoulos
from taggit.managers import TaggableManager
4 04733cdb Leonidas Poulopoulos
from taggit.models import (TaggedItemBase, GenericTaggedItemBase, TaggedItem,
5 04733cdb Leonidas Poulopoulos
    TagBase, Tag)
6 04733cdb Leonidas Poulopoulos
7 04733cdb Leonidas Poulopoulos
8 04733cdb Leonidas Poulopoulos
class Food(models.Model):
9 04733cdb Leonidas Poulopoulos
    name = models.CharField(max_length=50)
10 04733cdb Leonidas Poulopoulos
11 04733cdb Leonidas Poulopoulos
    tags = TaggableManager()
12 04733cdb Leonidas Poulopoulos
13 04733cdb Leonidas Poulopoulos
    def __unicode__(self):
14 04733cdb Leonidas Poulopoulos
        return self.name
15 04733cdb Leonidas Poulopoulos
16 04733cdb Leonidas Poulopoulos
class Pet(models.Model):
17 04733cdb Leonidas Poulopoulos
    name = models.CharField(max_length=50)
18 04733cdb Leonidas Poulopoulos
19 04733cdb Leonidas Poulopoulos
    tags = TaggableManager()
20 04733cdb Leonidas Poulopoulos
21 04733cdb Leonidas Poulopoulos
    def __unicode__(self):
22 04733cdb Leonidas Poulopoulos
        return self.name
23 04733cdb Leonidas Poulopoulos
24 04733cdb Leonidas Poulopoulos
class HousePet(Pet):
25 04733cdb Leonidas Poulopoulos
    trained = models.BooleanField()
26 04733cdb Leonidas Poulopoulos
27 04733cdb Leonidas Poulopoulos
28 04733cdb Leonidas Poulopoulos
# Test direct-tagging with custom through model
29 04733cdb Leonidas Poulopoulos
30 04733cdb Leonidas Poulopoulos
class TaggedFood(TaggedItemBase):
31 04733cdb Leonidas Poulopoulos
    content_object = models.ForeignKey('DirectFood')
32 04733cdb Leonidas Poulopoulos
33 04733cdb Leonidas Poulopoulos
class TaggedPet(TaggedItemBase):
34 04733cdb Leonidas Poulopoulos
    content_object = models.ForeignKey('DirectPet')
35 04733cdb Leonidas Poulopoulos
36 04733cdb Leonidas Poulopoulos
class DirectFood(models.Model):
37 04733cdb Leonidas Poulopoulos
    name = models.CharField(max_length=50)
38 04733cdb Leonidas Poulopoulos
39 04733cdb Leonidas Poulopoulos
    tags = TaggableManager(through="TaggedFood")
40 04733cdb Leonidas Poulopoulos
41 04733cdb Leonidas Poulopoulos
class DirectPet(models.Model):
42 04733cdb Leonidas Poulopoulos
    name = models.CharField(max_length=50)
43 04733cdb Leonidas Poulopoulos
44 04733cdb Leonidas Poulopoulos
    tags = TaggableManager(through=TaggedPet)
45 04733cdb Leonidas Poulopoulos
46 04733cdb Leonidas Poulopoulos
    def __unicode__(self):
47 04733cdb Leonidas Poulopoulos
        return self.name
48 04733cdb Leonidas Poulopoulos
49 04733cdb Leonidas Poulopoulos
class DirectHousePet(DirectPet):
50 04733cdb Leonidas Poulopoulos
    trained = models.BooleanField()
51 04733cdb Leonidas Poulopoulos
52 04733cdb Leonidas Poulopoulos
53 04733cdb Leonidas Poulopoulos
# Test custom through model to model with custom PK
54 04733cdb Leonidas Poulopoulos
55 04733cdb Leonidas Poulopoulos
class TaggedCustomPKFood(TaggedItemBase):
56 04733cdb Leonidas Poulopoulos
    content_object = models.ForeignKey('CustomPKFood')
57 04733cdb Leonidas Poulopoulos
58 04733cdb Leonidas Poulopoulos
class TaggedCustomPKPet(TaggedItemBase):
59 04733cdb Leonidas Poulopoulos
    content_object = models.ForeignKey('CustomPKPet')
60 04733cdb Leonidas Poulopoulos
61 04733cdb Leonidas Poulopoulos
class CustomPKFood(models.Model):
62 04733cdb Leonidas Poulopoulos
    name = models.CharField(max_length=50, primary_key=True)
63 04733cdb Leonidas Poulopoulos
64 04733cdb Leonidas Poulopoulos
    tags = TaggableManager(through=TaggedCustomPKFood)
65 04733cdb Leonidas Poulopoulos
66 04733cdb Leonidas Poulopoulos
    def __unicode__(self):
67 04733cdb Leonidas Poulopoulos
        return self.name
68 04733cdb Leonidas Poulopoulos
69 04733cdb Leonidas Poulopoulos
class CustomPKPet(models.Model):
70 04733cdb Leonidas Poulopoulos
    name = models.CharField(max_length=50, primary_key=True)
71 04733cdb Leonidas Poulopoulos
72 04733cdb Leonidas Poulopoulos
    tags = TaggableManager(through=TaggedCustomPKPet)
73 04733cdb Leonidas Poulopoulos
74 04733cdb Leonidas Poulopoulos
    def __unicode__(self):
75 04733cdb Leonidas Poulopoulos
        return self.name
76 04733cdb Leonidas Poulopoulos
77 04733cdb Leonidas Poulopoulos
class CustomPKHousePet(CustomPKPet):
78 04733cdb Leonidas Poulopoulos
    trained = models.BooleanField()
79 04733cdb Leonidas Poulopoulos
80 04733cdb Leonidas Poulopoulos
# Test custom through model to a custom tag model
81 04733cdb Leonidas Poulopoulos
82 04733cdb Leonidas Poulopoulos
class OfficialTag(TagBase):
83 04733cdb Leonidas Poulopoulos
    official = models.BooleanField()
84 04733cdb Leonidas Poulopoulos
85 04733cdb Leonidas Poulopoulos
class OfficialThroughModel(GenericTaggedItemBase):
86 04733cdb Leonidas Poulopoulos
    tag = models.ForeignKey(OfficialTag, related_name="tagged_items")
87 04733cdb Leonidas Poulopoulos
88 04733cdb Leonidas Poulopoulos
class OfficialFood(models.Model):
89 04733cdb Leonidas Poulopoulos
    name = models.CharField(max_length=50)
90 04733cdb Leonidas Poulopoulos
91 04733cdb Leonidas Poulopoulos
    tags = TaggableManager(through=OfficialThroughModel)
92 04733cdb Leonidas Poulopoulos
93 04733cdb Leonidas Poulopoulos
    def __unicode__(self):
94 04733cdb Leonidas Poulopoulos
        return self.name
95 04733cdb Leonidas Poulopoulos
96 04733cdb Leonidas Poulopoulos
class OfficialPet(models.Model):
97 04733cdb Leonidas Poulopoulos
    name = models.CharField(max_length=50)
98 04733cdb Leonidas Poulopoulos
99 04733cdb Leonidas Poulopoulos
    tags = TaggableManager(through=OfficialThroughModel)
100 04733cdb Leonidas Poulopoulos
101 04733cdb Leonidas Poulopoulos
    def __unicode__(self):
102 04733cdb Leonidas Poulopoulos
        return self.name
103 04733cdb Leonidas Poulopoulos
104 04733cdb Leonidas Poulopoulos
class OfficialHousePet(OfficialPet):
105 04733cdb Leonidas Poulopoulos
    trained = models.BooleanField()
106 04733cdb Leonidas Poulopoulos
107 04733cdb Leonidas Poulopoulos
108 04733cdb Leonidas Poulopoulos
class Media(models.Model):
109 04733cdb Leonidas Poulopoulos
    tags = TaggableManager()
110 04733cdb Leonidas Poulopoulos
111 04733cdb Leonidas Poulopoulos
    class Meta:
112 04733cdb Leonidas Poulopoulos
        abstract = True
113 04733cdb Leonidas Poulopoulos
114 04733cdb Leonidas Poulopoulos
class Photo(Media):
115 04733cdb Leonidas Poulopoulos
    pass
116 04733cdb Leonidas Poulopoulos
117 04733cdb Leonidas Poulopoulos
class Movie(Media):
118 04733cdb Leonidas Poulopoulos
    pass
119 04733cdb Leonidas Poulopoulos
120 04733cdb Leonidas Poulopoulos
121 04733cdb Leonidas Poulopoulos
class ArticleTag(Tag):
122 04733cdb Leonidas Poulopoulos
    class Meta:
123 04733cdb Leonidas Poulopoulos
        proxy = True
124 04733cdb Leonidas Poulopoulos
125 04733cdb Leonidas Poulopoulos
    def slugify(self, tag, i=None):
126 04733cdb Leonidas Poulopoulos
        slug = "category-%s" % tag.lower()
127 04733cdb Leonidas Poulopoulos
128 04733cdb Leonidas Poulopoulos
        if i is not None:
129 04733cdb Leonidas Poulopoulos
            slug += "-%d" % i
130 04733cdb Leonidas Poulopoulos
        return slug
131 04733cdb Leonidas Poulopoulos
132 04733cdb Leonidas Poulopoulos
class ArticleTaggedItem(TaggedItem):
133 04733cdb Leonidas Poulopoulos
    class Meta:
134 04733cdb Leonidas Poulopoulos
        proxy = True
135 04733cdb Leonidas Poulopoulos
136 04733cdb Leonidas Poulopoulos
    @classmethod
137 04733cdb Leonidas Poulopoulos
    def tag_model(self):
138 04733cdb Leonidas Poulopoulos
        return ArticleTag
139 04733cdb Leonidas Poulopoulos
140 04733cdb Leonidas Poulopoulos
class Article(models.Model):
141 04733cdb Leonidas Poulopoulos
    title = models.CharField(max_length=100)
142 04733cdb Leonidas Poulopoulos
143 04733cdb Leonidas Poulopoulos
    tags = TaggableManager(through=ArticleTaggedItem)