From 8b5ee6dbf8007a86b477208f932c16c0e1e3c780 Mon Sep 17 00:00:00 2001 From: Parsa Nazer Date: Sat, 1 Feb 2025 19:34:03 +0330 Subject: [PATCH] add color field and in stuck model --- .../migrations/0002_alter_user_options.py | 17 ++++++++++++ ...del_options_alter_blogmodel_cover_image.py | 22 +++++++++++++++ .../0002_alter_productchatmodel_options.py | 17 ++++++++++++ .../0002_alter_homeimagemodel_options.py | 17 ++++++++++++ backend/product/admin.py | 13 +++++++-- ...ons_alter_productmodel_options_and_more.py | 26 ++++++++++++++++++ .../product/migrations/0006_instuckcolors.py | 27 +++++++++++++++++++ ...7_remove_productmodel_in_stock_and_more.py | 22 +++++++++++++++ ...ctmodel_color_alter_instuckcolors_color.py | 22 +++++++++++++++ backend/product/models.py | 13 +++++++-- ...er_message_options_alter_ticket_options.py | 21 +++++++++++++++ 11 files changed, 213 insertions(+), 4 deletions(-) create mode 100644 backend/account/migrations/0002_alter_user_options.py create mode 100644 backend/blog/migrations/0002_alter_blogmodel_options_alter_blogmodel_cover_image.py create mode 100644 backend/chat/migrations/0002_alter_productchatmodel_options.py create mode 100644 backend/home/migrations/0002_alter_homeimagemodel_options.py create mode 100644 backend/product/migrations/0005_alter_dollormodel_options_alter_productmodel_options_and_more.py create mode 100644 backend/product/migrations/0006_instuckcolors.py create mode 100644 backend/product/migrations/0007_remove_productmodel_in_stock_and_more.py create mode 100644 backend/product/migrations/0008_remove_productmodel_color_alter_instuckcolors_color.py create mode 100644 backend/ticket/migrations/0002_alter_message_options_alter_ticket_options.py diff --git a/backend/account/migrations/0002_alter_user_options.py b/backend/account/migrations/0002_alter_user_options.py new file mode 100644 index 0000000..6b626d2 --- /dev/null +++ b/backend/account/migrations/0002_alter_user_options.py @@ -0,0 +1,17 @@ +# Generated by Django 5.1.2 on 2025-02-01 15:15 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='user', + options={'verbose_name': 'کاربر', 'verbose_name_plural': 'کاربران'}, + ), + ] diff --git a/backend/blog/migrations/0002_alter_blogmodel_options_alter_blogmodel_cover_image.py b/backend/blog/migrations/0002_alter_blogmodel_options_alter_blogmodel_cover_image.py new file mode 100644 index 0000000..f48f2e6 --- /dev/null +++ b/backend/blog/migrations/0002_alter_blogmodel_options_alter_blogmodel_cover_image.py @@ -0,0 +1,22 @@ +# Generated by Django 5.1.2 on 2025-02-01 15:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='blogmodel', + options={'verbose_name': 'بلاگ', 'verbose_name_plural': 'بلاگ ها'}, + ), + migrations.AlterField( + model_name='blogmodel', + name='cover_image', + field=models.ImageField(blank=True, upload_to='blog_covers/'), + ), + ] diff --git a/backend/chat/migrations/0002_alter_productchatmodel_options.py b/backend/chat/migrations/0002_alter_productchatmodel_options.py new file mode 100644 index 0000000..0365d84 --- /dev/null +++ b/backend/chat/migrations/0002_alter_productchatmodel_options.py @@ -0,0 +1,17 @@ +# Generated by Django 5.1.2 on 2025-02-01 15:15 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('chat', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='productchatmodel', + options={'verbose_name': 'جت محصلول و کاربر', 'verbose_name_plural': 'چت های محصلول کاربر'}, + ), + ] diff --git a/backend/home/migrations/0002_alter_homeimagemodel_options.py b/backend/home/migrations/0002_alter_homeimagemodel_options.py new file mode 100644 index 0000000..dc156f4 --- /dev/null +++ b/backend/home/migrations/0002_alter_homeimagemodel_options.py @@ -0,0 +1,17 @@ +# Generated by Django 5.1.2 on 2025-02-01 15:15 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='homeimagemodel', + options={'verbose_name': 'مدل عکس تفاوت خانه', 'verbose_name_plural': 'مدل عکس تفاوت خانه'}, + ), + ] diff --git a/backend/product/admin.py b/backend/product/admin.py index 5514d08..075ed6b 100644 --- a/backend/product/admin.py +++ b/backend/product/admin.py @@ -1,18 +1,27 @@ from django.contrib import admin from .models import * -from unfold.admin import ModelAdmin +from unfold.admin import ModelAdmin, TabularInline from import_export.admin import ImportExportModelAdmin from unfold.contrib.import_export.forms import ExportForm, ImportForm, SelectableFieldsExportForm from unfold.contrib.forms.widgets import ArrayWidget, WysiwygWidget from django.contrib.postgres.fields import ArrayField +from unfold.widgets import ( + UnfoldAdminColorInputWidget, +) +class InStuckColorsInLine(TabularInline): + model = InStuckColors + extra = 1 + formfield_overrides = { + models.CharField: {"widget": UnfoldAdminColorInputWidget()}, + } @admin.register(ProductModel) class ProductModelAdmin(ModelAdmin, ImportExportModelAdmin): import_form_class = ImportForm export_form_class = ExportForm - + inlines = [InStuckColorsInLine] readonly_fields = ('slug', ) compressed_fields = True diff --git a/backend/product/migrations/0005_alter_dollormodel_options_alter_productmodel_options_and_more.py b/backend/product/migrations/0005_alter_dollormodel_options_alter_productmodel_options_and_more.py new file mode 100644 index 0000000..f1824a4 --- /dev/null +++ b/backend/product/migrations/0005_alter_dollormodel_options_alter_productmodel_options_and_more.py @@ -0,0 +1,26 @@ +# Generated by Django 5.1.2 on 2025-02-01 15:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('product', '0004_alter_subcategorymodel_parent'), + ] + + operations = [ + migrations.AlterModelOptions( + name='dollormodel', + options={'verbose_name': 'مدل دلار', 'verbose_name_plural': 'مدل دلار'}, + ), + migrations.AlterModelOptions( + name='productmodel', + options={'verbose_name': 'محصول', 'verbose_name_plural': 'محصولات'}, + ), + migrations.AddField( + model_name='productmodel', + name='color', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='color'), + ), + ] diff --git a/backend/product/migrations/0006_instuckcolors.py b/backend/product/migrations/0006_instuckcolors.py new file mode 100644 index 0000000..ea641b8 --- /dev/null +++ b/backend/product/migrations/0006_instuckcolors.py @@ -0,0 +1,27 @@ +# Generated by Django 5.1.2 on 2025-02-01 15:32 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('product', '0005_alter_dollormodel_options_alter_productmodel_options_and_more'), + ] + + operations = [ + migrations.CreateModel( + name='InStuckColors', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('color', models.CharField(blank=True, max_length=255, null=True, verbose_name='color')), + ('in_stuck', models.PositiveIntegerField(default=0)), + ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='colors', to='product.productmodel')), + ], + options={ + 'verbose_name': 'تعداد موجود رنگ', + 'verbose_name_plural': 'تعداد موجود رنگ ها', + }, + ), + ] diff --git a/backend/product/migrations/0007_remove_productmodel_in_stock_and_more.py b/backend/product/migrations/0007_remove_productmodel_in_stock_and_more.py new file mode 100644 index 0000000..ea500ea --- /dev/null +++ b/backend/product/migrations/0007_remove_productmodel_in_stock_and_more.py @@ -0,0 +1,22 @@ +# Generated by Django 5.1.2 on 2025-02-01 15:42 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('product', '0006_instuckcolors'), + ] + + operations = [ + migrations.RemoveField( + model_name='productmodel', + name='in_stock', + ), + migrations.AlterField( + model_name='instuckcolors', + name='in_stuck', + field=models.PositiveIntegerField(default=0, verbose_name='تعداد موجود'), + ), + ] diff --git a/backend/product/migrations/0008_remove_productmodel_color_alter_instuckcolors_color.py b/backend/product/migrations/0008_remove_productmodel_color_alter_instuckcolors_color.py new file mode 100644 index 0000000..5aa5612 --- /dev/null +++ b/backend/product/migrations/0008_remove_productmodel_color_alter_instuckcolors_color.py @@ -0,0 +1,22 @@ +# Generated by Django 5.1.2 on 2025-02-01 15:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('product', '0007_remove_productmodel_in_stock_and_more'), + ] + + operations = [ + migrations.RemoveField( + model_name='productmodel', + name='color', + ), + migrations.AlterField( + model_name='instuckcolors', + name='color', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='رنگ'), + ), + ] diff --git a/backend/product/models.py b/backend/product/models.py index 1863ca4..7b61c2d 100644 --- a/backend/product/models.py +++ b/backend/product/models.py @@ -3,7 +3,7 @@ from django.utils.text import slugify from account.models import User from django.urls import reverse import requests - +from django.utils.translation import gettext_lazy as _ class MainCategoryModel(models.Model): name = models.CharField(max_length=50, verbose_name='نام') @@ -103,7 +103,6 @@ class ProductModel(models.Model): show = models.BooleanField(default=False, verbose_name='نمایش در خانه') view = models.IntegerField(default=0, verbose_name='بازدید') sell = models.IntegerField(default=0, verbose_name='فروش') - in_stock = models.IntegerField(default=0, verbose_name="تعداد موجود") discount = models.SmallIntegerField(default=0, verbose_name='تخفیف') slug = models.SlugField(max_length=50, unique=True, blank=True, null=True, allow_unicode=True, verbose_name='نام یکتا', help_text="این فیلد را خالی بگذارید") @@ -149,6 +148,16 @@ class ProductModel(models.Model): verbose_name_plural = 'محصولات' +class InStuckColors(models.Model): + color = models.CharField(_("رنگ"), null=True, blank=True, max_length=255) + in_stuck = models.PositiveIntegerField(default=0, verbose_name="تعداد موجود") + product = models.ForeignKey(ProductModel, on_delete=models.CASCADE, related_name='colors') + class Meta: + verbose_name = 'تعداد موجود رنگ' + verbose_name_plural = 'تعداد موجود رنگ ها' + def __str__(self): + return f'{product} - {color}' + class CommentModel(models.Model): product = models.ForeignKey(ProductModel, on_delete=models.CASCADE, related_name='comments', verbose_name='محصول') content = models.TextField(verbose_name='محتوای نظر') diff --git a/backend/ticket/migrations/0002_alter_message_options_alter_ticket_options.py b/backend/ticket/migrations/0002_alter_message_options_alter_ticket_options.py new file mode 100644 index 0000000..685edfb --- /dev/null +++ b/backend/ticket/migrations/0002_alter_message_options_alter_ticket_options.py @@ -0,0 +1,21 @@ +# Generated by Django 5.1.2 on 2025-02-01 15:15 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('ticket', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='message', + options={'verbose_name': 'پیام تیکت', 'verbose_name_plural': 'پیام های تیکت'}, + ), + migrations.AlterModelOptions( + name='ticket', + options={'verbose_name': 'تیکت', 'verbose_name_plural': 'تیکت ها'}, + ), + ]