# Generated by Django 5.1.5 on 2025-03-10 11:38 import uuid import django.core.validators import django.db.models.deletion import django_extensions.db.fields import mptt.fields from django.db import migrations, models import core.utils import core.validators class Migration(migrations.Migration): initial = True operations = [ migrations.CreateModel( name="Feedback", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "comment", models.TextField( blank=True, help_text="user-provided comments about their experience with the product", null=True, verbose_name="feedback comments", ), ), ( "rating", models.FloatField( blank=True, help_text="user-assigned rating for the product", null=True, validators=[ django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(10), ], verbose_name="product rating", ), ), ], options={ "verbose_name": "feedback", "verbose_name_plural": "feedbacks", }, ), migrations.CreateModel( name="OrderProduct", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "buy_price", models.FloatField( blank=True, help_text="the price paid by the customer for this product at purchase time", null=True, verbose_name="purchase price at order time", ), ), ( "comments", models.TextField( blank=True, help_text="internal comments for admins about this ordered product", null=True, verbose_name="internal comments", ), ), ( "notifications", models.JSONField( blank=True, help_text="json structure of notifications to display to users", null=True, verbose_name="user notifications", ), ), ( "attributes", models.JSONField( blank=True, help_text="json representation of this item's attributes", null=True, verbose_name="ordered product attributes", ), ), ( "quantity", models.PositiveIntegerField( default=1, help_text="quantity of this specific product in the order", verbose_name="product quantity", ), ), ( "status", models.CharField( choices=[ ("FINISHED", "finished"), ("DELIVERING", "delivering"), ("DELIVERED", "delivered"), ("CANCELED", "canceled"), ("FAILED", "failed"), ("PENDING", "pending"), ("ACCEPTED", "accepted"), ("RETURNED", "money returned"), ], default="PENDING", help_text="current status of this product in the order", max_length=128, verbose_name="product line status", ), ), ], options={ "verbose_name": "order product", "verbose_name_plural": "order products", }, ), migrations.CreateModel( name="Product", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "is_digital", models.BooleanField( default=False, help_text="indicates whether this product is digitally delivered", verbose_name="is product digital", ), ), ( "name", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, verbose_name="product name", ), ), ( "name_en_GB", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_ar_AR", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_cs_CZ", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_da_DK", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_de_DE", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_en_US", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_es_ES", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_fr_FR", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_hi_IN", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_it_IT", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_ja_JP", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_kk_KZ", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_nl_NL", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_pl_PL", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_pt_BR", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_ro_RO", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_ru_RU", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "name_zh_hans", models.CharField( help_text="provide a clear identifying name for the product", max_length=255, null=True, verbose_name="product name", ), ), ( "description", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_en_GB", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_ar_AR", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_cs_CZ", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_da_DK", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_de_DE", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_en_US", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_es_ES", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_fr_FR", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_hi_IN", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_it_IT", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_ja_JP", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_kk_KZ", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_nl_NL", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_pl_PL", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_pt_BR", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_ro_RO", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_ru_RU", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ( "description_zh_hans", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="product description", ), ), ], options={ "verbose_name": "product", "verbose_name_plural": "products", }, ), migrations.CreateModel( name="ProductImage", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "alt", models.CharField( help_text="provide alternative text for the image for accessibility", max_length=255, verbose_name="image alt text", ), ), ( "image", models.ImageField( help_text="upload the image file for this product", upload_to=core.utils.get_product_uuid_as_path, verbose_name="product image", ), ), ( "priority", models.IntegerField( default=1, help_text="determines the order in which images are displayed", validators=[django.core.validators.MinValueValidator(1)], verbose_name="display priority", ), ), ], options={ "verbose_name": "product image", "verbose_name_plural": "product images", "ordering": ("priority",), }, ), migrations.CreateModel( name="ProductTag", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "tag_name", models.CharField( help_text="internal tag identifier for the product tag", max_length=255, verbose_name="tag name" ), ), ( "name", models.CharField( help_text="user-friendly name for the product tag", max_length=255, verbose_name="tag display name", ), ), ( "name_en_GB", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_ar_AR", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_cs_CZ", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_da_DK", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_de_DE", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_en_US", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_es_ES", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_fr_FR", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_hi_IN", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_it_IT", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_ja_JP", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_kk_KZ", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_nl_NL", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_pl_PL", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_pt_BR", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_ro_RO", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_ru_RU", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ( "name_zh_hans", models.CharField( help_text="user-friendly name for the product tag", max_length=255, null=True, verbose_name="tag display name", ), ), ], options={ "verbose_name": "product tag", "verbose_name_plural": "product tags", }, ), migrations.CreateModel( name="PromoCode", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "code", models.CharField( default=core.utils.get_random_code, help_text="unique code used by a user to redeem a discount", max_length=20, unique=True, verbose_name="promo code identifier", ), ), ( "discount_amount", models.DecimalField( blank=True, decimal_places=2, help_text="fixed discount amount applied if percent is not used", max_digits=10, null=True, verbose_name="fixed discount amount", ), ), ( "discount_percent", models.IntegerField( blank=True, help_text="percentage discount applied if fixed amount is not used", null=True, validators=[ django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(100), ], verbose_name="percentage discount", ), ), ( "end_time", models.DateTimeField( blank=True, help_text="timestamp when the promocode expires", null=True, verbose_name="end validity time", ), ), ( "start_time", models.DateTimeField( blank=True, help_text="timestamp from which this promocode is valid", null=True, verbose_name="start validity time", ), ), ( "used_on", models.DateTimeField( blank=True, help_text="timestamp when the promocode was used, blank if not used yet", null=True, verbose_name="usage timestamp", ), ), ], options={ "verbose_name": "promo code", "verbose_name_plural": "promo codes", }, ), migrations.CreateModel( name="Promotion", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "discount_percent", models.IntegerField( help_text="percentage discount for the selected products", validators=[ django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(100), ], verbose_name="discount percentage", ), ), ( "name", models.CharField( help_text="provide a unique name for this promotion", max_length=256, unique=True, verbose_name="promotion name", ), ), ( "name_en_GB", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_ar_AR", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_cs_CZ", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_da_DK", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_de_DE", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_en_US", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_es_ES", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_fr_FR", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_hi_IN", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_it_IT", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_ja_JP", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_kk_KZ", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_nl_NL", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_pl_PL", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_pt_BR", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_ro_RO", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_ru_RU", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "name_zh_hans", models.CharField( help_text="provide a unique name for this promotion", max_length=256, null=True, unique=True, verbose_name="promotion name", ), ), ( "description", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_en_GB", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_ar_AR", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_cs_CZ", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_da_DK", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_de_DE", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_en_US", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_es_ES", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_fr_FR", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_hi_IN", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_it_IT", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_ja_JP", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_kk_KZ", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_nl_NL", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_pl_PL", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_pt_BR", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_ro_RO", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_ru_RU", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ( "description_zh_hans", models.TextField( blank=True, help_text="add a detailed description of the product", null=True, verbose_name="promotion description", ), ), ], options={ "verbose_name": "promotion", "verbose_name_plural": "promotions", }, ), migrations.CreateModel( name="Stock", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "price", models.FloatField( default=0.0, help_text="final price to the customer after markups", verbose_name="selling price" ), ), ( "purchase_price", models.FloatField( default=0.0, help_text="the price paid to the vendor for this product", verbose_name="vendor purchase price", ), ), ( "quantity", models.IntegerField( default=0, help_text="available quantity of the product in stock", verbose_name="quantity in stock", ), ), ( "sku", models.CharField( help_text="vendor-assigned SKU for identifying the product", max_length=255, verbose_name="vendor sku", ), ), ( "digital_asset", models.FileField( blank=True, default=None, help_text="digital file associated with this stock if applicable", null=True, upload_to="downloadables/", verbose_name="digital file", ), ), ], options={ "verbose_name": "stock", "verbose_name_plural": "stock entries", }, ), migrations.CreateModel( name="Vendor", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "authentication", models.JSONField( blank=True, help_text="stores credentials and endpoints required for vendor communication", null=True, verbose_name="authentication info", ), ), ( "markup_percent", models.IntegerField( default=0, help_text="define the markup for products retrieved from this vendor", validators=[ django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(100), ], verbose_name="vendor markup percentage", ), ), ("name", models.CharField(help_text="name of this vendor", max_length=255, verbose_name="vendor name")), ], options={ "verbose_name": "vendor", "verbose_name_plural": "vendors", }, ), migrations.CreateModel( name="Wishlist", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ], options={ "verbose_name": "wishlist", "verbose_name_plural": "wishlists", }, ), migrations.CreateModel( name="AttributeGroup", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "name", models.CharField( help_text="attribute group's name", max_length=255, verbose_name="attribute group's name" ), ), ( "name_en_GB", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_ar_AR", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_cs_CZ", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_da_DK", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_de_DE", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_en_US", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_es_ES", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_fr_FR", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_hi_IN", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_it_IT", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_ja_JP", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_kk_KZ", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_nl_NL", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_pl_PL", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_pt_BR", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_ro_RO", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_ru_RU", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "name_zh_hans", models.CharField( help_text="attribute group's name", max_length=255, null=True, verbose_name="attribute group's name", ), ), ( "parent", models.ForeignKey( blank=True, help_text="parent of this group", null=True, on_delete=django.db.models.deletion.CASCADE, related_name="children", to="core.attributegroup", verbose_name="parent attribute group", ), ), ], options={ "verbose_name": "attribute group", "verbose_name_plural": "attribute groups", }, ), migrations.CreateModel( name="Attribute", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "value_type", models.CharField( choices=[ ("string", "string"), ("integer", "integer"), ("float", "float"), ("boolean", "boolean"), ("array", "array"), ("object", "object"), ], help_text="type of the attribute's value", max_length=50, verbose_name="value type", ), ), ( "name", models.CharField( help_text="name of this attribute", max_length=255, verbose_name="attribute's name" ), ), ( "name_en_GB", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_ar_AR", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_cs_CZ", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_da_DK", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_de_DE", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_en_US", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_es_ES", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_fr_FR", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_hi_IN", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_it_IT", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_ja_JP", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_kk_KZ", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_nl_NL", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_pl_PL", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_pt_BR", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_ro_RO", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_ru_RU", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "name_zh_hans", models.CharField( help_text="name of this attribute", max_length=255, null=True, verbose_name="attribute's name" ), ), ( "group", models.ForeignKey( help_text="group of this attribute", on_delete=django.db.models.deletion.CASCADE, related_name="attributes", to="core.attributegroup", verbose_name="attribute group", ), ), ], options={ "verbose_name": "attribute", "verbose_name_plural": "attributes", }, ), migrations.CreateModel( name="AttributeValue", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "value", models.TextField(help_text="the specific value for this attribute", verbose_name="attribute value"), ), ( "value_en_GB", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_ar_AR", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_cs_CZ", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_da_DK", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_de_DE", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_en_US", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_es_ES", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_fr_FR", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_hi_IN", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_it_IT", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_ja_JP", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_kk_KZ", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_nl_NL", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_pl_PL", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_pt_BR", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_ro_RO", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_ru_RU", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "value_zh_hans", models.TextField( help_text="the specific value for this attribute", null=True, verbose_name="attribute value" ), ), ( "attribute", models.ForeignKey( help_text="attribute of this value", on_delete=django.db.models.deletion.CASCADE, related_name="values", to="core.attribute", verbose_name="attribute", ), ), ], options={ "verbose_name": "attribute value", "verbose_name_plural": "attribute values", }, ), migrations.CreateModel( name="Category", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "image", models.ImageField( help_text="upload an image representing this category", null=True, upload_to="categories/", validators=[core.validators.validate_category_image_dimensions], verbose_name="category image", ), ), ( "markup_percent", models.IntegerField( default=0, help_text="define a markup percentage for products in this category", validators=[ django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(100), ], verbose_name="markup percentage", ), ), ( "name", models.CharField( help_text="provide a name for this category", max_length=255, verbose_name="category name" ), ), ( "name_en_GB", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_ar_AR", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_cs_CZ", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_da_DK", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_de_DE", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_en_US", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_es_ES", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_fr_FR", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_hi_IN", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_it_IT", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_ja_JP", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_kk_KZ", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_nl_NL", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_pl_PL", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_pt_BR", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_ro_RO", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_ru_RU", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "name_zh_hans", models.CharField( help_text="provide a name for this category", max_length=255, null=True, verbose_name="category name", ), ), ( "description", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_en_GB", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_ar_AR", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_cs_CZ", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_da_DK", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_de_DE", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_en_US", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_es_ES", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_fr_FR", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_hi_IN", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_it_IT", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_ja_JP", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_kk_KZ", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_nl_NL", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_pl_PL", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_pt_BR", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_ro_RO", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_ru_RU", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ( "description_zh_hans", models.TextField( blank=True, help_text="add a detailed description for this category", null=True, verbose_name="category description", ), ), ("lft", models.PositiveIntegerField(editable=False)), ("rght", models.PositiveIntegerField(editable=False)), ("tree_id", models.PositiveIntegerField(db_index=True, editable=False)), ("level", models.PositiveIntegerField(editable=False)), ( "parent", mptt.fields.TreeForeignKey( blank=True, help_text="parent of this category to form a hierarchical structure", null=True, on_delete=django.db.models.deletion.CASCADE, related_name="children", to="core.category", verbose_name="parent category", ), ), ], options={ "verbose_name": "category", "verbose_name_plural": "categories", "ordering": ["tree_id", "lft"], }, ), migrations.CreateModel( name="Brand", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ("name", models.CharField(help_text="name of this brand", max_length=255, verbose_name="brand name")), ( "category", models.ForeignKey( blank=True, help_text="optional category that this brand is associated with", null=True, on_delete=django.db.models.deletion.PROTECT, to="core.category", verbose_name="associated category", ), ), ], options={ "verbose_name": "brand", "verbose_name_plural": "brands", }, ), migrations.AddField( model_name="attribute", name="categories", field=models.ManyToManyField( help_text="category of this attribute", related_name="attributes", to="core.category", verbose_name="categories", ), ), migrations.CreateModel( name="Order", fields=[ ( "uuid", models.UUIDField( default=uuid.uuid4, editable=False, help_text="unique id is used to surely identify any database object", primary_key=True, serialize=False, verbose_name="unique id", ), ), ( "is_active", models.BooleanField( default=True, help_text="if set to false, this object can't be seen by users without needed permission", verbose_name="is active", ), ), ( "created", django_extensions.db.fields.CreationDateTimeField( auto_now_add=True, help_text="when the object first appeared on the database", verbose_name="created", ), ), ( "modified", django_extensions.db.fields.ModificationDateTimeField( auto_now=True, help_text="when the object was last modified", verbose_name="modified" ), ), ( "status", models.CharField( choices=[ ("PENDING", "pending"), ("FAILED", "failed"), ("PAYMENT", "payment"), ("CREATED", "created"), ("DELIVERING", "delivering"), ("FINISHED", "finished"), ], default="PENDING", help_text="current status of the order in its lifecycle", max_length=64, verbose_name="order status", ), ), ( "notifications", models.JSONField( blank=True, help_text="json structure of notifications to display to users", null=True, verbose_name="notifications", ), ), ( "attributes", models.JSONField( blank=True, help_text="json representation of order attributes for this order", null=True, verbose_name="attributes", ), ), ( "buy_time", models.DateTimeField( blank=True, default=None, help_text="the timestamp when the order was finalized", null=True, verbose_name="buy time", ), ), ], options={ "verbose_name": "order", "verbose_name_plural": "orders", }, ), ]