class Migration(migrations.Migration):

    dependencies = [("services", "0008_servicetranslation")]

    operations = [
        migrations.CreateModel(
            name="AllowedDataField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field_name", models.CharField(max_length=30)),
                (
                    "order",
                    models.PositiveIntegerField(
                        db_index=True,
                        default=services.models.get_next_data_field_order,
                        editable=False,
                    ),
                ),
            ],
            options={"ordering": ["order"]},
            bases=(parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.AddField(
            model_name="service",
            name="allowed_data_fields",
            field=models.ManyToManyField(to="services.AllowedDataField"),
        ),
        migrations.CreateModel(
            name="AllowedDataFieldTranslation",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "language_code",
                    models.CharField(db_index=True,
                                     max_length=15,
                                     verbose_name="Language"),
                ),
                ("label", models.CharField(max_length=64)),
                (
                    "master",
                    models.ForeignKey(
                        editable=False,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="translations",
                        to="services.AllowedDataField",
                    ),
                ),
            ],
            options={
                "verbose_name": "allowed data field Translation",
                "db_table": "services_alloweddatafield_translation",
                "db_tablespace": "",
                "managed": True,
                "default_permissions": (),
                "unique_together": {("language_code", "master")},
            },
        ),
    ]
Esempio n. 2
0
class Migration(migrations.Migration):

    dependencies = [
        ('shuup', '0001_initial'),
        ('contenttypes', '0002_remove_content_type_name'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='BasketCampaign',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
                ('name',
                 models.CharField(max_length=120,
                                  help_text='The name for this campaign.',
                                  verbose_name='name')),
                ('identifier',
                 shuup.core.fields.InternalIdentifierField(max_length=64,
                                                           null=True,
                                                           unique=True,
                                                           editable=False,
                                                           blank=True)),
                ('active',
                 models.BooleanField(verbose_name='active', default=False)),
                ('start_datetime',
                 models.DateTimeField(blank=True,
                                      verbose_name='start date and time',
                                      null=True)),
                ('end_datetime',
                 models.DateTimeField(blank=True,
                                      verbose_name='end date and time',
                                      null=True)),
                ('created_on',
                 models.DateTimeField(verbose_name='created on',
                                      auto_now_add=True)),
                ('modified_on',
                 models.DateTimeField(verbose_name='modified on',
                                      auto_now=True)),
                ('basket_line_text',
                 models.CharField(
                     max_length=120,
                     help_text='This text will be shown in basket.',
                     verbose_name='basket line text')),
            ],
            options={
                'verbose_name': 'Campaign',
                'verbose_name_plural': 'Campaigns',
                'abstract': False,
            },
            bases=(shuup.utils.properties.MoneyPropped,
                   parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.CreateModel(
            name='BasketCampaignTranslation',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
                ('language_code',
                 models.CharField(db_index=True,
                                  max_length=15,
                                  verbose_name='Language')),
                ('public_name',
                 models.CharField(verbose_name='public name', max_length=120)),
                ('master',
                 models.ForeignKey(on_delete=models.CASCADE,
                                   related_name='translations',
                                   to='campaigns.BasketCampaign',
                                   null=True,
                                   editable=False)),
            ],
            options={
                'db_tablespace': '',
                'default_permissions': (),
                'verbose_name': 'Campaign Translation',
                'managed': True,
                'db_table': 'campaigns_basketcampaign_translation',
            },
        ),
        migrations.CreateModel(
            name='BasketCondition',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
                ('active', models.BooleanField(default=True)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='BasketDiscountEffect',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='BasketLineEffect',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='CatalogCampaign',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
                ('name',
                 models.CharField(max_length=120,
                                  help_text='The name for this campaign.',
                                  verbose_name='name')),
                ('identifier',
                 shuup.core.fields.InternalIdentifierField(max_length=64,
                                                           null=True,
                                                           unique=True,
                                                           editable=False,
                                                           blank=True)),
                ('active',
                 models.BooleanField(verbose_name='active', default=False)),
                ('start_datetime',
                 models.DateTimeField(blank=True,
                                      verbose_name='start date and time',
                                      null=True)),
                ('end_datetime',
                 models.DateTimeField(blank=True,
                                      verbose_name='end date and time',
                                      null=True)),
                ('created_on',
                 models.DateTimeField(verbose_name='created on',
                                      auto_now_add=True)),
                ('modified_on',
                 models.DateTimeField(verbose_name='modified on',
                                      auto_now=True)),
            ],
            options={
                'verbose_name': 'Campaign',
                'verbose_name_plural': 'Campaigns',
                'abstract': False,
            },
            bases=(shuup.utils.properties.MoneyPropped,
                   parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.CreateModel(
            name='CatalogCampaignTranslation',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
                ('language_code',
                 models.CharField(db_index=True,
                                  max_length=15,
                                  verbose_name='Language')),
                ('public_name', models.CharField(max_length=120, blank=True)),
                ('master',
                 models.ForeignKey(on_delete=models.CASCADE,
                                   related_name='translations',
                                   to='campaigns.CatalogCampaign',
                                   null=True,
                                   editable=False)),
            ],
            options={
                'db_tablespace': '',
                'default_permissions': (),
                'verbose_name': 'Campaign Translation',
                'managed': True,
                'db_table': 'campaigns_catalogcampaign_translation',
            },
        ),
        migrations.CreateModel(
            name='CatalogFilter',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
                ('active',
                 models.BooleanField(verbose_name='active', default=True)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='ContactGroupSalesRange',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
                ('min_value',
                 shuup.core.fields.MoneyValueField(blank=True,
                                                   decimal_places=9,
                                                   verbose_name='min amount',
                                                   null=True,
                                                   max_digits=36)),
                ('max_value',
                 shuup.core.fields.MoneyValueField(blank=True,
                                                   decimal_places=9,
                                                   verbose_name='max amount',
                                                   null=True,
                                                   max_digits=36)),
                ('group',
                 models.ForeignKey(on_delete=models.CASCADE,
                                   related_name='+',
                                   to='shuup.ContactGroup',
                                   verbose_name='group')),
                ('shop',
                 models.ForeignKey(on_delete=models.CASCADE,
                                   related_name='+',
                                   to='shuup.Shop',
                                   verbose_name='shop')),
            ],
        ),
        migrations.CreateModel(
            name='ContextCondition',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
                ('active', models.BooleanField(default=True)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='Coupon',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
                ('code', models.CharField(max_length=12)),
                ('usage_limit_customer',
                 models.PositiveIntegerField(
                     blank=True,
                     help_text=
                     'Limit the amount of usages per a single customer.',
                     verbose_name='usage limit per customer',
                     null=True)),
                ('usage_limit',
                 models.PositiveIntegerField(
                     blank=True,
                     help_text=
                     'Set the absolute limit of usages for this coupon. If the limit is zero (0) coupon cannot be used.',
                     verbose_name='usage limit',
                     null=True)),
                ('active',
                 models.BooleanField(verbose_name='is active', default=False)),
                ('created_on',
                 models.DateTimeField(verbose_name='created on',
                                      auto_now_add=True)),
                ('modified_on',
                 models.DateTimeField(verbose_name='modified on',
                                      auto_now=True)),
                ('created_by',
                 models.ForeignKey(
                     blank=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     related_name='+',
                     to=settings.AUTH_USER_MODEL,
                     null=True,
                     verbose_name='created by')),
                ('modified_by',
                 models.ForeignKey(
                     blank=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     related_name='+',
                     to=settings.AUTH_USER_MODEL,
                     null=True,
                     verbose_name='modified by')),
            ],
        ),
        migrations.CreateModel(
            name='CouponUsage',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
                ('created_on',
                 models.DateTimeField(verbose_name='created on',
                                      auto_now_add=True)),
                ('modified_on',
                 models.DateTimeField(verbose_name='modified on',
                                      auto_now=True)),
                ('coupon',
                 models.ForeignKey(on_delete=models.CASCADE,
                                   related_name='usages',
                                   to='campaigns.Coupon')),
                ('created_by',
                 models.ForeignKey(
                     blank=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     related_name='+',
                     to=settings.AUTH_USER_MODEL,
                     null=True,
                     verbose_name='created by')),
                ('modified_by',
                 models.ForeignKey(
                     blank=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     related_name='+',
                     to=settings.AUTH_USER_MODEL,
                     null=True,
                     verbose_name='modified by')),
                ('order',
                 models.ForeignKey(on_delete=models.CASCADE,
                                   related_name='coupon_usages',
                                   to='shuup.Order')),
            ],
        ),
        migrations.CreateModel(
            name='ProductDiscountEffect',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='BasketDiscountAmount',
            fields=[
                ('basketdiscounteffect_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.BasketDiscountEffect',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('discount_amount',
                 shuup.core.fields.MoneyValueField(
                     blank=True,
                     null=True,
                     verbose_name='discount amount',
                     help_text='Flat amount of discount.',
                     decimal_places=9,
                     default=None,
                     max_digits=36)),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketdiscounteffect', ),
        ),
        migrations.CreateModel(
            name='BasketDiscountPercentage',
            fields=[
                ('basketdiscounteffect_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.BasketDiscountEffect',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('discount_percentage',
                 models.DecimalField(
                     blank=True,
                     null=True,
                     verbose_name='discount percentage',
                     help_text='The discount percentage for this campaign.',
                     decimal_places=5,
                     max_digits=6)),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketdiscounteffect', ),
        ),
        migrations.CreateModel(
            name='BasketMaxTotalAmountCondition',
            fields=[
                ('basketcondition_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.BasketCondition',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('amount_value',
                 shuup.core.fields.MoneyValueField(
                     blank=True,
                     null=True,
                     verbose_name='maximum basket total amount',
                     decimal_places=9,
                     default=None,
                     max_digits=36)),
            ],
            options={
                'abstract': False,
            },
            bases=(shuup.utils.properties.MoneyPropped,
                   'campaigns.basketcondition'),
        ),
        migrations.CreateModel(
            name='BasketMaxTotalProductAmountCondition',
            fields=[
                ('basketcondition_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.BasketCondition',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('product_count',
                 models.DecimalField(
                     blank=True,
                     decimal_places=9,
                     verbose_name='maximum product count in basket',
                     null=True,
                     max_digits=36)),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketcondition', ),
        ),
        migrations.CreateModel(
            name='BasketTotalAmountCondition',
            fields=[
                ('basketcondition_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.BasketCondition',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('amount_value',
                 shuup.core.fields.MoneyValueField(
                     blank=True,
                     null=True,
                     verbose_name='basket total amount',
                     decimal_places=9,
                     default=None,
                     max_digits=36)),
            ],
            options={
                'abstract': False,
            },
            bases=(shuup.utils.properties.MoneyPropped,
                   'campaigns.basketcondition'),
        ),
        migrations.CreateModel(
            name='BasketTotalProductAmountCondition',
            fields=[
                ('basketcondition_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.BasketCondition',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('product_count',
                 models.DecimalField(blank=True,
                                     decimal_places=9,
                                     verbose_name='product count in basket',
                                     null=True,
                                     max_digits=36)),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketcondition', ),
        ),
        migrations.CreateModel(
            name='CategoryFilter',
            fields=[
                ('catalogfilter_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.CatalogFilter',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('categories',
                 models.ManyToManyField(verbose_name='categories',
                                        to='shuup.Category')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.catalogfilter', ),
        ),
        migrations.CreateModel(
            name='ContactBasketCondition',
            fields=[
                ('basketcondition_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.BasketCondition',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('contacts',
                 models.ManyToManyField(verbose_name='contacts',
                                        to='shuup.Contact')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketcondition', ),
        ),
        migrations.CreateModel(
            name='ContactCondition',
            fields=[
                ('contextcondition_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.ContextCondition',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('contacts',
                 models.ManyToManyField(verbose_name='contacts',
                                        to='shuup.Contact')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.contextcondition', ),
        ),
        migrations.CreateModel(
            name='ContactGroupBasketCondition',
            fields=[
                ('basketcondition_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.BasketCondition',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('contact_groups',
                 models.ManyToManyField(verbose_name='contact groups',
                                        to='shuup.ContactGroup')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketcondition', ),
        ),
        migrations.CreateModel(
            name='ContactGroupCondition',
            fields=[
                ('contextcondition_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.ContextCondition',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('contact_groups',
                 models.ManyToManyField(verbose_name='contact groups',
                                        to='shuup.ContactGroup')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.contextcondition', ),
        ),
        migrations.CreateModel(
            name='DiscountFromProduct',
            fields=[
                ('basketlineeffect_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.BasketLineEffect',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('per_line_discount',
                 models.BooleanField(
                     verbose_name='per line discount',
                     help_text=
                     'Uncheck this if you want to give discount for each matched product.',
                     default=True)),
                ('discount_amount',
                 shuup.core.fields.MoneyValueField(
                     blank=True,
                     null=True,
                     verbose_name='discount amount',
                     help_text='Flat amount of discount.',
                     decimal_places=9,
                     default=None,
                     max_digits=36)),
                ('products',
                 models.ManyToManyField(verbose_name='product',
                                        to='shuup.Product')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketlineeffect', ),
        ),
        migrations.CreateModel(
            name='FreeProductLine',
            fields=[
                ('basketlineeffect_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.BasketLineEffect',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('quantity',
                 models.PositiveIntegerField(default=1,
                                             verbose_name='quantity')),
                ('products',
                 models.ManyToManyField(verbose_name='product',
                                        to='shuup.Product')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketlineeffect', ),
        ),
        migrations.CreateModel(
            name='ProductDiscountAmount',
            fields=[
                ('productdiscounteffect_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.ProductDiscountEffect',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('discount_amount',
                 shuup.core.fields.MoneyValueField(
                     blank=True,
                     null=True,
                     verbose_name='discount amount',
                     help_text='Flat amount of discount.',
                     decimal_places=9,
                     default=None,
                     max_digits=36)),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.productdiscounteffect', ),
        ),
        migrations.CreateModel(
            name='ProductDiscountPercentage',
            fields=[
                ('productdiscounteffect_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.ProductDiscountEffect',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('discount_percentage',
                 models.DecimalField(
                     blank=True,
                     null=True,
                     verbose_name='discount percentage',
                     help_text='The discount percentage for this campaign.',
                     decimal_places=5,
                     max_digits=6)),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.productdiscounteffect', ),
        ),
        migrations.CreateModel(
            name='ProductFilter',
            fields=[
                ('catalogfilter_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.CatalogFilter',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('products',
                 models.ManyToManyField(verbose_name='product',
                                        to='shuup.Product')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.catalogfilter', ),
        ),
        migrations.CreateModel(
            name='ProductsInBasketCondition',
            fields=[
                ('basketcondition_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.BasketCondition',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('quantity',
                 models.PositiveIntegerField(default=1,
                                             verbose_name='quantity')),
                ('products',
                 models.ManyToManyField(blank=True,
                                        verbose_name='products',
                                        to='shuup.Product')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketcondition', ),
        ),
        migrations.CreateModel(
            name='ProductTypeFilter',
            fields=[
                ('catalogfilter_ptr',
                 models.OneToOneField(on_delete=models.CASCADE,
                                      to='campaigns.CatalogFilter',
                                      parent_link=True,
                                      serialize=False,
                                      auto_created=True,
                                      primary_key=True)),
                ('product_types',
                 models.ManyToManyField(verbose_name='product Types',
                                        to='shuup.ProductType')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.catalogfilter', ),
        ),
        migrations.AddField(
            model_name='productdiscounteffect',
            name='campaign',
            field=models.ForeignKey(on_delete=models.CASCADE,
                                    related_name='effects',
                                    to='campaigns.CatalogCampaign',
                                    verbose_name='campaign'),
        ),
        migrations.AddField(
            model_name='productdiscounteffect',
            name='polymorphic_ctype',
            field=models.ForeignKey(
                on_delete=models.CASCADE,
                related_name='polymorphic_campaigns.productdiscounteffect_set+',
                to='contenttypes.ContentType',
                null=True,
                editable=False),
        ),
        migrations.AddField(
            model_name='contextcondition',
            name='polymorphic_ctype',
            field=models.ForeignKey(
                on_delete=models.CASCADE,
                related_name='polymorphic_campaigns.contextcondition_set+',
                to='contenttypes.ContentType',
                null=True,
                editable=False),
        ),
        migrations.AddField(
            model_name='catalogfilter',
            name='polymorphic_ctype',
            field=models.ForeignKey(
                on_delete=models.CASCADE,
                related_name='polymorphic_campaigns.catalogfilter_set+',
                to='contenttypes.ContentType',
                null=True,
                editable=False),
        ),
        migrations.AddField(
            model_name='catalogcampaign',
            name='conditions',
            field=models.ManyToManyField(blank=True,
                                         related_name='campaign',
                                         to='campaigns.ContextCondition'),
        ),
        migrations.AddField(
            model_name='catalogcampaign',
            name='created_by',
            field=models.ForeignKey(
                blank=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name='+',
                to=settings.AUTH_USER_MODEL,
                null=True,
                verbose_name='created by'),
        ),
        migrations.AddField(
            model_name='catalogcampaign',
            name='filters',
            field=models.ManyToManyField(blank=True,
                                         related_name='campaign',
                                         to='campaigns.CatalogFilter'),
        ),
        migrations.AddField(
            model_name='catalogcampaign',
            name='modified_by',
            field=models.ForeignKey(
                blank=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name='+',
                to=settings.AUTH_USER_MODEL,
                null=True,
                verbose_name='modified by'),
        ),
        migrations.AddField(
            model_name='catalogcampaign',
            name='shop',
            field=models.ForeignKey(
                on_delete=models.CASCADE,
                to='shuup.Shop',
                verbose_name='shop',
                help_text='The shop where campaign is active.'),
        ),
        migrations.AddField(
            model_name='basketlineeffect',
            name='campaign',
            field=models.ForeignKey(on_delete=models.CASCADE,
                                    related_name='line_effects',
                                    to='campaigns.BasketCampaign',
                                    verbose_name='campaign'),
        ),
        migrations.AddField(
            model_name='basketlineeffect',
            name='polymorphic_ctype',
            field=models.ForeignKey(
                on_delete=models.CASCADE,
                related_name='polymorphic_campaigns.basketlineeffect_set+',
                to='contenttypes.ContentType',
                null=True,
                editable=False),
        ),
        migrations.AddField(
            model_name='basketdiscounteffect',
            name='campaign',
            field=models.ForeignKey(on_delete=models.CASCADE,
                                    related_name='discount_effects',
                                    to='campaigns.BasketCampaign',
                                    verbose_name='campaign'),
        ),
        migrations.AddField(
            model_name='basketdiscounteffect',
            name='polymorphic_ctype',
            field=models.ForeignKey(
                on_delete=models.CASCADE,
                related_name='polymorphic_campaigns.basketdiscounteffect_set+',
                to='contenttypes.ContentType',
                null=True,
                editable=False),
        ),
        migrations.AddField(
            model_name='basketcondition',
            name='polymorphic_ctype',
            field=models.ForeignKey(
                on_delete=models.CASCADE,
                related_name='polymorphic_campaigns.basketcondition_set+',
                to='contenttypes.ContentType',
                null=True,
                editable=False),
        ),
        migrations.AddField(
            model_name='basketcampaign',
            name='conditions',
            field=models.ManyToManyField(blank=True,
                                         related_name='campaign',
                                         to='campaigns.BasketCondition'),
        ),
        migrations.AddField(
            model_name='basketcampaign',
            name='coupon',
            field=models.OneToOneField(on_delete=models.CASCADE,
                                       verbose_name='coupon',
                                       blank=True,
                                       related_name='campaign',
                                       to='campaigns.Coupon',
                                       null=True),
        ),
        migrations.AddField(
            model_name='basketcampaign',
            name='created_by',
            field=models.ForeignKey(
                blank=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name='+',
                to=settings.AUTH_USER_MODEL,
                null=True,
                verbose_name='created by'),
        ),
        migrations.AddField(
            model_name='basketcampaign',
            name='modified_by',
            field=models.ForeignKey(
                blank=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name='+',
                to=settings.AUTH_USER_MODEL,
                null=True,
                verbose_name='modified by'),
        ),
        migrations.AddField(
            model_name='basketcampaign',
            name='shop',
            field=models.ForeignKey(
                on_delete=models.CASCADE,
                to='shuup.Shop',
                verbose_name='shop',
                help_text='The shop where campaign is active.'),
        ),
        migrations.AlterUniqueTogether(
            name='contactgroupsalesrange',
            unique_together=set([('group', 'shop')]),
        ),
        migrations.AlterUniqueTogether(
            name='catalogcampaigntranslation',
            unique_together=set([('language_code', 'master')]),
        ),
        migrations.AlterUniqueTogether(
            name='basketcampaigntranslation',
            unique_together=set([('language_code', 'master')]),
        ),
    ]
class Migration(migrations.Migration):
    replaces = [
        ('shuup_simple_cms', '0001_initial'),
        ('shuup_simple_cms', '0002_md_to_html'),
        ('shuup_simple_cms', '0003_alter_names'),
    ]

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Page',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  serialize=False,
                                  primary_key=True,
                                  verbose_name='ID')),
                ('available_from',
                 models.DateTimeField(null=True,
                                      blank=True,
                                      verbose_name='available from')),
                ('available_to',
                 models.DateTimeField(null=True,
                                      blank=True,
                                      verbose_name='available to')),
                ('created_on',
                 models.DateTimeField(auto_now_add=True,
                                      verbose_name='created on')),
                ('modified_on',
                 models.DateTimeField(auto_now=True,
                                      verbose_name='modified on')),
                ('identifier',
                 shuup.core.fields.InternalIdentifierField(editable=False,
                                                           blank=True,
                                                           unique=True,
                                                           null=True,
                                                           max_length=64)),
                ('visible_in_menu',
                 models.BooleanField(default=False,
                                     verbose_name='visible in menu')),
                ('list_children_on_page',
                 models.BooleanField(default=False,
                                     verbose_name='list children on page')),
                ('lft',
                 models.PositiveIntegerField(db_index=True, editable=False)),
                ('rght',
                 models.PositiveIntegerField(db_index=True, editable=False)),
                ('tree_id',
                 models.PositiveIntegerField(db_index=True, editable=False)),
                ('level',
                 models.PositiveIntegerField(db_index=True, editable=False)),
                ('created_by',
                 models.ForeignKey(
                     on_delete=django.db.models.deletion.SET_NULL,
                     blank=True,
                     to=settings.AUTH_USER_MODEL,
                     verbose_name='created by',
                     null=True,
                     related_name='+')),
                ('modified_by',
                 models.ForeignKey(
                     on_delete=django.db.models.deletion.SET_NULL,
                     blank=True,
                     to=settings.AUTH_USER_MODEL,
                     verbose_name='modified by',
                     null=True,
                     related_name='+')),
                ('parent',
                 mptt.fields.TreeForeignKey(blank=True,
                                            to='shuup_simple_cms.Page',
                                            verbose_name='parent',
                                            null=True,
                                            related_name='children',
                                            on_delete=models.CASCADE)),
            ],
            options={
                'verbose_name_plural': 'pages',
                'ordering': ('-id', ),
                'verbose_name': 'page',
            },
            bases=(parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.CreateModel(
            name='PageTranslation',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  serialize=False,
                                  primary_key=True,
                                  verbose_name='ID')),
                ('language_code',
                 models.CharField(db_index=True,
                                  max_length=15,
                                  verbose_name='Language')),
                ('title', models.CharField(max_length=256,
                                           verbose_name='title')),
                ('url',
                 models.CharField(blank=True,
                                  default=None,
                                  verbose_name='URL',
                                  null=True,
                                  max_length=100,
                                  unique=True)),
                ('content', models.TextField(verbose_name='content')),
                ('master',
                 models.ForeignKey(editable=False,
                                   to='shuup_simple_cms.Page',
                                   null=True,
                                   related_name='translations',
                                   on_delete=models.CASCADE)),
            ],
            options={
                'default_permissions': (),
                'db_tablespace': '',
                'db_table': 'shuup_simple_cms_page_translation',
                'managed': True,
                'verbose_name': 'page Translation',
            },
        ),
        migrations.AlterUniqueTogether(name='pagetranslation',
                                       unique_together=set([('language_code',
                                                             'master')])),
        migrations.AlterField(
            model_name='page',
            name='available_from',
            field=models.DateTimeField(
                null=True,
                blank=True,
                help_text=(
                    'Set an available from date to restrict the page to '
                    'be available only after a certain date and time. This '
                    'is useful for pages describing sales campaigns or other '
                    'time-sensitive pages.'),
                verbose_name='available from')),
        migrations.AlterField(
            model_name='page',
            name='available_to',
            field=models.DateTimeField(
                null=True,
                blank=True,
                help_text=(
                    'Set an available to date to restrict the page to be '
                    'available only after a certain date and time. This is '
                    'useful for pages describing sales campaigns or other '
                    'time-sensitive pages.'),
                verbose_name='available to')),
        migrations.AlterField(
            model_name='page',
            name='list_children_on_page',
            field=models.BooleanField(help_text=(
                'Check this if this page should list its children pages.'),
                                      default=False,
                                      verbose_name='list children on page'),
        ),
        migrations.AlterField(
            model_name='page',
            name='parent',
            field=mptt.fields.TreeForeignKey(
                blank=True,
                to='shuup_simple_cms.Page',
                verbose_name='parent',
                null=True,
                related_name='children',
                on_delete=models.CASCADE,
                help_text=('Set this to a parent page if this page should be '
                           'subcategorized under another page.'))),
        migrations.AlterField(
            model_name='page',
            name='visible_in_menu',
            field=models.BooleanField(help_text=(
                'Check this if this page should have a link in the top '
                'menu of the store front.'),
                                      default=False,
                                      verbose_name='visible in menu'),
        ),
        migrations.AlterField(
            model_name='pagetranslation',
            name='content',
            field=models.TextField(help_text=(
                'The page content. This is the text that is displayed '
                'when customers click on your page link.'),
                                   verbose_name='content'),
        ),
        migrations.AlterField(
            model_name='pagetranslation',
            name='title',
            field=models.CharField(
                max_length=256,
                help_text=(
                    'The page title. This is shown anywhere links to your '
                    'page are shown.'),
                verbose_name='title'),
        ),
        migrations.AlterField(
            model_name='pagetranslation',
            name='url',
            field=models.CharField(
                blank=True,
                default=None,
                verbose_name='URL',
                null=True,
                max_length=100,
                help_text=(
                    'The page url. Choose a descriptive url so that search '
                    'engines can rank your page higher. Often the best url is '
                    'simply the page title with spaces replaced with dashes.'),
                unique=True),
        ),
    ]
class Migration(migrations.Migration):
    replaces = [
        ('campaigns', '0001_initial'),
        ('campaigns', '0002_productsinbasketcondition_operator'),
        ('campaigns', '0003_category_products'),
        ('campaigns', '0004_logmodels'),
        ('campaigns', '0005_catalogfiltercachedshopproduct'),
        ('campaigns', '0006_basket_cond_category_to_categories'),
        ('campaigns', '0007_add_excluded_categories'),
        ('campaigns', '0008_freeproductline_quantity_to_quantityfield'),
        ('campaigns', '0009_hourcondition'),
        ('campaigns', '0010_hourbasketcondition'),
        ('campaigns', '0011_alter_names'),
    ]

    dependencies = [
        ('wshop', '0001_squashed_0039_alter_names'),
        ('contenttypes', '0002_remove_content_type_name'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='BasketCampaign',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('name', models.CharField(
                    help_text='The name for this campaign.',
                    max_length=120,
                    verbose_name='name')),
                ('identifier', wshop.core.fields.InternalIdentifierField(
                    editable=False,
                    blank=True,
                    max_length=64,
                    null=True,
                    unique=True)),
                ('active', models.BooleanField(
                    help_text=
                    'Check this if the campaign is currently active. Please also set a start and end date.',
                    verbose_name='active',
                    default=False)),
                ('start_datetime', models.DateTimeField(
                    blank=True,
                    help_text=
                    'The date and time the campaign starts. This is only applicable if the campaign is marked as active.',
                    null=True,
                    verbose_name='start date and time')),
                ('end_datetime', models.DateTimeField(
                    blank=True,
                    help_text=
                    'The date and time the campaign ends. This is only applicable if the campaign is marked as active.',
                    null=True,
                    verbose_name='end date and time')),
                ('created_on', models.DateTimeField(
                    verbose_name='created on', auto_now_add=True)),
                ('modified_on', models.DateTimeField(
                    auto_now=True, verbose_name='modified on')),
                ('basket_line_text', models.CharField(
                    help_text='This text will be shown in basket.',
                    max_length=120,
                    verbose_name='basket line text')),
            ],
            options={
                'abstract': False,
                'verbose_name_plural': 'Campaigns',
                'verbose_name': 'Campaign',
            },
            bases=(wshop.utils.properties.MoneyPropped,
                   parler.models.TranslatableModelMixin, models.Model), ),
        migrations.CreateModel(
            name='BasketCampaignLogEntry',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('created_on', models.DateTimeField(
                    verbose_name='created on', auto_now_add=True)),
                ('message', models.CharField(
                    max_length=256, verbose_name='message')),
                ('identifier', models.CharField(
                    blank=True, max_length=64, verbose_name='identifier')),
                ('kind', enumfields.fields.EnumIntegerField(
                    enum=wshop.utils.analog.LogEntryKind,
                    verbose_name='log entry kind',
                    default=0)),
                ('extra', jsonfield.fields.JSONField(
                    blank=True, null=True, verbose_name='extra data')),
                ('target', models.ForeignKey(
                    to='campaigns.BasketCampaign',
                    related_name='log_entries',
                    verbose_name='target')),
                ('user', models.ForeignKey(
                    to=settings.AUTH_USER_MODEL,
                    on_delete=django.db.models.deletion.PROTECT,
                    null=True,
                    verbose_name='user')),
            ],
            options={
                'abstract': False,
            }, ),
        migrations.CreateModel(
            name='BasketCampaignTranslation',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('language_code', models.CharField(
                    max_length=15, db_index=True, verbose_name='Language')),
                ('public_name', models.CharField(
                    help_text='The campaign name to show in the store front.',
                    max_length=120,
                    verbose_name='public name')),
                ('master', models.ForeignKey(
                    to='campaigns.BasketCampaign',
                    editable=False,
                    related_name='translations',
                    null=True)),
            ],
            options={
                'managed': True,
                'db_table': 'campaigns_basketcampaign_translation',
                'default_permissions': (),
                'db_tablespace': '',
                'verbose_name': 'Campaign Translation',
            }, ),
        migrations.CreateModel(
            name='BasketCondition',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('active', models.BooleanField(default=True)),
            ],
            options={
                'abstract': False,
            }, ),
        migrations.CreateModel(
            name='BasketDiscountEffect',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
            ],
            options={
                'abstract': False,
            }, ),
        migrations.CreateModel(
            name='BasketLineEffect',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
            ],
            options={
                'abstract': False,
            }, ),
        migrations.CreateModel(
            name='CatalogCampaign',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('name', models.CharField(
                    help_text='The name for this campaign.',
                    max_length=120,
                    verbose_name='name')),
                ('identifier', wshop.core.fields.InternalIdentifierField(
                    editable=False,
                    blank=True,
                    max_length=64,
                    null=True,
                    unique=True)),
                ('active', models.BooleanField(
                    help_text=
                    'Check this if the campaign is currently active. Please also set a start and end date.',
                    verbose_name='active',
                    default=False)),
                ('start_datetime', models.DateTimeField(
                    blank=True,
                    help_text=
                    'The date and time the campaign starts. This is only applicable if the campaign is marked as active.',
                    null=True,
                    verbose_name='start date and time')),
                ('end_datetime', models.DateTimeField(
                    blank=True,
                    help_text=
                    'The date and time the campaign ends. This is only applicable if the campaign is marked as active.',
                    null=True,
                    verbose_name='end date and time')),
                ('created_on', models.DateTimeField(
                    verbose_name='created on', auto_now_add=True)),
                ('modified_on', models.DateTimeField(
                    auto_now=True, verbose_name='modified on')),
            ],
            options={
                'abstract': False,
                'verbose_name_plural': 'Campaigns',
                'verbose_name': 'Campaign',
            },
            bases=(wshop.utils.properties.MoneyPropped,
                   parler.models.TranslatableModelMixin, models.Model), ),
        migrations.CreateModel(
            name='CatalogCampaignLogEntry',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('created_on', models.DateTimeField(
                    verbose_name='created on', auto_now_add=True)),
                ('message', models.CharField(
                    max_length=256, verbose_name='message')),
                ('identifier', models.CharField(
                    blank=True, max_length=64, verbose_name='identifier')),
                ('kind', enumfields.fields.EnumIntegerField(
                    enum=wshop.utils.analog.LogEntryKind,
                    verbose_name='log entry kind',
                    default=0)),
                ('extra', jsonfield.fields.JSONField(
                    blank=True, null=True, verbose_name='extra data')),
                ('target', models.ForeignKey(
                    to='campaigns.CatalogCampaign',
                    related_name='log_entries',
                    verbose_name='target')),
                ('user', models.ForeignKey(
                    to=settings.AUTH_USER_MODEL,
                    on_delete=django.db.models.deletion.PROTECT,
                    null=True,
                    verbose_name='user')),
            ],
            options={
                'abstract': False,
            }, ),
        migrations.CreateModel(
            name='CatalogCampaignTranslation',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('language_code', models.CharField(
                    max_length=15, db_index=True, verbose_name='Language')),
                ('public_name', models.CharField(
                    blank=True,
                    help_text='The campaign name to show in the store front.',
                    max_length=120)),
                ('master', models.ForeignKey(
                    to='campaigns.CatalogCampaign',
                    editable=False,
                    related_name='translations',
                    null=True)),
            ],
            options={
                'managed': True,
                'db_table': 'campaigns_catalogcampaign_translation',
                'default_permissions': (),
                'db_tablespace': '',
                'verbose_name': 'Campaign Translation',
            }, ),
        migrations.CreateModel(
            name='CatalogFilter',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('active', models.BooleanField(
                    verbose_name='active', default=True)),
            ],
            options={
                'abstract': False,
            }, ),
        migrations.CreateModel(
            name='CatalogFilterCachedShopProduct',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
            ], ),
        migrations.CreateModel(
            name='ContactGroupSalesRange',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('min_value', wshop.core.fields.MoneyValueField(
                    blank=True,
                    decimal_places=9,
                    null=True,
                    max_digits=36,
                    verbose_name='min amount')),
                ('max_value', wshop.core.fields.MoneyValueField(
                    blank=True,
                    decimal_places=9,
                    null=True,
                    max_digits=36,
                    verbose_name='max amount')),
                ('group', models.ForeignKey(
                    to='wshop.ContactGroup',
                    related_name='+',
                    verbose_name='group')),
                ('shop', models.ForeignKey(
                    to='wshop.Shop', related_name='+', verbose_name='shop')),
            ], ),
        migrations.CreateModel(
            name='ContextCondition',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('active', models.BooleanField(default=True)),
            ],
            options={
                'abstract': False,
            }, ),
        migrations.CreateModel(
            name='Coupon',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('code', models.CharField(max_length=12)),
                ('usage_limit_customer', models.PositiveIntegerField(
                    blank=True,
                    help_text=
                    'Limit the amount of usages per a single customer.',
                    null=True,
                    verbose_name='usage limit per customer')),
                ('usage_limit', models.PositiveIntegerField(
                    blank=True,
                    help_text=
                    'Set the absolute limit of usages for this coupon. If the limit is zero (0) coupon cannot be used.',
                    null=True,
                    verbose_name='usage limit')),
                ('active', models.BooleanField(
                    verbose_name='is active', default=False)),
                ('created_on', models.DateTimeField(
                    verbose_name='created on', auto_now_add=True)),
                ('modified_on', models.DateTimeField(
                    auto_now=True, verbose_name='modified on')),
                ('created_by', models.ForeignKey(
                    to=settings.AUTH_USER_MODEL,
                    blank=True,
                    on_delete=django.db.models.deletion.SET_NULL,
                    null=True,
                    verbose_name='created by',
                    related_name='+')),
                ('modified_by', models.ForeignKey(
                    to=settings.AUTH_USER_MODEL,
                    blank=True,
                    on_delete=django.db.models.deletion.SET_NULL,
                    null=True,
                    verbose_name='modified by',
                    related_name='+')),
            ], ),
        migrations.CreateModel(
            name='CouponLogEntry',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('created_on', models.DateTimeField(
                    verbose_name='created on', auto_now_add=True)),
                ('message', models.CharField(
                    max_length=256, verbose_name='message')),
                ('identifier', models.CharField(
                    blank=True, max_length=64, verbose_name='identifier')),
                ('kind', enumfields.fields.EnumIntegerField(
                    enum=wshop.utils.analog.LogEntryKind,
                    verbose_name='log entry kind',
                    default=0)),
                ('extra', jsonfield.fields.JSONField(
                    blank=True, null=True, verbose_name='extra data')),
                ('target', models.ForeignKey(
                    to='campaigns.Coupon',
                    related_name='log_entries',
                    verbose_name='target')),
                ('user', models.ForeignKey(
                    to=settings.AUTH_USER_MODEL,
                    on_delete=django.db.models.deletion.PROTECT,
                    null=True,
                    verbose_name='user')),
            ],
            options={
                'abstract': False,
            }, ),
        migrations.CreateModel(
            name='CouponUsage',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('created_on', models.DateTimeField(
                    verbose_name='created on', auto_now_add=True)),
                ('modified_on', models.DateTimeField(
                    auto_now=True, verbose_name='modified on')),
                ('coupon', models.ForeignKey(
                    to='campaigns.Coupon', related_name='usages')),
                ('created_by', models.ForeignKey(
                    to=settings.AUTH_USER_MODEL,
                    blank=True,
                    on_delete=django.db.models.deletion.SET_NULL,
                    null=True,
                    verbose_name='created by',
                    related_name='+')),
                ('modified_by', models.ForeignKey(
                    to=settings.AUTH_USER_MODEL,
                    blank=True,
                    on_delete=django.db.models.deletion.SET_NULL,
                    null=True,
                    verbose_name='modified by',
                    related_name='+')),
                ('order', models.ForeignKey(
                    to='wshop.Order', related_name='coupon_usages')),
            ], ),
        migrations.CreateModel(
            name='CouponUsageLogEntry',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
                ('created_on', models.DateTimeField(
                    verbose_name='created on', auto_now_add=True)),
                ('message', models.CharField(
                    max_length=256, verbose_name='message')),
                ('identifier', models.CharField(
                    blank=True, max_length=64, verbose_name='identifier')),
                ('kind', enumfields.fields.EnumIntegerField(
                    enum=wshop.utils.analog.LogEntryKind,
                    verbose_name='log entry kind',
                    default=0)),
                ('extra', jsonfield.fields.JSONField(
                    blank=True, null=True, verbose_name='extra data')),
                ('target', models.ForeignKey(
                    to='campaigns.CouponUsage',
                    related_name='log_entries',
                    verbose_name='target')),
                ('user', models.ForeignKey(
                    to=settings.AUTH_USER_MODEL,
                    on_delete=django.db.models.deletion.PROTECT,
                    null=True,
                    verbose_name='user')),
            ],
            options={
                'abstract': False,
            }, ),
        migrations.CreateModel(
            name='ProductDiscountEffect',
            fields=[
                ('id', models.AutoField(
                    auto_created=True,
                    serialize=False,
                    primary_key=True,
                    verbose_name='ID')),
            ],
            options={
                'abstract': False,
            }, ),
        migrations.CreateModel(
            name='BasketDiscountAmount',
            fields=[
                ('basketdiscounteffect_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketDiscountEffect')),
                ('discount_amount', wshop.core.fields.MoneyValueField(
                    decimal_places=9,
                    max_digits=36,
                    blank=True,
                    help_text='Flat amount of discount.',
                    null=True,
                    verbose_name='discount amount',
                    default=None)),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketdiscounteffect', ), ),
        migrations.CreateModel(
            name='BasketDiscountPercentage',
            fields=[
                ('basketdiscounteffect_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketDiscountEffect')),
                ('discount_percentage', models.DecimalField(
                    decimal_places=5,
                    max_digits=6,
                    blank=True,
                    help_text='The discount percentage for this campaign.',
                    null=True,
                    verbose_name='discount percentage')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketdiscounteffect', ), ),
        migrations.CreateModel(
            name='BasketMaxTotalAmountCondition',
            fields=[
                ('basketcondition_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketCondition')),
                ('amount_value', wshop.core.fields.MoneyValueField(
                    decimal_places=9,
                    max_digits=36,
                    blank=True,
                    null=True,
                    verbose_name='maximum basket total amount',
                    default=None)),
            ],
            options={
                'abstract': False,
            },
            bases=(wshop.utils.properties.MoneyPropped,
                   'campaigns.basketcondition'), ),
        migrations.CreateModel(
            name='BasketMaxTotalProductAmountCondition',
            fields=[
                ('basketcondition_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketCondition')),
                ('product_count', models.DecimalField(
                    blank=True,
                    decimal_places=9,
                    null=True,
                    max_digits=36,
                    verbose_name='maximum product count in basket')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketcondition', ), ),
        migrations.CreateModel(
            name='BasketTotalAmountCondition',
            fields=[
                ('basketcondition_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketCondition')),
                ('amount_value', wshop.core.fields.MoneyValueField(
                    decimal_places=9,
                    max_digits=36,
                    blank=True,
                    null=True,
                    verbose_name='basket total amount',
                    default=None)),
            ],
            options={
                'abstract': False,
            },
            bases=(wshop.utils.properties.MoneyPropped,
                   'campaigns.basketcondition'), ),
        migrations.CreateModel(
            name='BasketTotalProductAmountCondition',
            fields=[
                ('basketcondition_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketCondition')),
                ('product_count', models.DecimalField(
                    blank=True,
                    decimal_places=9,
                    null=True,
                    max_digits=36,
                    verbose_name='product count in basket')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketcondition', ), ),
        migrations.CreateModel(
            name='CategoryFilter',
            fields=[
                ('catalogfilter_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.CatalogFilter')),
                ('categories', models.ManyToManyField(
                    to='wshop.Category', verbose_name='categories')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.catalogfilter', ), ),
        migrations.CreateModel(
            name='CategoryProductsBasketCondition',
            fields=[
                ('basketcondition_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketCondition')),
                ('operator', enumfields.fields.EnumIntegerField(
                    enum=wshop.campaigns.models.basket_conditions.
                    ComparisonOperator,
                    verbose_name='operator',
                    default=1)),
                ('quantity', models.PositiveIntegerField(
                    verbose_name='quantity', default=1)),
                ('categories', models.ManyToManyField(
                    to='wshop.Category',
                    verbose_name='categories',
                    related_name=
                    '_categoryproductsbasketcondition_categories_+')),
                ('excluded_categories', models.ManyToManyField(
                    blank=True,
                    help_text=
                    "If the customer has even a single product in the basket from these categories this rule won't match thus the campaign cannot be applied to the basket.",
                    to='wshop.Category',
                    verbose_name='excluded categories',
                    related_name=
                    '_categoryproductsbasketcondition_excluded_categories_+')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketcondition', ), ),
        migrations.CreateModel(
            name='ContactBasketCondition',
            fields=[
                ('basketcondition_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketCondition')),
                ('contacts', models.ManyToManyField(
                    to='wshop.Contact', verbose_name='contacts')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketcondition', ), ),
        migrations.CreateModel(
            name='ContactCondition',
            fields=[
                ('contextcondition_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.ContextCondition')),
                ('contacts', models.ManyToManyField(
                    to='wshop.Contact', verbose_name='contacts')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.contextcondition', ), ),
        migrations.CreateModel(
            name='ContactGroupBasketCondition',
            fields=[
                ('basketcondition_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketCondition')),
                ('contact_groups', models.ManyToManyField(
                    to='wshop.ContactGroup', verbose_name='contact groups')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketcondition', ), ),
        migrations.CreateModel(
            name='ContactGroupCondition',
            fields=[
                ('contextcondition_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.ContextCondition')),
                ('contact_groups', models.ManyToManyField(
                    to='wshop.ContactGroup', verbose_name='contact groups')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.contextcondition', ), ),
        migrations.CreateModel(
            name='DiscountFromCategoryProducts',
            fields=[
                ('basketlineeffect_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketLineEffect')),
                ('discount_amount', wshop.core.fields.MoneyValueField(
                    decimal_places=9,
                    max_digits=36,
                    blank=True,
                    help_text='Flat amount of discount.',
                    null=True,
                    verbose_name='discount amount',
                    default=None)),
                ('discount_percentage', models.DecimalField(
                    decimal_places=5,
                    max_digits=6,
                    blank=True,
                    help_text='The discount percentage for this campaign.',
                    null=True,
                    verbose_name='discount percentage')),
                ('category', models.ForeignKey(
                    to='wshop.Category', verbose_name='category')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketlineeffect', ), ),
        migrations.CreateModel(
            name='DiscountFromProduct',
            fields=[
                ('basketlineeffect_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketLineEffect')),
                ('per_line_discount', models.BooleanField(
                    help_text=
                    'Uncheck this if you want to give discount for each matched product.',
                    verbose_name='per line discount',
                    default=True)),
                ('discount_amount', wshop.core.fields.MoneyValueField(
                    decimal_places=9,
                    max_digits=36,
                    blank=True,
                    help_text='Flat amount of discount.',
                    null=True,
                    verbose_name='discount amount',
                    default=None)),
                ('products', models.ManyToManyField(
                    to='wshop.Product', verbose_name='product')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketlineeffect', ), ),
        migrations.CreateModel(
            name='FreeProductLine',
            fields=[
                ('basketlineeffect_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketLineEffect')),
                ('quantity', wshop.core.fields.QuantityField(
                    decimal_places=9,
                    max_digits=36,
                    verbose_name='quantity',
                    default=1)),
                ('products', models.ManyToManyField(
                    to='wshop.Product', verbose_name='product')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketlineeffect', ), ),
        migrations.CreateModel(
            name='HourBasketCondition',
            fields=[
                ('basketcondition_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketCondition')),
                ('hour_start', models.TimeField(
                    help_text='12pm is considered noon and 12am as midnight.',
                    verbose_name='start time')),
                ('hour_end', models.TimeField(
                    help_text=
                    '12pm is considered noon and 12am as midnight. End time is not considered match.',
                    verbose_name='end time')),
                ('days', models.CharField(
                    max_length=255,
                    verbose_name='days',
                    validators=[
                        django.core.validators.RegexValidator(
                            re.compile('^[\\d,]+\\Z', 32),
                            'Enter only digits separated by commas.',
                            'invalid')
                    ])),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketcondition', ), ),
        migrations.CreateModel(
            name='HourCondition',
            fields=[
                ('contextcondition_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.ContextCondition')),
                ('hour_start', models.TimeField(
                    help_text='12pm is considered noon and 12am as midnight.',
                    verbose_name='start time')),
                ('hour_end', models.TimeField(
                    help_text=
                    '12pm is considered noon and 12am as midnight. End time is not considered match.',
                    verbose_name='end time')),
                ('days', models.CharField(
                    max_length=255,
                    verbose_name='days',
                    validators=[
                        django.core.validators.RegexValidator(
                            re.compile('^[\\d,]+\\Z', 32),
                            'Enter only digits separated by commas.',
                            'invalid')
                    ])),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.contextcondition', ), ),
        migrations.CreateModel(
            name='ProductDiscountAmount',
            fields=[
                ('productdiscounteffect_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.ProductDiscountEffect')),
                ('discount_amount', wshop.core.fields.MoneyValueField(
                    decimal_places=9,
                    max_digits=36,
                    blank=True,
                    help_text='Flat amount of discount.',
                    null=True,
                    verbose_name='discount amount',
                    default=None)),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.productdiscounteffect', ), ),
        migrations.CreateModel(
            name='ProductDiscountPercentage',
            fields=[
                ('productdiscounteffect_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.ProductDiscountEffect')),
                ('discount_percentage', models.DecimalField(
                    decimal_places=5,
                    max_digits=6,
                    blank=True,
                    help_text='The discount percentage for this campaign.',
                    null=True,
                    verbose_name='discount percentage')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.productdiscounteffect', ), ),
        migrations.CreateModel(
            name='ProductFilter',
            fields=[
                ('catalogfilter_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.CatalogFilter')),
                ('products', models.ManyToManyField(
                    to='wshop.Product', verbose_name='product')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.catalogfilter', ), ),
        migrations.CreateModel(
            name='ProductsInBasketCondition',
            fields=[
                ('basketcondition_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.BasketCondition')),
                ('operator', enumfields.fields.EnumIntegerField(
                    enum=wshop.campaigns.models.basket_conditions.
                    ComparisonOperator,
                    verbose_name='operator',
                    default=1)),
                ('quantity', models.PositiveIntegerField(
                    verbose_name='quantity', default=1)),
                ('products', models.ManyToManyField(
                    blank=True, to='wshop.Product', verbose_name='products')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.basketcondition', ), ),
        migrations.CreateModel(
            name='ProductTypeFilter',
            fields=[
                ('catalogfilter_ptr', models.OneToOneField(
                    auto_created=True,
                    primary_key=True,
                    parent_link=True,
                    serialize=False,
                    to='campaigns.CatalogFilter')),
                ('product_types', models.ManyToManyField(
                    to='wshop.ProductType', verbose_name='product Types')),
            ],
            options={
                'abstract': False,
            },
            bases=('campaigns.catalogfilter', ), ),
        migrations.AddField(
            model_name='productdiscounteffect',
            name='campaign',
            field=models.ForeignKey(
                to='campaigns.CatalogCampaign',
                related_name='effects',
                verbose_name='campaign'), ),
        migrations.AddField(
            model_name='productdiscounteffect',
            name='polymorphic_ctype',
            field=models.ForeignKey(
                to='contenttypes.ContentType',
                editable=False,
                related_name=
                'polymorphic_campaigns.productdiscounteffect_set+',
                null=True), ),
        migrations.AddField(
            model_name='contextcondition',
            name='polymorphic_ctype',
            field=models.ForeignKey(
                to='contenttypes.ContentType',
                editable=False,
                related_name='polymorphic_campaigns.contextcondition_set+',
                null=True), ),
        migrations.AddField(
            model_name='catalogfiltercachedshopproduct',
            name='filter',
            field=models.ForeignKey(
                to='campaigns.CatalogFilter',
                related_name='cached_shop_products'), ),
        migrations.AddField(
            model_name='catalogfiltercachedshopproduct',
            name='shop_product',
            field=models.ForeignKey(
                to='wshop.ShopProduct',
                related_name='cached_catalog_campaign_filters'), ),
        migrations.AddField(
            model_name='catalogfilter',
            name='polymorphic_ctype',
            field=models.ForeignKey(
                to='contenttypes.ContentType',
                editable=False,
                related_name='polymorphic_campaigns.catalogfilter_set+',
                null=True), ),
        migrations.AddField(
            model_name='catalogcampaign',
            name='conditions',
            field=models.ManyToManyField(
                blank=True,
                to='campaigns.ContextCondition',
                related_name='campaign'), ),
        migrations.AddField(
            model_name='catalogcampaign',
            name='created_by',
            field=models.ForeignKey(
                to=settings.AUTH_USER_MODEL,
                blank=True,
                on_delete=django.db.models.deletion.SET_NULL,
                null=True,
                verbose_name='created by',
                related_name='+'), ),
        migrations.AddField(
            model_name='catalogcampaign',
            name='filters',
            field=models.ManyToManyField(
                blank=True,
                to='campaigns.CatalogFilter',
                related_name='campaign'), ),
        migrations.AddField(
            model_name='catalogcampaign',
            name='modified_by',
            field=models.ForeignKey(
                to=settings.AUTH_USER_MODEL,
                blank=True,
                on_delete=django.db.models.deletion.SET_NULL,
                null=True,
                verbose_name='modified by',
                related_name='+'), ),
        migrations.AddField(
            model_name='catalogcampaign',
            name='shop',
            field=models.ForeignKey(
                help_text='The shop where the campaign is active.',
                to='wshop.Shop',
                verbose_name='shop'), ),
        migrations.AddField(
            model_name='basketlineeffect',
            name='campaign',
            field=models.ForeignKey(
                to='campaigns.BasketCampaign',
                related_name='line_effects',
                verbose_name='campaign'), ),
        migrations.AddField(
            model_name='basketlineeffect',
            name='polymorphic_ctype',
            field=models.ForeignKey(
                to='contenttypes.ContentType',
                editable=False,
                related_name='polymorphic_campaigns.basketlineeffect_set+',
                null=True), ),
        migrations.AddField(
            model_name='basketdiscounteffect',
            name='campaign',
            field=models.ForeignKey(
                to='campaigns.BasketCampaign',
                related_name='discount_effects',
                verbose_name='campaign'), ),
        migrations.AddField(
            model_name='basketdiscounteffect',
            name='polymorphic_ctype',
            field=models.ForeignKey(
                to='contenttypes.ContentType',
                editable=False,
                related_name='polymorphic_campaigns.basketdiscounteffect_set+',
                null=True), ),
        migrations.AddField(
            model_name='basketcondition',
            name='polymorphic_ctype',
            field=models.ForeignKey(
                to='contenttypes.ContentType',
                editable=False,
                related_name='polymorphic_campaigns.basketcondition_set+',
                null=True), ),
        migrations.AddField(
            model_name='basketcampaign',
            name='conditions',
            field=models.ManyToManyField(
                blank=True,
                to='campaigns.BasketCondition',
                related_name='campaign'), ),
        migrations.AddField(
            model_name='basketcampaign',
            name='coupon',
            field=models.OneToOneField(
                blank=True,
                to='campaigns.Coupon',
                null=True,
                verbose_name='coupon',
                related_name='campaign'), ),
        migrations.AddField(
            model_name='basketcampaign',
            name='created_by',
            field=models.ForeignKey(
                to=settings.AUTH_USER_MODEL,
                blank=True,
                on_delete=django.db.models.deletion.SET_NULL,
                null=True,
                verbose_name='created by',
                related_name='+'), ),
        migrations.AddField(
            model_name='basketcampaign',
            name='modified_by',
            field=models.ForeignKey(
                to=settings.AUTH_USER_MODEL,
                blank=True,
                on_delete=django.db.models.deletion.SET_NULL,
                null=True,
                verbose_name='modified by',
                related_name='+'), ),
        migrations.AddField(
            model_name='basketcampaign',
            name='shop',
            field=models.ForeignKey(
                help_text='The shop where the campaign is active.',
                to='wshop.Shop',
                verbose_name='shop'), ),
        migrations.AlterUniqueTogether(
            name='contactgroupsalesrange',
            unique_together=set([('group', 'shop')]), ),
        migrations.AlterUniqueTogether(
            name='catalogcampaigntranslation',
            unique_together=set([('language_code', 'master')]), ),
        migrations.AlterUniqueTogether(
            name='basketcampaigntranslation',
            unique_together=set([('language_code', 'master')]), ),
    ]
Esempio n. 5
0
class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('shuup', '0045_disable_default_marketing_permission'),
    ]

    operations = [
        migrations.CreateModel(
            name='Task',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('name', models.CharField(max_length=60, verbose_name='name')),
                ('status',
                 enumfields.fields.EnumIntegerField(
                     default=1,
                     enum=shuup.tasks.models.TaskStatus,
                     verbose_name='status')),
                ('priority',
                 models.PositiveIntegerField(db_index=True,
                                             default=0,
                                             verbose_name='priority')),
                ('completed_on',
                 models.DateTimeField(blank=True,
                                      null=True,
                                      verbose_name='completed on')),
                ('created_on',
                 models.DateTimeField(auto_now_add=True,
                                      db_index=True,
                                      verbose_name='created on')),
                ('modified_on',
                 models.DateTimeField(auto_now=True,
                                      db_index=True,
                                      verbose_name='modified on')),
                ('assigned_to',
                 models.ForeignKey(blank=True,
                                   null=True,
                                   on_delete=django.db.models.deletion.CASCADE,
                                   related_name='assigned_tasks',
                                   to='shuup.Contact',
                                   verbose_name='assigned to')),
                ('completed_by',
                 models.ForeignKey(blank=True,
                                   null=True,
                                   on_delete=django.db.models.deletion.CASCADE,
                                   related_name='completed_tasks',
                                   to='shuup.Contact',
                                   verbose_name='completed by')),
                ('creator',
                 models.ForeignKey(blank=True,
                                   null=True,
                                   on_delete=django.db.models.deletion.CASCADE,
                                   related_name='creted_tasks',
                                   to='shuup.Contact',
                                   verbose_name='creator')),
                ('shop',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='tasks',
                                   to='shuup.Shop',
                                   verbose_name='shop')),
            ],
        ),
        migrations.CreateModel(
            name='TaskComment',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('visibility',
                 enumfields.fields.EnumIntegerField(
                     db_index=True,
                     default=1,
                     enum=shuup.tasks.models.TaskCommentVisibility,
                     verbose_name='visibility')),
                ('body', models.TextField(verbose_name='body')),
                ('created_on',
                 models.DateTimeField(auto_now_add=True,
                                      db_index=True,
                                      verbose_name='created on')),
                ('modified_on',
                 models.DateTimeField(auto_now=True,
                                      db_index=True,
                                      verbose_name='modified on')),
                ('author',
                 models.ForeignKey(blank=True,
                                   null=True,
                                   on_delete=django.db.models.deletion.CASCADE,
                                   related_name='task_comments',
                                   to='shuup.Contact',
                                   verbose_name='author')),
                ('task',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='comments',
                                   to='shuup_tasks.Task',
                                   verbose_name='task')),
            ],
        ),
        migrations.CreateModel(
            name='TaskLogEntry',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('created_on',
                 models.DateTimeField(auto_now_add=True,
                                      verbose_name='created on')),
                ('message',
                 models.CharField(max_length=256, verbose_name='message')),
                ('identifier',
                 models.CharField(blank=True,
                                  max_length=64,
                                  verbose_name='identifier')),
                ('kind',
                 enumfields.fields.EnumIntegerField(
                     default=0,
                     enum=shuup.utils.analog.LogEntryKind,
                     verbose_name='log entry kind')),
                ('extra',
                 jsonfield.fields.JSONField(blank=True,
                                            null=True,
                                            verbose_name='extra data')),
                ('target',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='log_entries',
                                   to='shuup_tasks.Task',
                                   verbose_name='target')),
                ('user',
                 models.ForeignKey(null=True,
                                   on_delete=django.db.models.deletion.PROTECT,
                                   to=settings.AUTH_USER_MODEL,
                                   verbose_name='user')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='TaskType',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('identifier',
                 shuup.core.fields.InternalIdentifierField(blank=True,
                                                           editable=False,
                                                           max_length=64,
                                                           null=True,
                                                           unique=False)),
                ('shop',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='task_types',
                                   to='shuup.Shop',
                                   verbose_name='shop')),
            ],
            options={
                'verbose_name': 'task type',
                'verbose_name_plural': 'task types',
            },
            bases=(parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.CreateModel(
            name='TaskTypeTranslation',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('language_code',
                 models.CharField(db_index=True,
                                  max_length=15,
                                  verbose_name='Language')),
                ('name', models.TextField(verbose_name='name')),
                ('master',
                 models.ForeignKey(editable=False,
                                   null=True,
                                   on_delete=django.db.models.deletion.CASCADE,
                                   related_name='translations',
                                   to='shuup_tasks.TaskType')),
            ],
            options={
                'db_tablespace': '',
                'managed': True,
                'default_permissions': (),
                'verbose_name': 'task type Translation',
                'db_table': 'shuup_tasks_tasktype_translation',
            },
        ),
        migrations.AddField(
            model_name='task',
            name='type',
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name='tasks',
                to='shuup_tasks.TaskType',
                verbose_name='task type'),
        ),
        migrations.AlterUniqueTogether(
            name='tasktypetranslation',
            unique_together=set([('language_code', 'master')]),
        ),
        migrations.AlterUniqueTogether(
            name='tasktype',
            unique_together=set([('shop', 'identifier')]),
        ),
    ]
class Migration(migrations.Migration):

    initial = True

    dependencies = [("profiles", "0022_add_newsletter_options")]

    operations = [
        migrations.CreateModel(
            name="SubscriptionTypeCategory",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("code", models.CharField(max_length=32)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                (
                    "order",
                    models.PositiveIntegerField(
                        db_index=True, default=1, editable=False,
                    ),
                ),
            ],
            options={"abstract": False, "ordering": ["order"]},
            bases=(parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.CreateModel(
            name="SubscriptionType",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("code", models.CharField(max_length=32)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                (
                    "order",
                    models.PositiveIntegerField(
                        db_index=True, default=1, editable=False,
                    ),
                ),
                (
                    "subscription_type_category",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="subscription_types",
                        to="subscriptions.SubscriptionTypeCategory",
                    ),
                ),
            ],
            options={"abstract": False, "ordering": ["order"]},
            bases=(parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.CreateModel(
            name="Subscription",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("enabled", models.BooleanField(default=True)),
                (
                    "profile",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="subscriptions",
                        to="profiles.Profile",
                    ),
                ),
                (
                    "subscription_type",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="subscriptions",
                        to="subscriptions.SubscriptionType",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="SubscriptionTypeTranslation",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "language_code",
                    models.CharField(
                        db_index=True, max_length=15, verbose_name="Language"
                    ),
                ),
                ("label", models.CharField(max_length=255)),
                (
                    "master",
                    models.ForeignKey(
                        editable=False,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="translations",
                        to="subscriptions.SubscriptionType",
                    ),
                ),
            ],
            options={
                "verbose_name": "subscription type Translation",
                "db_table": "subscriptions_subscriptiontype_translation",
                "db_tablespace": "",
                "managed": True,
                "default_permissions": (),
                "unique_together": {("language_code", "master")},
            },
        ),
        migrations.CreateModel(
            name="SubscriptionTypeCategoryTranslation",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "language_code",
                    models.CharField(
                        db_index=True, max_length=15, verbose_name="Language"
                    ),
                ),
                ("label", models.CharField(max_length=255)),
                (
                    "master",
                    models.ForeignKey(
                        editable=False,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="translations",
                        to="subscriptions.SubscriptionTypeCategory",
                    ),
                ),
            ],
            options={
                "verbose_name": "subscription type category Translation",
                "db_table": "subscriptions_subscriptiontypecategory_translation",
                "db_tablespace": "",
                "managed": True,
                "default_permissions": (),
                "unique_together": {("language_code", "master")},
            },
        ),
    ]
Esempio n. 7
0
class Migration(migrations.Migration):

    dependencies = [
        ('shuup', '0085_longer_order_line_sku'),
    ]

    operations = [
        migrations.AddField(
            model_name='attribute',
            name='max_choices',
            field=models.PositiveIntegerField(
                default=1,
                help_text=
                'Maximum amount of choices that user can choose from existing options. This field has affect only for choices type.',
                verbose_name='max choices'),
        ),
        migrations.AddField(
            model_name='attribute',
            name='min_choices',
            field=models.PositiveIntegerField(
                default=0,
                help_text=
                'Minimum amount of choices that user can choose from existing options. This field has affect only for choices type.',
                verbose_name='min choices'),
        ),
        migrations.AddField(
            model_name='attribute',
            name='ordering',
            field=models.IntegerField(
                default=0,
                help_text=
                'The ordering in which your attribute will be displayed.'),
        ),
        migrations.CreateModel(
            name='AttributeChoiceOption',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('attribute',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='choices',
                                   to='shuup.Attribute',
                                   verbose_name='attribute')),
            ],
            options={
                'abstract': False,
            },
            bases=(parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.AddField(
            model_name='productattribute',
            name='chosen_options',
            field=models.ManyToManyField(to='shuup.AttributeChoiceOption',
                                         verbose_name='chosen options'),
        ),
        migrations.CreateModel(
            name='AttributeChoiceOptionTranslation',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('language_code',
                 models.CharField(db_index=True,
                                  max_length=15,
                                  verbose_name='Language')),
                ('name',
                 models.CharField(
                     help_text='The attribute choice option name. ',
                     max_length=256,
                     verbose_name='name')),
                ('master',
                 parler.fields.TranslationsForeignKey(
                     editable=False,
                     null=True,
                     on_delete=django.db.models.deletion.CASCADE,
                     related_name='translations',
                     to='shuup.AttributeChoiceOption')),
            ],
            options={
                'verbose_name': 'attribute choice option Translation',
                'db_table': 'shuup_attributechoiceoption_translation',
                'db_tablespace': '',
                'managed': True,
                'default_permissions': (),
                'unique_together': {('language_code', 'master')},
            },
            bases=(parler.models.TranslatedFieldsModelMixin, models.Model),
        ),
    ]
Esempio n. 8
0
class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Page',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
                ('available_from',
                 models.DateTimeField(blank=True,
                                      verbose_name='available from',
                                      null=True)),
                ('available_to',
                 models.DateTimeField(blank=True,
                                      verbose_name='available to',
                                      null=True)),
                ('created_on',
                 models.DateTimeField(verbose_name='created on',
                                      auto_now_add=True)),
                ('modified_on',
                 models.DateTimeField(verbose_name='modified on',
                                      auto_now=True)),
                ('identifier',
                 shuup.core.fields.InternalIdentifierField(max_length=64,
                                                           null=True,
                                                           unique=True,
                                                           editable=False,
                                                           blank=True)),
                ('visible_in_menu',
                 models.BooleanField(verbose_name='visible in menu',
                                     default=False)),
                ('list_children_on_page',
                 models.BooleanField(verbose_name='list children on page',
                                     default=False)),
                ('lft',
                 models.PositiveIntegerField(editable=False, db_index=True)),
                ('rght',
                 models.PositiveIntegerField(editable=False, db_index=True)),
                ('tree_id',
                 models.PositiveIntegerField(editable=False, db_index=True)),
                ('level',
                 models.PositiveIntegerField(editable=False, db_index=True)),
                ('created_by',
                 models.ForeignKey(
                     blank=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     related_name='+',
                     to=settings.AUTH_USER_MODEL,
                     null=True,
                     verbose_name='created by')),
                ('modified_by',
                 models.ForeignKey(
                     blank=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     related_name='+',
                     to=settings.AUTH_USER_MODEL,
                     null=True,
                     verbose_name='modified by')),
                ('parent',
                 mptt.fields.TreeForeignKey(blank=True,
                                            on_delete=models.CASCADE,
                                            related_name='children',
                                            to='shuup_simple_cms.Page',
                                            null=True,
                                            verbose_name='parent')),
            ],
            options={
                'verbose_name': 'page',
                'ordering': ('-id', ),
                'verbose_name_plural': 'pages',
            },
            bases=(parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.CreateModel(
            name='PageTranslation',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  verbose_name='ID',
                                  auto_created=True,
                                  primary_key=True)),
                ('language_code',
                 models.CharField(db_index=True,
                                  max_length=15,
                                  verbose_name='Language')),
                ('title', models.CharField(max_length=256,
                                           verbose_name='title')),
                ('url',
                 models.CharField(default=None,
                                  null=True,
                                  unique=True,
                                  verbose_name='URL',
                                  blank=True,
                                  max_length=100)),
                ('content', models.TextField(verbose_name='content')),
                ('master',
                 models.ForeignKey(on_delete=models.CASCADE,
                                   related_name='translations',
                                   to='shuup_simple_cms.Page',
                                   null=True,
                                   editable=False)),
            ],
            options={
                'db_tablespace': '',
                'default_permissions': (),
                'verbose_name': 'page Translation',
                'managed': True,
                'db_table': 'shuup_simple_cms_page_translation',
            },
        ),
        migrations.AlterUniqueTogether(
            name='pagetranslation',
            unique_together=set([('language_code', 'master')]),
        ),
    ]