schon/core/migrations/0001_initial.py
Egor fureunoir Gorbunov 12ccd04943 Update API version to 2.6.0 and reformat migration files
Updated the API version from 2.5.0 to 2.6.0 in the DRF settings for consistency across configurations. Reformatted migration files for better readability, ensuring consistency in code style and improving maintainability. These changes do not alter functionality but enhance clarity and documentation.
2025-05-06 19:19:49 +03:00

1008 lines
76 KiB
Python

# 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
dependencies = [
('geo', '0013_alter_city_options_alternativename_active_and_more'),
]
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')),
('billing_address',
models.ForeignKey(blank=True, help_text='the billing address used for this order', null=True,
on_delete=django.db.models.deletion.CASCADE, related_name='billing_address_order',
to='geo.address', verbose_name='billing address')),
('shipping_address',
models.ForeignKey(blank=True, help_text='the shipping address used for this order', null=True,
on_delete=django.db.models.deletion.CASCADE, related_name='shipping_address_order',
to='geo.address', verbose_name='shipping address')),
],
options={
'verbose_name': 'order',
'verbose_name_plural': 'orders',
},
),
]