diff --git a/backend/product/__init__.py b/backend/product/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/product/admin.py b/backend/product/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/backend/product/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/product/apps.py b/backend/product/apps.py new file mode 100644 index 0000000..235a333 --- /dev/null +++ b/backend/product/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ProductConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'product' diff --git a/backend/product/migrations/__init__.py b/backend/product/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/product/models.py b/backend/product/models.py new file mode 100644 index 0000000..bd28fd2 --- /dev/null +++ b/backend/product/models.py @@ -0,0 +1,41 @@ +from django.db import models +from django.utils.text import slugify + +class Product(models.Model): + name = models.CharField(max_length=255) + description = models.TextField() + price = models.PositiveIntegerField(default=0) + image = models.ImageField(upload_to='product_images/') + rating = models.PositiveIntegerField(default=0) + 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="این فیلد را خالی بگذارید") + link_of_metas = models.CharField(max_length=400, verbose_name='لینک استخراج متا', null=True, blank=True) + meta_description = models.CharField(max_length=300, blank=True, null=True, help_text='این فیلد را حتما پر کنید') + meta_keywords = models.CharField(max_length=300, blank=True, null=True, help_text='این فیلد را حتما پر کنید') + meta_rating = models.FloatField(default=5, help_text='امتیاز محصول') + + def format_discount_price(self): + discount_price = int(self.price * (100 - self.discount) / 100) + formatted_num = "{:,.0f}".format(discount_price) + return formatted_num + + def discount_price(self): + discount_price = int(self.price * (100 - self.discount) / 100) + return discount_price + + def format_price(self): + price = self.price + formatted_num = "{:,.0f}".format(price) + return formatted_num + + def __str__(self): + return self.name + + def save(self, *args, **kwargs): + if not self.slug: + self.slug = slugify(self.name, allow_unicode=True) + super().save(*args, **kwargs) \ No newline at end of file diff --git a/backend/product/tests.py b/backend/product/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/backend/product/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/product/views.py b/backend/product/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/backend/product/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/docker-compose.yml b/docker-compose.yml index 8d8b898..f528766 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,11 @@ services: - frontend: - build: - context: ./frontend - ports: - - "80:3000" - depends_on: - - django + # frontend: + # build: + # context: ./frontend + # ports: + # - "80:3000" + # depends_on: + # - django django: build: