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