1 """ |
|
2 A test spanning all the capabilities of all the serializers. |
|
3 |
|
4 This class sets up a model for each model field type |
|
5 (except for image types, because of the PIL dependency). |
|
6 """ |
|
7 |
|
8 from django.db import models |
|
9 from django.contrib.contenttypes.models import ContentType |
|
10 |
|
11 # The following classes are for testing basic data |
|
12 # marshalling, including NULL values. |
|
13 |
|
14 class BooleanData(models.Model): |
|
15 data = models.BooleanField(null=True) |
|
16 |
|
17 class CharData(models.Model): |
|
18 data = models.CharField(maxlength=30, null=True) |
|
19 |
|
20 class DateData(models.Model): |
|
21 data = models.DateField(null=True) |
|
22 |
|
23 class DateTimeData(models.Model): |
|
24 data = models.DateTimeField(null=True) |
|
25 |
|
26 class EmailData(models.Model): |
|
27 data = models.EmailField(null=True) |
|
28 |
|
29 class FileData(models.Model): |
|
30 data = models.FileField(null=True, upload_to='/foo/bar') |
|
31 |
|
32 class FilePathData(models.Model): |
|
33 data = models.FilePathField(null=True) |
|
34 |
|
35 class FloatData(models.Model): |
|
36 data = models.FloatField(null=True, decimal_places=3, max_digits=5) |
|
37 |
|
38 class IntegerData(models.Model): |
|
39 data = models.IntegerField(null=True) |
|
40 |
|
41 # class ImageData(models.Model): |
|
42 # data = models.ImageField(null=True) |
|
43 |
|
44 class IPAddressData(models.Model): |
|
45 data = models.IPAddressField(null=True) |
|
46 |
|
47 class NullBooleanData(models.Model): |
|
48 data = models.NullBooleanField(null=True) |
|
49 |
|
50 class PhoneData(models.Model): |
|
51 data = models.PhoneNumberField(null=True) |
|
52 |
|
53 class PositiveIntegerData(models.Model): |
|
54 data = models.PositiveIntegerField(null=True) |
|
55 |
|
56 class PositiveSmallIntegerData(models.Model): |
|
57 data = models.PositiveSmallIntegerField(null=True) |
|
58 |
|
59 class SlugData(models.Model): |
|
60 data = models.SlugField(null=True) |
|
61 |
|
62 class SmallData(models.Model): |
|
63 data = models.SmallIntegerField(null=True) |
|
64 |
|
65 class TextData(models.Model): |
|
66 data = models.TextField(null=True) |
|
67 |
|
68 class TimeData(models.Model): |
|
69 data = models.TimeField(null=True) |
|
70 |
|
71 class USStateData(models.Model): |
|
72 data = models.USStateField(null=True) |
|
73 |
|
74 class XMLData(models.Model): |
|
75 data = models.XMLField(null=True) |
|
76 |
|
77 class Tag(models.Model): |
|
78 """A tag on an item.""" |
|
79 data = models.SlugField() |
|
80 content_type = models.ForeignKey(ContentType) |
|
81 object_id = models.PositiveIntegerField() |
|
82 |
|
83 content_object = models.GenericForeignKey() |
|
84 |
|
85 class Meta: |
|
86 ordering = ["data"] |
|
87 |
|
88 class GenericData(models.Model): |
|
89 data = models.CharField(maxlength=30) |
|
90 |
|
91 tags = models.GenericRelation(Tag) |
|
92 |
|
93 # The following test classes are all for validation |
|
94 # of related objects; in particular, forward, backward, |
|
95 # and self references. |
|
96 |
|
97 class Anchor(models.Model): |
|
98 """This is a model that can be used as |
|
99 something for other models to point at""" |
|
100 |
|
101 data = models.CharField(maxlength=30) |
|
102 |
|
103 class FKData(models.Model): |
|
104 data = models.ForeignKey(Anchor, null=True) |
|
105 |
|
106 class M2MData(models.Model): |
|
107 data = models.ManyToManyField(Anchor, null=True) |
|
108 |
|
109 class O2OData(models.Model): |
|
110 data = models.OneToOneField(Anchor, null=True) |
|
111 |
|
112 class FKSelfData(models.Model): |
|
113 data = models.ForeignKey('self', null=True) |
|
114 |
|
115 class M2MSelfData(models.Model): |
|
116 data = models.ManyToManyField('self', null=True, symmetrical=False) |
|
117 |
|
118 # The following test classes are for validating the |
|
119 # deserialization of objects that use a user-defined |
|
120 # field as the primary key. |
|
121 # Some of these data types have been commented out |
|
122 # because they can't be used as a primary key on one |
|
123 # or all database backends. |
|
124 |
|
125 class BooleanPKData(models.Model): |
|
126 data = models.BooleanField(primary_key=True) |
|
127 |
|
128 class CharPKData(models.Model): |
|
129 data = models.CharField(maxlength=30, primary_key=True) |
|
130 |
|
131 # class DatePKData(models.Model): |
|
132 # data = models.DateField(primary_key=True) |
|
133 |
|
134 # class DateTimePKData(models.Model): |
|
135 # data = models.DateTimeField(primary_key=True) |
|
136 |
|
137 class EmailPKData(models.Model): |
|
138 data = models.EmailField(primary_key=True) |
|
139 |
|
140 class FilePKData(models.Model): |
|
141 data = models.FileField(primary_key=True, upload_to='/foo/bar') |
|
142 |
|
143 class FilePathPKData(models.Model): |
|
144 data = models.FilePathField(primary_key=True) |
|
145 |
|
146 class FloatPKData(models.Model): |
|
147 data = models.FloatField(primary_key=True, decimal_places=3, max_digits=5) |
|
148 |
|
149 class IntegerPKData(models.Model): |
|
150 data = models.IntegerField(primary_key=True) |
|
151 |
|
152 # class ImagePKData(models.Model): |
|
153 # data = models.ImageField(primary_key=True) |
|
154 |
|
155 class IPAddressPKData(models.Model): |
|
156 data = models.IPAddressField(primary_key=True) |
|
157 |
|
158 class NullBooleanPKData(models.Model): |
|
159 data = models.NullBooleanField(primary_key=True) |
|
160 |
|
161 class PhonePKData(models.Model): |
|
162 data = models.PhoneNumberField(primary_key=True) |
|
163 |
|
164 class PositiveIntegerPKData(models.Model): |
|
165 data = models.PositiveIntegerField(primary_key=True) |
|
166 |
|
167 class PositiveSmallIntegerPKData(models.Model): |
|
168 data = models.PositiveSmallIntegerField(primary_key=True) |
|
169 |
|
170 class SlugPKData(models.Model): |
|
171 data = models.SlugField(primary_key=True) |
|
172 |
|
173 class SmallPKData(models.Model): |
|
174 data = models.SmallIntegerField(primary_key=True) |
|
175 |
|
176 # class TextPKData(models.Model): |
|
177 # data = models.TextField(primary_key=True) |
|
178 |
|
179 # class TimePKData(models.Model): |
|
180 # data = models.TimeField(primary_key=True) |
|
181 |
|
182 class USStatePKData(models.Model): |
|
183 data = models.USStateField(primary_key=True) |
|
184 |
|
185 # class XMLPKData(models.Model): |
|
186 # data = models.XMLField(primary_key=True) |
|
187 |
|