update
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-22 11:39
|
||||
# Generated by Django 5.2.7 on 2025-12-06 15:57
|
||||
|
||||
import django.core.validators
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
@@ -8,27 +11,330 @@ class Migration(migrations.Migration):
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('accounts', '0001_initial'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Banner',
|
||||
name='AdTopPlanModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=255, unique=True, verbose_name='Plan Name')),
|
||||
('price', models.DecimalField(decimal_places=2, max_digits=10, validators=[django.core.validators.MinValueValidator(0)], verbose_name='Price')),
|
||||
('duration', models.PositiveIntegerField(verbose_name='Duration (days)')),
|
||||
('description', models.TextField(blank=True, verbose_name='Description')),
|
||||
('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ad Top Plan',
|
||||
'verbose_name_plural': 'Ad Top Plans',
|
||||
'db_table': 'ad_top_plan',
|
||||
'ordering': ['price'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='BannerModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('title', models.CharField(max_length=255, verbose_name='Title')),
|
||||
('description', models.TextField(verbose_name='Description')),
|
||||
('mobile_image', models.ImageField(upload_to='banner/mobile_image/', verbose_name='Mobile Image')),
|
||||
('desktop_image', models.ImageField(upload_to='banner/desktop_image/', verbose_name='Desktop Image')),
|
||||
('mobile_image', models.ImageField(upload_to='banners/mobile/', verbose_name='Mobile Image')),
|
||||
('desktop_image', models.ImageField(upload_to='banners/desktop/', verbose_name='Desktop Image')),
|
||||
('link', models.URLField(verbose_name='Link')),
|
||||
('bg_color', models.CharField(max_length=255, verbose_name='BG Color')),
|
||||
('text_color', models.CharField(max_length=255, verbose_name='Text Color')),
|
||||
('bg_color', models.CharField(default='#FFFFFF', max_length=7, verbose_name='Background Color')),
|
||||
('text_color', models.CharField(default='#000000', max_length=7, verbose_name='Text Color')),
|
||||
('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
|
||||
('order', models.PositiveIntegerField(default=0, verbose_name='Display Order')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Banner',
|
||||
'verbose_name_plural': 'Banners',
|
||||
'db_table': 'banner',
|
||||
'ordering': ['order', '-created_at'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ColorModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=255, unique=True, verbose_name='Name')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Color',
|
||||
'verbose_name_plural': 'Colors',
|
||||
'db_table': 'color',
|
||||
'ordering': ['name'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TagsModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=255, unique=True, verbose_name='Tag Name')),
|
||||
('slug', models.SlugField(max_length=255, unique=True, verbose_name='Slug')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Tag',
|
||||
'verbose_name_plural': 'Tags',
|
||||
'db_table': 'tags',
|
||||
'ordering': ['name'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AdModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=255, verbose_name='Name')),
|
||||
('ad_type', models.CharField(choices=[('Buy', 'Buy'), ('Sell', 'Sell')], max_length=255, verbose_name='Type')),
|
||||
('ad_category_type', models.CharField(choices=[('Product', 'Product'), ('Service', 'Service'), ('Auto', 'Auto'), ('Home', 'Home')], max_length=255, verbose_name='Category Type')),
|
||||
('_price', models.DecimalField(blank=True, db_column='price', decimal_places=2, max_digits=10, null=True, verbose_name='Price')),
|
||||
('discount', models.DecimalField(decimal_places=2, default=-1, max_digits=10, verbose_name='Discount')),
|
||||
('is_available', models.BooleanField(default=True, verbose_name='Is available')),
|
||||
('physical_product', models.BooleanField(default=False, verbose_name='Physical product')),
|
||||
('image', models.ImageField(upload_to='ads/', verbose_name='Image')),
|
||||
('description', models.TextField(verbose_name='Description')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ads', to=settings.AUTH_USER_MODEL, verbose_name='User')),
|
||||
('plan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.adtopplanmodel', verbose_name='Plan')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ad',
|
||||
'verbose_name_plural': 'Ads',
|
||||
'db_table': 'ad',
|
||||
'ordering': ['-created_at'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AdSizeModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('weight', models.PositiveIntegerField(verbose_name='Weight (g)')),
|
||||
('width', models.PositiveIntegerField(verbose_name='Width (cm)')),
|
||||
('height', models.PositiveIntegerField(verbose_name='Height (cm)')),
|
||||
('length', models.PositiveIntegerField(verbose_name='Length (cm)')),
|
||||
('ad', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='size_info', to='api.admodel', verbose_name='Ad')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ad Size',
|
||||
'verbose_name_plural': 'Ad Sizes',
|
||||
'db_table': 'ad_size',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AdVariantModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('value', models.CharField(max_length=255, verbose_name='Value')),
|
||||
('is_available', models.BooleanField(default=True, verbose_name='Is Available')),
|
||||
('price', models.DecimalField(decimal_places=2, max_digits=10, validators=[django.core.validators.MinValueValidator(0)], verbose_name='Price')),
|
||||
('stock_quantity', models.PositiveIntegerField(default=0, verbose_name='Stock Quantity')),
|
||||
('ad', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='variants', to='api.admodel', verbose_name='Ad')),
|
||||
('color', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='api.colormodel', verbose_name='Color')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ad Variant',
|
||||
'verbose_name_plural': 'Ad Variants',
|
||||
'db_table': 'ad_variant',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CategoryModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=255, verbose_name='Category Name')),
|
||||
('name_uz', models.CharField(max_length=255, null=True, verbose_name='Category Name')),
|
||||
('name_ru', models.CharField(max_length=255, null=True, verbose_name='Category Name')),
|
||||
('name_en', models.CharField(max_length=255, null=True, verbose_name='Category Name')),
|
||||
('show_home', models.BooleanField(default=False, verbose_name='Show on Home')),
|
||||
('level', models.IntegerField(default=0, editable=False, verbose_name='Level')),
|
||||
('image', models.ImageField(blank=True, null=True, upload_to='categories/', verbose_name='Image')),
|
||||
('category_type', models.CharField(choices=[('Product', 'Product'), ('Service', 'Service'), ('Auto', 'Auto'), ('Home', 'Home')], default='Product', max_length=255, verbose_name='Category Type')),
|
||||
('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='api.categorymodel', verbose_name='Parent Category')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Category',
|
||||
'verbose_name_plural': 'Categories',
|
||||
'db_table': 'category',
|
||||
'ordering': ['level', 'name'],
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='admodel',
|
||||
name='category',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.categorymodel', verbose_name='Category'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='FeedbackModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('star', models.IntegerField(default=5, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(5)], verbose_name='Rating')),
|
||||
('comment', models.TextField(max_length=1000, verbose_name='Comment')),
|
||||
('ad', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='feedbacks', to='api.admodel', verbose_name='Ad')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='feedbacks', to=settings.AUTH_USER_MODEL, verbose_name='User')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Feedback',
|
||||
'verbose_name_plural': 'Feedbacks',
|
||||
'db_table': 'feedback',
|
||||
'ordering': ['-created_at'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='FeedbackImageModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('image', models.ImageField(upload_to='feedbacks/', verbose_name='Image')),
|
||||
('feedback', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='api.feedbackmodel', verbose_name='Feedback')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Feedback Image',
|
||||
'verbose_name_plural': 'Feedback Images',
|
||||
'db_table': 'feedback_images',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='OrderModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('status', models.CharField(choices=[('Pending', 'Pending'), ('Cancel', 'Cancel'), ('Done', 'Done')], db_index=True, max_length=255, verbose_name='Status')),
|
||||
('total_amount', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Total Amount')),
|
||||
('address', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='accounts.address', verbose_name='Address')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='orders', to=settings.AUTH_USER_MODEL, verbose_name='User')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Order',
|
||||
'verbose_name_plural': 'Orders',
|
||||
'db_table': 'order',
|
||||
'ordering': ['-created_at'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='OrderItemModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('price', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Price')),
|
||||
('quantity', models.PositiveIntegerField(default=1, verbose_name='Quantity')),
|
||||
('ad', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='api.admodel', verbose_name='Ad')),
|
||||
('order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='api.ordermodel', verbose_name='Order')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Order Item',
|
||||
'verbose_name_plural': 'Order Items',
|
||||
'db_table': 'order_item',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='admodel',
|
||||
name='tags',
|
||||
field=models.ManyToManyField(blank=True, to='api.tagsmodel', verbose_name='Tags'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AdOptionModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=255, verbose_name='Name')),
|
||||
('value', models.CharField(max_length=255, verbose_name='Value')),
|
||||
('ad', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='options', to='api.admodel', verbose_name='Ad')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ad Option',
|
||||
'verbose_name_plural': 'Ad Options',
|
||||
'db_table': 'ad_option',
|
||||
'unique_together': {('ad', 'name')},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AdImageModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('image', models.ImageField(upload_to='ads/images/', verbose_name='Image')),
|
||||
('order', models.PositiveIntegerField(default=0, verbose_name='Display Order')),
|
||||
('is_primary', models.BooleanField(default=False, verbose_name='Is Primary')),
|
||||
('ad', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='api.admodel', verbose_name='Ad')),
|
||||
('ad_variant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='images', to='api.advariantmodel', verbose_name='Ad Variant')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ad Image',
|
||||
'verbose_name_plural': 'Ad Images',
|
||||
'db_table': 'ad_images',
|
||||
'ordering': ['order', '-created_at'],
|
||||
'indexes': [models.Index(fields=['ad', 'is_primary'], name='ad_images_ad_id_ed2cb8_idx')],
|
||||
},
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='categorymodel',
|
||||
index=models.Index(fields=['parent', 'show_home'], name='category_parent__ebe06e_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='categorymodel',
|
||||
index=models.Index(fields=['level'], name='category_level_e67701_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='advariantmodel',
|
||||
index=models.Index(fields=['ad', 'is_available'], name='ad_variant_ad_id_3a5d5e_idx'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='advariantmodel',
|
||||
unique_together={('ad', 'value')},
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='feedbackmodel',
|
||||
index=models.Index(fields=['ad', '-created_at'], name='feedback_ad_id_444d80_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='feedbackmodel',
|
||||
index=models.Index(fields=['user'], name='feedback_user_id_8cf53b_idx'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='feedbackmodel',
|
||||
unique_together={('user', 'ad')},
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='ordermodel',
|
||||
index=models.Index(fields=['user', '-created_at'], name='order_user_id_13e363_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='ordermodel',
|
||||
index=models.Index(fields=['status'], name='order_status_35c31c_idx'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='orderitemmodel',
|
||||
unique_together={('order', 'ad')},
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='admodel',
|
||||
index=models.Index(fields=['-created_at'], name='ad_created_359de0_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='admodel',
|
||||
index=models.Index(fields=['category', 'is_available'], name='ad_categor_8ff346_idx'),
|
||||
),
|
||||
]
|
||||
|
||||
@@ -1,240 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-24 06:45
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('accounts', '0004_business_searchhistory'),
|
||||
('api', '0001_initial'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='AdTopPlan',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=255, verbose_name='Name')),
|
||||
('price', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Price')),
|
||||
('duration', models.IntegerField(verbose_name='Duration')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'AdTop Plan',
|
||||
'verbose_name_plural': 'AdTop Plan',
|
||||
'db_table': 'ad_top_plan',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Color',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=255, verbose_name='Name')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Color',
|
||||
'verbose_name_plural': 'Colors',
|
||||
'db_table': 'color',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Tags',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=255, verbose_name='Name')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Tags',
|
||||
'verbose_name_plural': 'Tags',
|
||||
'db_table': 'tags',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AdModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=255, verbose_name='Name')),
|
||||
('ad_type', models.CharField(choices=[('Buy', 'Buy'), ('Sell', 'Sell')], max_length=255, verbose_name='Type')),
|
||||
('ad_category_type', models.CharField(choices=[('Product', 'Product'), ('Service', 'Service'), ('Auto', 'Auto'), ('Home', 'Home')], max_length=255, verbose_name='Type')),
|
||||
('price', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='Price')),
|
||||
('is_available', models.BooleanField(blank=True, default=True, null=True, verbose_name='Is available')),
|
||||
('physical_product', models.BooleanField(default=False, verbose_name='Physical product')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ad', to=settings.AUTH_USER_MODEL, verbose_name='User')),
|
||||
('plan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.adtopplan', verbose_name='Plan')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ad',
|
||||
'verbose_name_plural': 'Ads',
|
||||
'db_table': 'ad',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AdImage',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('image', models.ImageField(upload_to='ads/images/', verbose_name='Image')),
|
||||
('ad', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.admodel', verbose_name='Ad')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ad_Image',
|
||||
'verbose_name_plural': 'Ad_Images',
|
||||
'db_table': 'ad_images',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AdOption',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=255, verbose_name='Name')),
|
||||
('value', models.CharField(max_length=255, verbose_name='Value')),
|
||||
('ad', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.admodel')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ad_Option',
|
||||
'verbose_name_plural': 'Ad_Options',
|
||||
'db_table': 'ad_option',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AdSize',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('weight', models.PositiveIntegerField(verbose_name='Weight')),
|
||||
('width', models.PositiveIntegerField(verbose_name='Width')),
|
||||
('height', models.PositiveIntegerField(verbose_name='Height')),
|
||||
('length', models.PositiveIntegerField(verbose_name='Length')),
|
||||
('ad', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.admodel')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'AdSize',
|
||||
'verbose_name_plural': 'AdSizes',
|
||||
'db_table': 'ad_size',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AdVariant',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('variant', models.CharField(choices=[('Color', 'Color'), ('Size', 'Size')], db_index=True, max_length=255)),
|
||||
('value', models.CharField(max_length=255)),
|
||||
('is_available', models.CharField(max_length=255)),
|
||||
('price', models.DecimalField(decimal_places=2, max_digits=10)),
|
||||
('discount', models.DecimalField(decimal_places=2, default=-1, max_digits=10)),
|
||||
('ad', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.admodel')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ad_Variant',
|
||||
'verbose_name_plural': 'Ad_Variants',
|
||||
'db_table': 'ad_variant',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Category',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=255, verbose_name='Category Name')),
|
||||
('show_home', models.BooleanField(default=False, verbose_name='Show Home')),
|
||||
('level', models.IntegerField(default=0, verbose_name='Level')),
|
||||
('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='api.category')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Category',
|
||||
'verbose_name_plural': 'Categories',
|
||||
'db_table': 'category',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='admodel',
|
||||
name='category',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.category', verbose_name='Category'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Feedback',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('star', models.IntegerField(default=0, verbose_name='Star')),
|
||||
('command', models.CharField(max_length=255, verbose_name='Command')),
|
||||
('ad', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.admodel', verbose_name='Ad')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Feedback',
|
||||
'verbose_name_plural': 'Feedbacks',
|
||||
'db_table': 'feedback',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='FeedbackImages',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('image', models.ImageField(upload_to='feedback/images/', verbose_name='Image')),
|
||||
('feedback', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.feedback', verbose_name='Feedback')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Feedback Images',
|
||||
'verbose_name_plural': 'Feedback Images',
|
||||
'db_table': 'feedback_images',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Order',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('status', models.CharField(choices=[('Pending', 'Pending'), ('Cancel', 'Cancel'), ('Done', 'Done')], max_length=255)),
|
||||
('address', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='accounts.address', verbose_name='Address')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Order',
|
||||
'verbose_name_plural': 'Orders',
|
||||
'db_table': 'order',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='OrderItem',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('price', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Price')),
|
||||
('count', models.PositiveIntegerField(default=0, verbose_name='Count')),
|
||||
('ad', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.admodel', verbose_name='Ad')),
|
||||
('order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.order', verbose_name='Order')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Order Item',
|
||||
'verbose_name_plural': 'Order Items',
|
||||
'db_table': 'order_item',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='admodel',
|
||||
name='tags',
|
||||
field=models.ManyToManyField(to='api.tags', verbose_name='Tags'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,47 @@
|
||||
# Generated by Django 5.2.7 on 2025-12-06 16:11
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='SizeModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=100, unique=True, verbose_name='Name')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Size',
|
||||
'verbose_name_plural': 'Sizes',
|
||||
'db_table': 'size',
|
||||
'ordering': ['name'],
|
||||
},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='advariantmodel',
|
||||
unique_together=set(),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='advariantmodel',
|
||||
name='color',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.colormodel', verbose_name='Color'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='advariantmodel',
|
||||
name='size',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.sizemodel', verbose_name='Size'),
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='advariantmodel',
|
||||
name='value',
|
||||
),
|
||||
]
|
||||
@@ -1,18 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-24 10:15
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0002_adtopplan_color_tags_admodel_adimage_adoption_adsize_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='category',
|
||||
name='image',
|
||||
field=models.ImageField(blank=True, null=True, upload_to='', verbose_name='Image'),
|
||||
),
|
||||
]
|
||||
18
core/apps/api/migrations/0003_colormodel_color.py
Normal file
18
core/apps/api/migrations/0003_colormodel_color.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.2.7 on 2025-12-06 16:29
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0002_sizemodel_alter_advariantmodel_unique_together_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='colormodel',
|
||||
name='color',
|
||||
field=models.CharField(max_length=255, null=True, verbose_name='Color'),
|
||||
),
|
||||
]
|
||||
@@ -1,18 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-25 07:14
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0003_category_image'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='category',
|
||||
name='category_type',
|
||||
field=models.CharField(choices=[('Product', 'Product'), ('Service', 'Service'), ('Auto', 'Auto'), ('Home', 'Home')], default='Product', max_length=255, verbose_name='Category Type'),
|
||||
),
|
||||
]
|
||||
@@ -1,18 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-25 10:10
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0004_category_category_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='admodel',
|
||||
name='star',
|
||||
field=models.FloatField(default=0.0, verbose_name='Star'),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-25 10:30
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0005_admodel_star'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='adimage',
|
||||
name='ad',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='api.admodel', verbose_name='Ad'),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-25 10:35
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0006_alter_adimage_ad'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='advariant',
|
||||
name='ad',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='variants', to='api.admodel'),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-25 10:43
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0007_alter_advariant_ad'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='adimage',
|
||||
name='ad_variant',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='api.advariant', verbose_name='Ad Variant'),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-25 10:45
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0008_adimage_ad_variant'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='adimage',
|
||||
name='ad_variant',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='images', to='api.advariant', verbose_name='Ad Variant'),
|
||||
),
|
||||
]
|
||||
@@ -1,23 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-25 11:00
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0009_alter_adimage_ad_variant'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='admodel',
|
||||
name='star',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='admodel',
|
||||
name='image',
|
||||
field=models.ImageField(default=1, upload_to='', verbose_name='Image'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-25 11:23
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0010_remove_admodel_star_admodel_image'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='feedback',
|
||||
name='ad',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='feedback', to='api.admodel', verbose_name='Ad'),
|
||||
),
|
||||
]
|
||||
@@ -1,18 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-25 11:38
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0011_alter_feedback_ad'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='feedback',
|
||||
old_name='command',
|
||||
new_name='comment',
|
||||
),
|
||||
]
|
||||
@@ -1,18 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-26 10:04
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0012_rename_command_feedback_comment'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='feedback',
|
||||
name='comment',
|
||||
field=models.CharField(max_length=255, verbose_name='Comment'),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-28 11:21
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0013_alter_feedback_comment'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='admodel',
|
||||
name='description',
|
||||
field=models.TextField(default=1, verbose_name='Description'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@@ -1,28 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-27 07:55
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0013_alter_feedback_comment'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='category',
|
||||
name='name_en',
|
||||
field=models.CharField(max_length=255, null=True, verbose_name='Category Name'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='category',
|
||||
name='name_ru',
|
||||
field=models.CharField(max_length=255, null=True, verbose_name='Category Name'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='category',
|
||||
name='name_uz',
|
||||
field=models.CharField(max_length=255, null=True, verbose_name='Category Name'),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-28 11:45
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0014_admodel_description'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='adoption',
|
||||
name='ad',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='options', to='api.admodel', verbose_name='Ad'),
|
||||
),
|
||||
]
|
||||
@@ -1,14 +0,0 @@
|
||||
# Generated by Django 5.2.7 on 2025-12-02 12:32
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0014_category_name_en_category_name_ru_category_name_uz'),
|
||||
('api', '0015_alter_adoption_ad'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
]
|
||||
Reference in New Issue
Block a user