storage yaratildi
This commit is contained in:
4
core/apps/vendors/models/__init__.py
vendored
Normal file
4
core/apps/vendors/models/__init__.py
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
from .category import * # noqa
|
||||
from .vendor import * # noqa
|
||||
from .vendor_product import * # noqa
|
||||
from .section import * # noqa
|
||||
23
core/apps/vendors/models/category.py
vendored
Normal file
23
core/apps/vendors/models/category.py
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_core.models import AbstractBaseModel
|
||||
from model_bakery import baker
|
||||
|
||||
|
||||
class CategoryModel(AbstractBaseModel):
|
||||
firestore_id = models.CharField(verbose_name=_("firestore id"), max_length=255, unique=True, null=True, blank=True)
|
||||
section = models.ForeignKey("SectionModel", verbose_name=_("section"), on_delete=models.CASCADE, related_name="categories", null=True, blank=True)
|
||||
title = models.CharField(verbose_name=_("title"), max_length=255)
|
||||
description = models.TextField(verbose_name=_("description"), null=True, blank=True)
|
||||
photo_url = models.URLField(verbose_name=_("photo url"), max_length=1000, null=True, blank=True)
|
||||
photo = models.ImageField(verbose_name=_("photo"), upload_to="categories/", null=True, blank=True)
|
||||
is_publish = models.BooleanField(verbose_name=_("is publish"), default=True)
|
||||
order = models.IntegerField(verbose_name=_("order"), default=0)
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
class Meta:
|
||||
db_table = "categories"
|
||||
verbose_name = _("Category")
|
||||
verbose_name_plural = _("Categories")
|
||||
21
core/apps/vendors/models/section.py
vendored
Normal file
21
core/apps/vendors/models/section.py
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_core.models import AbstractBaseModel
|
||||
|
||||
|
||||
class SectionModel(AbstractBaseModel):
|
||||
firestore_id = models.CharField(verbose_name=_("firestore id"), max_length=255, unique=True, null=True, blank=True)
|
||||
name = models.CharField(verbose_name=_("name"), max_length=255)
|
||||
is_active = models.BooleanField(verbose_name=_("is active"), default=True)
|
||||
image_url = models.URLField(verbose_name=_("image url"), max_length=1000, null=True, blank=True)
|
||||
image = models.ImageField(verbose_name=_("image"), upload_to="sections/", null=True, blank=True)
|
||||
color = models.CharField(verbose_name=_("color"), max_length=20, null=True, blank=True)
|
||||
service_type = models.CharField(verbose_name=_("service type"), max_length=255, null=True, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
db_table = "sections"
|
||||
verbose_name = _("Section")
|
||||
verbose_name_plural = _("Sections")
|
||||
28
core/apps/vendors/models/vendor.py
vendored
Normal file
28
core/apps/vendors/models/vendor.py
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_core.models import AbstractBaseModel
|
||||
from model_bakery import baker
|
||||
|
||||
|
||||
class VendorModel(AbstractBaseModel):
|
||||
firestore_id = models.CharField(verbose_name=_("firestore id"), max_length=255, unique=True, null=True, blank=True)
|
||||
section = models.ForeignKey("SectionModel", verbose_name=_("section"), on_delete=models.CASCADE, related_name="vendors", null=True, blank=True)
|
||||
title = models.CharField(verbose_name=_("title"), max_length=255)
|
||||
description = models.TextField(verbose_name=_("description"), null=True, blank=True)
|
||||
phone = models.CharField(verbose_name=_("phone"), max_length=50, null=True, blank=True)
|
||||
location = models.JSONField(verbose_name=_("location"), null=True, blank=True)
|
||||
photo_url = models.URLField(verbose_name=_("photo url"), max_length=1000, null=True, blank=True)
|
||||
photo = models.ImageField(verbose_name=_("photo"), upload_to="vendors/", null=True, blank=True)
|
||||
is_active = models.BooleanField(verbose_name=_("is active"), default=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
@classmethod
|
||||
def _baker(cls):
|
||||
return baker.make(cls)
|
||||
|
||||
class Meta:
|
||||
db_table = "vendors"
|
||||
verbose_name = _("Vendor")
|
||||
verbose_name_plural = _("Vendors")
|
||||
41
core/apps/vendors/models/vendor_product.py
vendored
Normal file
41
core/apps/vendors/models/vendor_product.py
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_core.models import AbstractBaseModel
|
||||
from model_bakery import baker
|
||||
|
||||
|
||||
class VendorproductModel(AbstractBaseModel):
|
||||
firestore_id = models.CharField(verbose_name=_("firestore id"), max_length=255, unique=True, null=True, blank=True)
|
||||
vendor = models.ForeignKey("VendorModel", verbose_name=_("vendor"), on_delete=models.CASCADE, related_name="products", null=True, blank=True)
|
||||
category = models.ForeignKey("CategoryModel", verbose_name=_("category"), on_delete=models.SET_NULL, related_name="products", null=True, blank=True)
|
||||
section = models.ForeignKey("SectionModel", verbose_name=_("section"), on_delete=models.SET_NULL, related_name="products", null=True, blank=True)
|
||||
name = models.CharField(verbose_name=_("name"), max_length=255)
|
||||
description = models.TextField(verbose_name=_("description"), null=True, blank=True)
|
||||
price = models.DecimalField(verbose_name=_("price"), max_digits=12, decimal_places=2, default=0)
|
||||
discount_price = models.DecimalField(verbose_name=_("discount price"), max_digits=12, decimal_places=2, default=0)
|
||||
quantity = models.IntegerField(verbose_name=_("quantity"), default=-1)
|
||||
is_publish = models.BooleanField(verbose_name=_("is publish"), default=True)
|
||||
image = models.ImageField(verbose_name=_("image"), upload_to="products/", null=True, blank=True)
|
||||
photos_json = models.JSONField(verbose_name=_("photos url list"), null=True, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
db_table = "vendor_products"
|
||||
verbose_name = _("Vendor Product")
|
||||
verbose_name_plural = _("Vendor Products")
|
||||
|
||||
|
||||
class ProductimageModel(AbstractBaseModel):
|
||||
product = models.ForeignKey("VendorproductModel", verbose_name=_("product"), on_delete=models.CASCADE, related_name="images")
|
||||
image = models.ImageField(verbose_name=_("image"), upload_to="product_gallery/")
|
||||
order = models.IntegerField(verbose_name=_("order"), default=0)
|
||||
|
||||
def __str__(self):
|
||||
return f"Image for {self.product.name}"
|
||||
|
||||
class Meta:
|
||||
db_table = "product_images"
|
||||
verbose_name = _("Product Image")
|
||||
verbose_name_plural = _("Product Images")
|
||||
Reference in New Issue
Block a user