Fixes: None; Extra: 1) Add dependency on 'geo' app in core migration initial script;
1008 lines
76 KiB
Python
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',
|
|
},
|
|
),
|
|
]
|