schon/core/migrations/0001_initial.py
Egor fureunoir Gorbunov 0b1a8550ab Features: None;
Fixes: None;

Extra: 1) Add dependency on 'geo' app in core migration initial script;
2025-05-19 14:57:09 +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', '0001_initial'),
]
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',
},
),
]