# 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', }, ), ]