clean up cart and add order_id filed to order
This commit is contained in:
@@ -35,6 +35,7 @@ class BankRecordInline(StackedInline):
|
||||
model = Bank
|
||||
extra = 0
|
||||
max_num = 0
|
||||
tab = True
|
||||
def has_delete_permission(self, request, obj=None):
|
||||
return False
|
||||
def get_readonly_fields(self, request, obj=None):
|
||||
@@ -46,11 +47,11 @@ class BankRecordInline(StackedInline):
|
||||
class OrderAdmin(ModelAdmin, ImportExportModelAdmin):
|
||||
import_form_class = ImportForm
|
||||
export_form_class = ExportForm
|
||||
|
||||
search_fields = ['order_id', 'user__phone', 'user__first_name', 'user__last_name', 'user__email']
|
||||
list_filter = ['is_paid', 'status']
|
||||
actions_list = ['redirect_to_learn', 'udpate_bank_status']
|
||||
list_display = ['user', 'is_paid', 'status', 'discount_code', 'address',]
|
||||
readonly_fields = ('created_at', )
|
||||
list_display = ['order_id', 'user', 'is_paid', 'status', 'discount_code', 'address',]
|
||||
readonly_fields = ('created_at', 'order_id', 'tax', 'final_price', 'cart_total', 'discount', 'discount_code', 'user', 'address', 'is_paid')
|
||||
compressed_fields = True
|
||||
warn_unsaved_form = True
|
||||
# exclude = ('bank_records',)
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 5.1.2 on 2025-03-27 10:19
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('order', '0023_remove_ordermodel_bank_records'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='orderitemmodel',
|
||||
name='discount',
|
||||
field=models.SmallIntegerField(default=0, verbose_name='تخفیف'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='ordermodel',
|
||||
name='order_id',
|
||||
field=models.PositiveIntegerField(blank=True, null=True, unique=True),
|
||||
),
|
||||
]
|
||||
+25
-27
@@ -44,6 +44,7 @@ class OrderModel(models.Model):
|
||||
('CANCELED', 'لغو شده'),
|
||||
('REFUNDED', 'مرجوع شده'),
|
||||
]
|
||||
order_id = models.PositiveIntegerField(unique=True, null=True, blank=True, verbose_name='شماره سفارش')
|
||||
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='orders', verbose_name='کاربر')
|
||||
address = models.ForeignKey(UserAddressModel, on_delete=models.SET_NULL, related_name='orders', null=True, verbose_name='ادرس')
|
||||
created_at = jmodels.jDateField(blank=True, null=True, verbose_name="تاریخ ثبت سفارش")
|
||||
@@ -54,7 +55,6 @@ class OrderModel(models.Model):
|
||||
tax = models.BigIntegerField(null=True, blank=True, verbose_name='مالیات')
|
||||
final_price = models.BigIntegerField(null=True, blank=True, verbose_name='قیمت نهایی')
|
||||
cart_total = models.BigIntegerField(null=True, blank=True, verbose_name='کل سبد خرید')
|
||||
# bank_records = models.ManyToManyField(Bank, max_length=100, verbose_name='رکورد بانکی', null=True, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return f'سفارش: {self.id + 1000}'
|
||||
@@ -66,39 +66,32 @@ class OrderModel(models.Model):
|
||||
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
try:
|
||||
push_object = PushSubscription.objects.get(user=self.user)
|
||||
except:
|
||||
print('object not found')
|
||||
try:
|
||||
push_object.send_notif(f'سفارش شما به {self.get_status_display()} تغییر کرد', f'سفارش شما به {self.get_status_display()} تغییر کرد', ProductImageModel.objects.all().first().image.url)
|
||||
except:
|
||||
print('didnt send')
|
||||
if not self.pk:
|
||||
last_instance = self.__class__.objects.order_by("pk").last()
|
||||
self.order_id = (last_instance.pk + 1001) if last_instance else 1001
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
|
||||
|
||||
# def discount(self):
|
||||
# # total_with_item_discount = sum(item.total_with_discount() for item in self.items.all())
|
||||
# # discount_percent = self.discount_code.percent
|
||||
# # return total_with_item_discount * ((100 - discount_percent) / 100)
|
||||
# pass
|
||||
def cal_discount(self):
|
||||
# total_with_item_discount = sum(item.total_with_discount() for item in self.items.all())
|
||||
# discount_percent = self.discount_code.percent
|
||||
# return total_with_item_discount * ((100 - discount_percent) / 100)
|
||||
pass
|
||||
|
||||
|
||||
# def tax(self):
|
||||
# return self.total_without_tax() * 0.2
|
||||
def cal_tax(self):
|
||||
return self.total_without_tax() * 0.2
|
||||
|
||||
|
||||
# def total(self):
|
||||
# pass
|
||||
# return self.total_with_discount() + self.tax()
|
||||
def cal_total(self):
|
||||
pass
|
||||
return self.total_with_discount() + self.tax()
|
||||
|
||||
|
||||
# def final_price(self):
|
||||
# pass
|
||||
def cal_final_price(self):
|
||||
pass
|
||||
|
||||
# def submit_cart(self):
|
||||
# pass
|
||||
|
||||
|
||||
|
||||
@@ -108,15 +101,20 @@ class OrderItemModel(models.Model):
|
||||
quantity = models.PositiveSmallIntegerField(verbose_name="تعداد")
|
||||
price = models.PositiveIntegerField(verbose_name='قیمت', default=0)
|
||||
product = models.ForeignKey(ProductVariant, on_delete=models.PROTECT, verbose_name="محصول")
|
||||
discount = models.SmallIntegerField(default=0, verbose_name='تخفیف')
|
||||
class Meta:
|
||||
verbose_name = 'ایتم سبد خرید'
|
||||
verbose_name_plural = 'ایتم های سبد خرید'
|
||||
|
||||
def total(self):
|
||||
return self.quantity * self.product.price
|
||||
# def total(self):
|
||||
# return self.quantity * self.product.price
|
||||
|
||||
# def total_with_discount(self):
|
||||
# return self.quantity * self.product.get_toman_price_after_discount()
|
||||
|
||||
def update_fields(self):
|
||||
pass
|
||||
|
||||
def total_with_discount(self):
|
||||
return self.quantity * self.product.get_toman_price_after_discount()
|
||||
def __str__(self):
|
||||
return f'({self.product}) - ({self.order.user})'
|
||||
|
||||
|
||||
@@ -108,7 +108,6 @@ class CartSerializer(serializers.ModelSerializer):
|
||||
class OrderListSerializer(serializers.ModelSerializer):
|
||||
count = serializers.SerializerMethodField()
|
||||
images = serializers.SerializerMethodField()
|
||||
order_id = serializers.SerializerMethodField()
|
||||
verbose_status = serializers.SerializerMethodField()
|
||||
class Meta:
|
||||
model = OrderModel
|
||||
@@ -127,8 +126,6 @@ class OrderListSerializer(serializers.ModelSerializer):
|
||||
for item in obj.items.all()[:3]
|
||||
]
|
||||
return filter(lambda x: x is not None, image_list)
|
||||
def get_order_id(self, obj):
|
||||
return obj.id + 1000
|
||||
|
||||
|
||||
class OrderGetSerializer(serializers.ModelSerializer):
|
||||
|
||||
Reference in New Issue
Block a user