class Category(CategoryBase): thumbnail = models.FileField( upload_to=settings.THUMBNAIL_UPLOAD_PATH, null=True, blank=True, storage=settings.THUMBNAIL_STORAGE,) thumbnail_width = models.IntegerField(blank=True, null=True) thumbnail_height = models.IntegerField(blank=True, null=True) order = models.IntegerField(default=0) alternate_title = models.CharField( blank=True, default="", max_length=100, help_text="An alternative title to use on pages with this category.") alternate_url = models.CharField( blank=True, max_length=200, help_text="An alternative URL to use instead of the one derived from " "the category hierarchy.") description = models.TextField(blank=True, null=True) meta_keywords = models.CharField( blank=True, default="", max_length=255, help_text="Comma-separated keywords for search engines.") meta_extra = models.TextField( blank=True, default="", help_text="(Advanced) Any additional HTML to be placed verbatim " "in the <head>")
class Brand(models.Model): def folder_path(self, filename): upload_dir = os.path.join('brand/', f'{self.brand_name}') return os.path.join(upload_dir, filename) user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='brand_user') brand_name = models.CharField(max_length=250) is_feature = models.BooleanField(default=False) is_approved = models.BooleanField(default=False) brand_image = models.FileField(upload_to=folder_path, blank=True, null=True) alt = models.TextField(max_length=50000, null=True, blank=True) approved_by = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='brand_approved_by_user') slug = models.CharField(max_length=250, blank=True, null=True) meta_description = models.TextField(max_length=10000, null=True, blank=True) meta_keyword = models.CharField(max_length=250, null=True, blank=True) meta_title = models.CharField(max_length=250, null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now_add=True)
class Product(models.Model): def folder_path(self, filename): product_name = self.product_name.lower().replace(' ', '_') upload_dir = os.path.join('products/', f'{product_name}/certificate') return os.path.join(upload_dir, filename) product_code = models.CharField(max_length=250, unique=True) user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='product_user') brand = models.ForeignKey(Brand, on_delete=models.CASCADE, null=True, blank=True, related_name='product_brand_relation') category = models.ForeignKey(Categories, on_delete=models.CASCADE, null=True, blank=True) product_name = models.CharField(max_length=255, unique=True) product_description = models.TextField(max_length=65500, null=True, blank=True) product_specification = models.TextField(max_length=65500, null=True, blank=True) purchase_note = models.TextField(max_length=65500, null=True, blank=True) certificate_by = models.CharField(max_length=250, null=True, blank=True) certificate_file = models.FileField(upload_to=folder_path, blank=True, null=True) price = models.FloatField(max_length=250) selling_price = models.FloatField(max_length=250) price_off = models.CharField(max_length=250, null=True, blank=True) status = models.BooleanField(default=True) likes = models.IntegerField(default=0) view = models.IntegerField(default=0) total_comment = models.IntegerField(default=0) total_review = models.FloatField(default=0) is_feature = models.BooleanField(default=False) is_approved = models.BooleanField(default=False) approved_by = models.ForeignKey('admin_users.User', on_delete=models.CASCADE, null=True, blank=True, related_name='product_approved_by_user') slug = models.CharField(max_length=250, blank=True, null=True) meta_description = models.TextField(max_length=10000, null=True, blank=True) meta_keyword = models.CharField(max_length=250, null=True, blank=True) meta_title = models.CharField(max_length=250, null=True, blank=True) delivery_charge = models.IntegerField(default=0) is_cod = models.BooleanField(default=True) product_tags = models.TextField(max_length=65500, null=True, blank=True) delivery_time = models.CharField(max_length=250, null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now_add=True)
class ProductSize(models.Model): def folder_path(self, filename): product_name = self.product.product_name.lower().replace(' ', '_') upload_dir = os.path.join('products/', f'{product_name}/sizes') return os.path.join(upload_dir, filename) product = models.ForeignKey(Product, on_delete=models.CASCADE) user = models.ForeignKey(User, on_delete=models.CASCADE) size = models.CharField(max_length=250) size_image = models.FileField(upload_to=folder_path, blank=True, null=True) alt = models.TextField(max_length=10000, null=True, blank=True) is_feature = models.BooleanField(default=False) price = models.FloatField(default=0) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now_add=True)