Coverage for src/products/migrations/0001_initial.py: 100%
8 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-09-21 16:24 +0300
« prev ^ index » next coverage.py v7.9.2, created at 2025-09-21 16:24 +0300
1# Generated by Django 5.2.1 on 2025-09-20 12:20
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='Ring',
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 ('third_image', models.URLField(unique=True)),
167 ('fourth_image', models.URLField(unique=True)),
168 ('created_at', models.DateTimeField(auto_now_add=True)),
169 (
170 'target_gender',
171 models.CharField(
172 blank=True,
173 choices=[('M', 'Male'), ('F', 'Female')],
174 default='F',
175 max_length=1,
176 null=True,
177 ),
178 ),
179 (
180 'collection',
181 models.ForeignKey(
182 on_delete=django.db.models.deletion.CASCADE,
183 to='products.collection',
184 ),
185 ),
186 (
187 'color',
188 models.ForeignKey(
189 on_delete=django.db.models.deletion.CASCADE,
190 to='products.color',
191 ),
192 ),
193 (
194 'metal',
195 models.ForeignKey(
196 on_delete=django.db.models.deletion.CASCADE,
197 to='products.metal',
198 ),
199 ),
200 (
201 'stone',
202 models.ForeignKey(
203 on_delete=django.db.models.deletion.CASCADE,
204 to='products.stone',
205 ),
206 ),
207 ],
208 options={
209 'abstract': False,
210 },
211 ),
212 migrations.CreateModel(
213 name='Pendant',
214 fields=[
215 (
216 'id',
217 models.BigAutoField(
218 auto_created=True,
219 primary_key=True,
220 serialize=False,
221 verbose_name='ID',
222 ),
223 ),
224 ('first_image', models.URLField(unique=True)),
225 ('second_image', models.URLField(unique=True)),
226 ('third_image', models.URLField(unique=True)),
227 ('fourth_image', models.URLField(unique=True)),
228 ('created_at', models.DateTimeField(auto_now_add=True)),
229 (
230 'target_gender',
231 models.CharField(
232 blank=True,
233 choices=[('M', 'Male'), ('F', 'Female')],
234 default='F',
235 max_length=1,
236 null=True,
237 ),
238 ),
239 (
240 'collection',
241 models.ForeignKey(
242 on_delete=django.db.models.deletion.CASCADE,
243 to='products.collection',
244 ),
245 ),
246 (
247 'color',
248 models.ForeignKey(
249 on_delete=django.db.models.deletion.CASCADE,
250 to='products.color',
251 ),
252 ),
253 (
254 'metal',
255 models.ForeignKey(
256 on_delete=django.db.models.deletion.CASCADE,
257 to='products.metal',
258 ),
259 ),
260 (
261 'stone',
262 models.ForeignKey(
263 on_delete=django.db.models.deletion.CASCADE,
264 to='products.stone',
265 ),
266 ),
267 ],
268 options={
269 'abstract': False,
270 },
271 ),
272 migrations.CreateModel(
273 name='Necklace',
274 fields=[
275 (
276 'id',
277 models.BigAutoField(
278 auto_created=True,
279 primary_key=True,
280 serialize=False,
281 verbose_name='ID',
282 ),
283 ),
284 ('first_image', models.URLField(unique=True)),
285 ('second_image', models.URLField(unique=True)),
286 ('third_image', models.URLField(unique=True)),
287 ('fourth_image', models.URLField(unique=True)),
288 ('created_at', models.DateTimeField(auto_now_add=True)),
289 (
290 'target_gender',
291 models.CharField(
292 blank=True,
293 choices=[('M', 'Male'), ('F', 'Female')],
294 default='F',
295 max_length=1,
296 null=True,
297 ),
298 ),
299 (
300 'collection',
301 models.ForeignKey(
302 on_delete=django.db.models.deletion.CASCADE,
303 to='products.collection',
304 ),
305 ),
306 (
307 'color',
308 models.ForeignKey(
309 on_delete=django.db.models.deletion.CASCADE,
310 to='products.color',
311 ),
312 ),
313 (
314 'metal',
315 models.ForeignKey(
316 on_delete=django.db.models.deletion.CASCADE,
317 to='products.metal',
318 ),
319 ),
320 (
321 'stone',
322 models.ForeignKey(
323 on_delete=django.db.models.deletion.CASCADE,
324 to='products.stone',
325 ),
326 ),
327 ],
328 options={
329 'abstract': False,
330 },
331 ),
332 migrations.CreateModel(
333 name='Earring',
334 fields=[
335 (
336 'id',
337 models.BigAutoField(
338 auto_created=True,
339 primary_key=True,
340 serialize=False,
341 verbose_name='ID',
342 ),
343 ),
344 ('first_image', models.URLField(unique=True)),
345 ('second_image', models.URLField(unique=True)),
346 ('third_image', models.URLField(unique=True)),
347 ('fourth_image', models.URLField(unique=True)),
348 ('created_at', models.DateTimeField(auto_now_add=True)),
349 (
350 'target_gender',
351 models.CharField(
352 blank=True,
353 choices=[('M', 'Male'), ('F', 'Female')],
354 default='F',
355 max_length=1,
356 null=True,
357 ),
358 ),
359 (
360 'collection',
361 models.ForeignKey(
362 on_delete=django.db.models.deletion.CASCADE,
363 to='products.collection',
364 ),
365 ),
366 (
367 'color',
368 models.ForeignKey(
369 on_delete=django.db.models.deletion.CASCADE,
370 to='products.color',
371 ),
372 ),
373 (
374 'metal',
375 models.ForeignKey(
376 on_delete=django.db.models.deletion.CASCADE,
377 to='products.metal',
378 ),
379 ),
380 (
381 'stone',
382 models.ForeignKey(
383 on_delete=django.db.models.deletion.CASCADE,
384 to='products.stone',
385 ),
386 ),
387 ],
388 options={
389 'abstract': False,
390 },
391 ),
392 migrations.CreateModel(
393 name='Bracelet',
394 fields=[
395 (
396 'id',
397 models.BigAutoField(
398 auto_created=True,
399 primary_key=True,
400 serialize=False,
401 verbose_name='ID',
402 ),
403 ),
404 ('first_image', models.URLField(unique=True)),
405 ('second_image', models.URLField(unique=True)),
406 ('third_image', models.URLField(unique=True)),
407 ('fourth_image', models.URLField(unique=True)),
408 ('created_at', models.DateTimeField(auto_now_add=True)),
409 (
410 'target_gender',
411 models.CharField(
412 blank=True,
413 choices=[('M', 'Male'), ('F', 'Female')],
414 default='F',
415 max_length=1,
416 null=True,
417 ),
418 ),
419 (
420 'collection',
421 models.ForeignKey(
422 on_delete=django.db.models.deletion.CASCADE,
423 to='products.collection',
424 ),
425 ),
426 (
427 'color',
428 models.ForeignKey(
429 on_delete=django.db.models.deletion.CASCADE,
430 to='products.color',
431 ),
432 ),
433 (
434 'metal',
435 models.ForeignKey(
436 on_delete=django.db.models.deletion.CASCADE,
437 to='products.metal',
438 ),
439 ),
440 (
441 'stone',
442 models.ForeignKey(
443 on_delete=django.db.models.deletion.CASCADE,
444 to='products.stone',
445 ),
446 ),
447 ],
448 options={
449 'abstract': False,
450 },
451 ),
452 migrations.CreateModel(
453 name='Watch',
454 fields=[
455 (
456 'id',
457 models.BigAutoField(
458 auto_created=True,
459 primary_key=True,
460 serialize=False,
461 verbose_name='ID',
462 ),
463 ),
464 ('first_image', models.URLField(unique=True)),
465 ('second_image', models.URLField(unique=True)),
466 ('third_image', models.URLField(unique=True)),
467 ('fourth_image', models.URLField(unique=True)),
468 ('created_at', models.DateTimeField(auto_now_add=True)),
469 (
470 'target_gender',
471 models.CharField(
472 blank=True,
473 choices=[('M', 'Male'), ('F', 'Female')],
474 default='F',
475 max_length=1,
476 null=True,
477 ),
478 ),
479 (
480 'collection',
481 models.ForeignKey(
482 on_delete=django.db.models.deletion.CASCADE,
483 to='products.collection',
484 ),
485 ),
486 (
487 'color',
488 models.ForeignKey(
489 on_delete=django.db.models.deletion.CASCADE,
490 to='products.color',
491 ),
492 ),
493 (
494 'metal',
495 models.ForeignKey(
496 on_delete=django.db.models.deletion.CASCADE,
497 to='products.metal',
498 ),
499 ),
500 (
501 'stone',
502 models.ForeignKey(
503 on_delete=django.db.models.deletion.CASCADE,
504 to='products.stone',
505 ),
506 ),
507 ],
508 options={
509 'abstract': False,
510 },
511 ),
512 migrations.CreateModel(
513 name='Review',
514 fields=[
515 (
516 'id',
517 models.BigAutoField(
518 auto_created=True,
519 primary_key=True,
520 serialize=False,
521 verbose_name='ID',
522 ),
523 ),
524 (
525 'rating',
526 models.IntegerField(
527 choices=[
528 (1, '1'),
529 (2, '2'),
530 (3, '3'),
531 (4, '4'),
532 (5, '5'),
533 ]
534 ),
535 ),
536 (
537 'comment',
538 models.TextField(
539 validators=[
540 django.core.validators.MaxLengthValidator(300)
541 ]
542 ),
543 ),
544 ('approved', models.BooleanField(default=False)),
545 ('created_at', models.DateTimeField(auto_now_add=True)),
546 ('object_id', models.PositiveIntegerField()),
547 (
548 'content_type',
549 models.ForeignKey(
550 on_delete=django.db.models.deletion.CASCADE,
551 to='contenttypes.contenttype',
552 ),
553 ),
554 (
555 'user',
556 models.ForeignKey(
557 on_delete=django.db.models.deletion.CASCADE,
558 to=settings.AUTH_USER_MODEL,
559 ),
560 ),
561 ],
562 options={
563 'ordering': ['-created_at'],
564 'permissions': [('approve_review', 'Can approve reviews')],
565 'unique_together': {('user', 'content_type', 'object_id')},
566 },
567 ),
568 ]