Coverage for src/products/migrations/0001_initial.py: 100%
8 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-04 12:59 +0300
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-04 12:59 +0300
1# Generated by Django 5.2.1 on 2025-07-21 16:26
3import django.core.validators
4import django.db.models.deletion
5from django.conf import settings
6from django.db import migrations, models
9class Migration(migrations.Migration):
11 initial = True
13 dependencies = [
14 ('contenttypes', '0002_remove_content_type_name'),
15 migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16 ]
18 operations = [
19 migrations.CreateModel(
20 name='Collection',
21 fields=[
22 (
23 'id',
24 models.BigAutoField(
25 auto_created=True,
26 primary_key=True,
27 serialize=False,
28 verbose_name='ID',
29 ),
30 ),
31 ('name', models.CharField(max_length=30, unique=True)),
32 ],
33 options={
34 'abstract': False,
35 },
36 ),
37 migrations.CreateModel(
38 name='Color',
39 fields=[
40 (
41 'id',
42 models.BigAutoField(
43 auto_created=True,
44 primary_key=True,
45 serialize=False,
46 verbose_name='ID',
47 ),
48 ),
49 ('name', models.CharField(max_length=30, unique=True)),
50 ],
51 options={
52 'abstract': False,
53 },
54 ),
55 migrations.CreateModel(
56 name='Metal',
57 fields=[
58 (
59 'id',
60 models.BigAutoField(
61 auto_created=True,
62 primary_key=True,
63 serialize=False,
64 verbose_name='ID',
65 ),
66 ),
67 ('name', models.CharField(max_length=30, unique=True)),
68 ],
69 options={
70 'abstract': False,
71 },
72 ),
73 migrations.CreateModel(
74 name='Size',
75 fields=[
76 (
77 'id',
78 models.BigAutoField(
79 auto_created=True,
80 primary_key=True,
81 serialize=False,
82 verbose_name='ID',
83 ),
84 ),
85 ('name', models.CharField(max_length=30, unique=True)),
86 ],
87 options={
88 'abstract': False,
89 },
90 ),
91 migrations.CreateModel(
92 name='Stone',
93 fields=[
94 (
95 'id',
96 models.BigAutoField(
97 auto_created=True,
98 primary_key=True,
99 serialize=False,
100 verbose_name='ID',
101 ),
102 ),
103 ('name', models.CharField(max_length=30, unique=True)),
104 ],
105 options={
106 'abstract': False,
107 },
108 ),
109 migrations.CreateModel(
110 name='Inventory',
111 fields=[
112 (
113 'id',
114 models.BigAutoField(
115 auto_created=True,
116 primary_key=True,
117 serialize=False,
118 verbose_name='ID',
119 ),
120 ),
121 ('quantity', models.PositiveIntegerField(default=5)),
122 (
123 'price',
124 models.DecimalField(
125 decimal_places=2,
126 max_digits=7,
127 validators=[
128 django.core.validators.MinValueValidator(0)
129 ],
130 ),
131 ),
132 ('object_id', models.PositiveIntegerField()),
133 (
134 'content_type',
135 models.ForeignKey(
136 on_delete=django.db.models.deletion.CASCADE,
137 to='contenttypes.contenttype',
138 ),
139 ),
140 (
141 'size',
142 models.ForeignKey(
143 on_delete=django.db.models.deletion.CASCADE,
144 to='products.size',
145 ),
146 ),
147 ],
148 options={
149 'ordering': ['id'],
150 },
151 ),
152 migrations.CreateModel(
153 name='Neckwear',
154 fields=[
155 (
156 'id',
157 models.BigAutoField(
158 auto_created=True,
159 primary_key=True,
160 serialize=False,
161 verbose_name='ID',
162 ),
163 ),
164 ('first_image', models.URLField(unique=True)),
165 ('second_image', models.URLField(unique=True)),
166 ('created_at', models.DateTimeField(auto_now_add=True)),
167 (
168 'collection',
169 models.ForeignKey(
170 on_delete=django.db.models.deletion.CASCADE,
171 to='products.collection',
172 ),
173 ),
174 (
175 'color',
176 models.ForeignKey(
177 on_delete=django.db.models.deletion.CASCADE,
178 to='products.color',
179 ),
180 ),
181 (
182 'metal',
183 models.ForeignKey(
184 on_delete=django.db.models.deletion.CASCADE,
185 to='products.metal',
186 ),
187 ),
188 (
189 'stone',
190 models.ForeignKey(
191 on_delete=django.db.models.deletion.CASCADE,
192 to='products.stone',
193 ),
194 ),
195 ],
196 options={
197 'abstract': False,
198 },
199 ),
200 migrations.CreateModel(
201 name='Fingerwear',
202 fields=[
203 (
204 'id',
205 models.BigAutoField(
206 auto_created=True,
207 primary_key=True,
208 serialize=False,
209 verbose_name='ID',
210 ),
211 ),
212 ('first_image', models.URLField(unique=True)),
213 ('second_image', models.URLField(unique=True)),
214 ('created_at', models.DateTimeField(auto_now_add=True)),
215 (
216 'collection',
217 models.ForeignKey(
218 on_delete=django.db.models.deletion.CASCADE,
219 to='products.collection',
220 ),
221 ),
222 (
223 'color',
224 models.ForeignKey(
225 on_delete=django.db.models.deletion.CASCADE,
226 to='products.color',
227 ),
228 ),
229 (
230 'metal',
231 models.ForeignKey(
232 on_delete=django.db.models.deletion.CASCADE,
233 to='products.metal',
234 ),
235 ),
236 (
237 'stone',
238 models.ForeignKey(
239 on_delete=django.db.models.deletion.CASCADE,
240 to='products.stone',
241 ),
242 ),
243 ],
244 options={
245 'abstract': False,
246 },
247 ),
248 migrations.CreateModel(
249 name='Earwear',
250 fields=[
251 (
252 'id',
253 models.BigAutoField(
254 auto_created=True,
255 primary_key=True,
256 serialize=False,
257 verbose_name='ID',
258 ),
259 ),
260 ('first_image', models.URLField(unique=True)),
261 ('second_image', models.URLField(unique=True)),
262 ('created_at', models.DateTimeField(auto_now_add=True)),
263 (
264 'collection',
265 models.ForeignKey(
266 on_delete=django.db.models.deletion.CASCADE,
267 to='products.collection',
268 ),
269 ),
270 (
271 'color',
272 models.ForeignKey(
273 on_delete=django.db.models.deletion.CASCADE,
274 to='products.color',
275 ),
276 ),
277 (
278 'metal',
279 models.ForeignKey(
280 on_delete=django.db.models.deletion.CASCADE,
281 to='products.metal',
282 ),
283 ),
284 (
285 'stone',
286 models.ForeignKey(
287 on_delete=django.db.models.deletion.CASCADE,
288 to='products.stone',
289 ),
290 ),
291 ],
292 options={
293 'abstract': False,
294 },
295 ),
296 migrations.CreateModel(
297 name='Wristwear',
298 fields=[
299 (
300 'id',
301 models.BigAutoField(
302 auto_created=True,
303 primary_key=True,
304 serialize=False,
305 verbose_name='ID',
306 ),
307 ),
308 ('first_image', models.URLField(unique=True)),
309 ('second_image', models.URLField(unique=True)),
310 ('created_at', models.DateTimeField(auto_now_add=True)),
311 (
312 'collection',
313 models.ForeignKey(
314 on_delete=django.db.models.deletion.CASCADE,
315 to='products.collection',
316 ),
317 ),
318 (
319 'color',
320 models.ForeignKey(
321 on_delete=django.db.models.deletion.CASCADE,
322 to='products.color',
323 ),
324 ),
325 (
326 'metal',
327 models.ForeignKey(
328 on_delete=django.db.models.deletion.CASCADE,
329 to='products.metal',
330 ),
331 ),
332 (
333 'stone',
334 models.ForeignKey(
335 on_delete=django.db.models.deletion.CASCADE,
336 to='products.stone',
337 ),
338 ),
339 ],
340 options={
341 'abstract': False,
342 },
343 ),
344 migrations.CreateModel(
345 name='Review',
346 fields=[
347 (
348 'id',
349 models.BigAutoField(
350 auto_created=True,
351 primary_key=True,
352 serialize=False,
353 verbose_name='ID',
354 ),
355 ),
356 (
357 'rating',
358 models.IntegerField(
359 choices=[
360 (1, '1'),
361 (2, '2'),
362 (3, '3'),
363 (4, '4'),
364 (5, '5'),
365 ]
366 ),
367 ),
368 (
369 'comment',
370 models.TextField(
371 validators=[
372 django.core.validators.MaxLengthValidator(300)
373 ]
374 ),
375 ),
376 ('approved', models.BooleanField(default=False)),
377 ('created_at', models.DateTimeField(auto_now_add=True)),
378 ('object_id', models.PositiveIntegerField()),
379 (
380 'content_type',
381 models.ForeignKey(
382 on_delete=django.db.models.deletion.CASCADE,
383 to='contenttypes.contenttype',
384 ),
385 ),
386 (
387 'user',
388 models.ForeignKey(
389 on_delete=django.db.models.deletion.CASCADE,
390 to=settings.AUTH_USER_MODEL,
391 ),
392 ),
393 ],
394 options={
395 'ordering': ['-created_at'],
396 'permissions': [('approve_review', 'Can approve reviews')],
397 'unique_together': {('user', 'content_type', 'object_id')},
398 },
399 ),
400 ]