Ejemplo n.º 1
0
class Migration(migrations.Migration):

    initial = True

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

    operations = [
        migrations.CreateModel(
            name='Organisation',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True)),
                ('name', models.CharField(max_length=512)),
                ('title', models.CharField(default='Organisation', help_text='The title of your organisation will be shown on the landing page. max. 100 characters', max_length=100, verbose_name='Title of your organisation')),
                ('description', models.CharField(help_text='The description will be displayed on the landing page. max. 400 characters', max_length=400, verbose_name='Short description of your organisation')),
                ('logo', adhocracy4.images.fields.ConfiguredImageField('logo', blank=True, help_text='The Logo representing your organisation. The image must be square and it should be min. 200 pixels wide and 200 pixels tall. Allowed file formats are png, jpeg, gif. The file size should be max. 5 MB.', upload_to='organisations/logos', verbose_name='Logo')),
                ('slogan', models.CharField(blank=True, help_text='The slogan will be shown below the title of your organisation on the landing page. The slogan can provide context or additional information to the title. max. 200 characters', max_length=200, verbose_name='Slogan')),
                ('image', adhocracy4.images.fields.ConfiguredImageField('heroimage', blank=True, help_prefix='The image will be shown as a decorative background image.', upload_to='organisations/backgrounds', verbose_name='Header image')),
                ('information', ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='You can provide general information about your participation platform to your visitors. It’s also helpful to name a general person of contact for inquiries. The information will be shown on a separate page that can be reached via the main menu.', verbose_name='Information about your organisation')),
                ('imprint', ckeditor.fields.RichTextField(help_text='Please provide all the legally required information of your imprint. The imprint will be shown on a separate page.', verbose_name='Imprint')),
                ('is_supporting', models.BooleanField(default=False, help_text='For supporting organisations, the banner asking for donations is not displayed on their pages.', verbose_name='is a supporting organisation')),
                ('initiators', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL)),
            ],
            bases=(parler.models.TranslatableModelMixin, models.Model),
        ),
    ]
Ejemplo n.º 2
0
class Migration(migrations.Migration):

    dependencies = [
        ('shuup', '0009_update_tax_name_max_length'),
        ('shuup_simple_cms', '0001_initial'),
        ('filer', '0002_auto_20150606_2003'),
    ]

    operations = [
        migrations.CreateModel(
            name='Carousel',
            fields=[
                ('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')),
                ('name', models.CharField(help_text='Name is only used to configure carousels.', max_length=50, verbose_name='name')),
                ('animation', enumfields.fields.EnumIntegerField(help_text='Animation type for cycling slides.', enum=shuup.front.apps.carousel.models.CarouselMode, verbose_name='animation', default=0)),
                ('interval', models.IntegerField(help_text='Slide interval in seconds.', verbose_name='interval', default=5)),
                ('pause_on_hover', models.BooleanField(help_text='Pauses the cycling of the carousel on mouse over.', verbose_name='pause on hover', default=True)),
                ('is_arrows_visible', models.BooleanField(verbose_name='show navigation arrows', default=True)),
                ('use_dot_navigation', models.BooleanField(verbose_name='show navigation dots', default=True)),
                ('image_width', models.IntegerField(help_text='Slide images will be cropped to this width.', verbose_name='image width', default=1200)),
                ('image_height', models.IntegerField(help_text='Slide images will be cropped to this height.', verbose_name='image height', default=600)),
            ],
            options={
                'verbose_name': 'Carousel',
                'verbose_name_plural': 'Carousels',
            },
        ),
        migrations.CreateModel(
            name='Slide',
            fields=[
                ('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')),
                ('name', models.CharField(help_text='Name is only used to configure slides.', blank=True, max_length=50, verbose_name='name', null=True)),
                ('ordering', models.IntegerField(verbose_name='ordering', blank=True, default=0, null=True)),
                ('target', enumfields.fields.EnumIntegerField(verbose_name='link target', enum=shuup.front.apps.carousel.models.LinkTargetType, default=0)),
                ('available_from', models.DateTimeField(verbose_name='available from', blank=True, null=True)),
                ('available_to', models.DateTimeField(verbose_name='available to', blank=True, null=True)),
                ('carousel', models.ForeignKey(related_name='slides', to='carousel.Carousel', on_delete=models.CASCADE)),
                ('category_link', models.ForeignKey(to='shuup.Category', related_name='+', null=True, verbose_name='category link', blank=True, on_delete=models.CASCADE)),
                ('cms_page_link', models.ForeignKey(to='shuup_simple_cms.Page', related_name='+', null=True, verbose_name='cms page link', blank=True, on_delete=models.CASCADE)),
                ('product_link', models.ForeignKey(to='shuup.Product', related_name='+', null=True, verbose_name='product link', blank=True, on_delete=models.CASCADE)),
            ],
            options={
                'ordering': ('ordering', 'id'),
                'verbose_name': 'Slide',
                'verbose_name_plural': 'Slides',
            },
            bases=(parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.CreateModel(
            name='SlideTranslation',
            fields=[
                ('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')),
                ('language_code', models.CharField(verbose_name='Language', max_length=15, db_index=True)),
                ('caption', models.CharField(verbose_name='caption', blank=True, max_length=80, null=True)),
                ('caption_text', models.TextField(help_text='When displayed in banner box mode, caption text is shown as a tooltip', blank=True, verbose_name='caption text', null=True)),
                ('external_link', models.CharField(verbose_name='external link', blank=True, max_length=160, null=True)),
                ('image', filer.fields.image.FilerImageField(on_delete=django.db.models.deletion.PROTECT, to='filer.Image', related_name='+', null=True, verbose_name='image', blank=True)),
                ('master', models.ForeignKey(editable=False, related_name='translations', null=True, to='carousel.Slide', on_delete=models.CASCADE)),
            ],
            options={
                'managed': True,
                'db_tablespace': '',
                'db_table': 'carousel_slide_translation',
                'default_permissions': (),
                'verbose_name': 'Slide Translation',
            },
        ),
        migrations.AlterUniqueTogether(
            name='slidetranslation',
            unique_together=set([('language_code', 'master')]),
        ),
    ]
Ejemplo n.º 3
0
class Migration(migrations.Migration):
    replaces = [
        ('carousel', '0001_initial'),
        ('carousel', '0002_alter_names'),
    ]

    dependencies = [
        ('filer', '0002_auto_20150606_2003'),
        ('E-Commerce_simple_cms', '0001_initial'),
        ('E-Commerce', '0001_squashed_0039_alter_names'),
    ]

    operations = [
        migrations.CreateModel(
            name='Carousel',
            fields=[
                ('id', models.AutoField(
                    serialize=False,
                    verbose_name='ID',
                    auto_created=True,
                    primary_key=True)),
                ('name', models.CharField(
                    max_length=50,
                    verbose_name='name',
                    help_text='Name is only used to configure carousels.')),
                ('animation', enumfields.fields.EnumIntegerField(
                    default=0,
                    verbose_name='animation',
                    help_text='Animation type for cycling slides.',
                    enum=E-Commerce.front.apps.carousel.models.CarouselMode)),
                ('interval', models.IntegerField(
                    default=5,
                    verbose_name='interval',
                    help_text='Slide interval in seconds.')),
                ('pause_on_hover', models.BooleanField(
                    default=True,
                    verbose_name='pause on hover',
                    help_text=(
                        'Pauses the cycling of the carousel on mouse over.'))),
                ('is_arrows_visible', models.BooleanField(
                    default=True, verbose_name='show navigation arrows')),
                ('use_dot_navigation', models.BooleanField(
                    default=True, verbose_name='show navigation dots')),
                ('image_width', models.IntegerField(
                    default=1200,
                    verbose_name='image width',
                    help_text='Slide images will be cropped to this width.')),
                ('image_height', models.IntegerField(
                    default=600,
                    verbose_name='image height',
                    help_text='Slide images will be cropped to this height.')),
            ],
            options={
                'verbose_name_plural': 'Carousels',
                'verbose_name': 'Carousel',
            }),
        migrations.CreateModel(
            name='Slide',
            fields=[
                ('id', models.AutoField(
                    serialize=False,
                    verbose_name='ID',
                    auto_created=True,
                    primary_key=True)),
                ('name', models.CharField(
                    null=True,
                    max_length=50,
                    verbose_name='name',
                    help_text='Name is only used to configure slides.',
                    blank=True)),
                ('ordering', models.IntegerField(
                    null=True, default=0, verbose_name='ordering',
                    blank=True)),
                ('target', enumfields.fields.EnumIntegerField(
                    default=0,
                    verbose_name='link target',
                    enum=E-Commerce.front.apps.carousel.models.LinkTargetType)),
                ('available_from', models.DateTimeField(
                    null=True, verbose_name='available from', blank=True)),
                ('available_to', models.DateTimeField(
                    null=True, verbose_name='available to', blank=True)),
                ('carousel', models.ForeignKey(
                    related_name='slides', to='carousel.Carousel')),
                ('category_link', models.ForeignKey(
                    null=True,
                    verbose_name='category link',
                    related_name='+',
                    to='E-Commerce.Category',
                    blank=True)),
                ('cms_page_link', models.ForeignKey(
                    null=True,
                    verbose_name='cms page link',
                    related_name='+',
                    to='E-Commerce_simple_cms.Page',
                    blank=True)),
                ('product_link', models.ForeignKey(
                    null=True,
                    verbose_name='product link',
                    related_name='+',
                    to='E-Commerce.Product',
                    blank=True)),
            ],
            options={
                'verbose_name_plural': 'Slides',
                'verbose_name': 'Slide',
                'ordering': ('ordering', 'id'),
            },
            bases=(parler.models.TranslatableModelMixin, models.Model)),
        migrations.CreateModel(
            name='SlideTranslation',
            fields=[
                ('id', models.AutoField(
                    serialize=False,
                    verbose_name='ID',
                    auto_created=True,
                    primary_key=True)),
                ('language_code', models.CharField(
                    max_length=15, verbose_name='Language', db_index=True)),
                ('caption', models.CharField(
                    null=True,
                    max_length=80,
                    verbose_name='caption',
                    blank=True)),
                ('caption_text', models.TextField(
                    null=True,
                    verbose_name='caption text',
                    help_text=(
                        'When displayed in banner box mode, '
                        'caption text is shown as a tooltip'),
                    blank=True)),
                ('external_link', models.CharField(
                    null=True,
                    max_length=160,
                    verbose_name='external link',
                    blank=True)),
                ('image', filer.fields.image.FilerImageField(
                    null=True,
                    verbose_name='image',
                    related_name='+',
                    on_delete=django.db.models.deletion.PROTECT,
                    to='filer.Image',
                    blank=True)),
                ('master', models.ForeignKey(
                    editable=False,
                    null=True,
                    related_name='translations',
                    to='carousel.Slide')),
            ],
            options={
                'db_tablespace': '',
                'verbose_name': 'Slide Translation',
                'managed': True,
                'default_permissions': (),
                'db_table': 'carousel_slide_translation',
            }),
        migrations.AlterUniqueTogether(
            name='slidetranslation',
            unique_together=set([('language_code', 'master')]), ),
        migrations.AlterField(
            model_name='carousel',
            name='is_arrows_visible',
            field=models.BooleanField(
                default=True,
                verbose_name='show navigation arrows',
                help_text=(
                    'When checked, navigational arrows are shown on the '
                    'carousel allowing for customers to go back and forward.')
            )),
        migrations.AlterField(
            model_name='carousel',
            name='name',
            field=models.CharField(
                max_length=50,
                verbose_name='name',
                help_text='The carousel name use for carousel configuration.'),
        ),
        migrations.AlterField(
            model_name='carousel',
            name='pause_on_hover',
            field=models.BooleanField(
                default=True,
                verbose_name='pause on hover',
                help_text=(
                    'When checked, the carousel cycling pauses '
                    'on mouse over.'))),
        migrations.AlterField(
            model_name='carousel',
            name='use_dot_navigation',
            field=models.BooleanField(
                default=True,
                verbose_name='show navigation dots',
                help_text=(
                    'When checked, navigational indicator dots are shown.')
            )),
        migrations.AlterField(
            model_name='slide',
            name='available_from',
            field=models.DateTimeField(
                null=True,
                verbose_name='available from',
                help_text=(
                    'Set the date and time from which this slide should be '
                    'visible in the carousel. This is useful to advertise '
                    'sales campaigns or other time-sensitive marketing.'),
                blank=True)),
        migrations.AlterField(
            model_name='slide',
            name='available_to',
            field=models.DateTimeField(
                null=True,
                verbose_name='available to',
                help_text=(
                    'Set the date and time from which this slide should be '
                    'visible in the carousel. This is useful to advertise '
                    'sales campaigns or other time-sensitive marketing.'),
                blank=True)),
        migrations.AlterField(
            model_name='slide',
            name='category_link',
            field=models.ForeignKey(
                null=True,
                verbose_name='category link',
                related_name='+',
                help_text=(
                    'Set the product category page that should be shown '
                    'when this slide is clicked, if any.'),
                to='E-Commerce.Category',
                blank=True)),
        migrations.AlterField(
            model_name='slide',
            name='cms_page_link',
            field=models.ForeignKey(
                null=True,
                verbose_name='cms page link',
                related_name='+',
                help_text=(
                    'Set the web page that should be shown when the slide '
                    'is clicked, if any.'),
                to='E-Commerce_simple_cms.Page',
                blank=True)),
        migrations.AlterField(
            model_name='slide',
            name='ordering',
            field=models.IntegerField(
                null=True,
                default=0,
                verbose_name='ordering',
                help_text=(
                    'Set the numeric order in which this slide should '
                    'appear relative to other slides in this carousel.'),
                blank=True)),
        migrations.AlterField(
            model_name='slide',
            name='product_link',
            field=models.ForeignKey(
                null=True,
                verbose_name='product link',
                related_name='+',
                help_text=(
                    'Set the product detail page that should be shown '
                    'when this slide is clicked, if any.'),
                to='E-Commerce.Product',
                blank=True)),
        migrations.AlterField(
            model_name='slide',
            name='target',
            field=enumfields.fields.EnumIntegerField(
                default=0,
                verbose_name='link target',
                help_text=(
                    'Set this to current if clicking on this slide '
                    'should open a new browser tab.'),
                enum=E-Commerce.front.apps.carousel.models.LinkTargetType)),
        migrations.AlterField(
            model_name='slidetranslation',
            name='caption',
            field=models.CharField(
                null=True,
                max_length=80,
                verbose_name='caption',
                help_text=(
                    'Text that describes the image. Used for search '
                    'engine purposes.'),
                blank=True)),
        migrations.AlterField(
            model_name='slidetranslation',
            name='external_link',
            field=models.CharField(
                null=True,
                max_length=160,
                verbose_name='external link',
                help_text=(
                    'Set the external site that should be shown when '
                    'this slide is clicked, if any.'),
                blank=True)),
        migrations.AlterField(
            model_name='slidetranslation',
            name='image',
            field=filer.fields.image.FilerImageField(
                null=True,
                verbose_name='image',
                related_name='+',
                help_text='The slide image to show.',
                on_delete=django.db.models.deletion.PROTECT,
                to='filer.Image',
                blank=True)),
    ]
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),
        ),
    ]
Ejemplo n.º 5
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 = [
        ('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')]), ),
    ]
Ejemplo n.º 7
0
class Migration(migrations.Migration):

    dependencies = [
        ('wshop', '0027_modify_shop_fields'),
    ]

    operations = [
        migrations.RenameField(
            model_name='salesunittranslation',
            old_name='short_name',
            new_name='symbol',
        ),
        migrations.CreateModel(
            name='DisplayUnit',
            fields=[
                ('id', models.AutoField(
                    auto_created=True, primary_key=True, serialize=False)),
                ('internal_unit', models.ForeignKey(
                    to='wshop.SalesUnit', related_name='display_units')),
                ('ratio', wshop.core.fields.QuantityField(
                    default=1, max_digits=36, decimal_places=9, validators=[
                        wshop.core.models._units.validate_positive_not_zero])),
                ('decimals', models.PositiveSmallIntegerField(default=0)),
                ('comparison_value', wshop.core.fields.QuantityField(
                    default=1, max_digits=36, decimal_places=9, validators=[
                        wshop.core.models._units.validate_positive_not_zero])),
                ('allow_bare_number', models.BooleanField(default=False)),
                ('default', models.BooleanField(default=False)),
            ],
            options={
                'verbose_name_plural': 'display units',
                'verbose_name': 'display unit',
            },
            bases=(parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.CreateModel(
            name='DisplayUnitTranslation',
            fields=[
                ('id', models.AutoField(
                    auto_created=True, primary_key=True, serialize=False)),
                ('language_code', models.CharField(max_length=15, db_index=True)),
                ('name', models.CharField(max_length=150)),
                ('symbol', models.CharField(max_length=50)),
                ('master', models.ForeignKey(
                    to='wshop.DisplayUnit', editable=False,
                    related_name='translations', null=True)),
            ],
            options={
                'db_table': 'wshop_displayunit_translation',
                'default_permissions': (),
                'db_tablespace': '',
                'managed': True,
                'verbose_name': 'display unit Translation',
            },
        ),
        migrations.AlterUniqueTogether(
            name='displayunittranslation',
            unique_together=set([('language_code', 'master')]),
        ),
        migrations.AddField(
            model_name='shopproduct',
            name='display_unit',
            field=models.ForeignKey(
                to='wshop.DisplayUnit', blank=True, null=True),
        ),
    ]
Ejemplo n.º 8
0
class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('shuup_simple_cms', '0007_gdpr'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('shuup', '0044_add_media'),
    ]

    operations = [
        migrations.CreateModel(
            name='GDPRCookieCategory',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('always_active',
                 models.BooleanField(default=False,
                                     verbose_name='always active')),
                ('cookies',
                 models.TextField(
                     help_text=
                     'Comma separated list of cookies names, prefix or suffix that will be included in this category, e.g. _ga, mysession, user_c_',
                     verbose_name='cookies used')),
                ('shop',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='gdpr_cookie_categories',
                                   to='shuup.Shop')),
            ],
            options={
                'verbose_name': 'gdpr cookie category',
                'verbose_name_plural': 'gdpr cookie categories',
            },
            bases=(parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.CreateModel(
            name='GDPRCookieCategoryTranslation',
            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(max_length=64, verbose_name='name')),
                ('how_is_used',
                 models.TextField(
                     blank=True,
                     help_text=
                     'Describe the purpose of this category of cookies and how it is used.',
                     verbose_name='how we use')),
                ('master',
                 models.ForeignKey(editable=False,
                                   null=True,
                                   on_delete=django.db.models.deletion.CASCADE,
                                   related_name='translations',
                                   to='shuup_gdpr.GDPRCookieCategory')),
            ],
            options={
                'db_tablespace': '',
                'default_permissions': (),
                'verbose_name': 'gdpr cookie category Translation',
                'managed': True,
                'db_table': 'shuup_gdpr_gdprcookiecategory_translation',
            },
        ),
        migrations.CreateModel(
            name='GDPRSettings',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('enabled',
                 models.BooleanField(default=False,
                                     help_text='Define if the GDPR is active.',
                                     verbose_name='enabled')),
                ('shop',
                 models.OneToOneField(
                     on_delete=django.db.models.deletion.CASCADE,
                     related_name='gdpr_settings',
                     to='shuup.Shop')),
            ],
            options={
                'verbose_name': 'gdpr settings',
                'verbose_name_plural': 'gdpr settings',
            },
            bases=(parler.models.TranslatableModelMixin, models.Model),
        ),
        migrations.CreateModel(
            name='GDPRSettingsTranslation',
            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')),
                ('cookie_banner_content',
                 models.TextField(
                     blank=True,
                     help_text=
                     'The text to be presented to users in a pop-up warning.',
                     verbose_name='cookie banner content')),
                ('cookie_privacy_excerpt',
                 models.TextField(
                     blank=True,
                     help_text=
                     'The summary text to be presented about cookie privacy.',
                     verbose_name='cookie privacy excerpt')),
                ('master',
                 models.ForeignKey(editable=False,
                                   null=True,
                                   on_delete=django.db.models.deletion.CASCADE,
                                   related_name='translations',
                                   to='shuup_gdpr.GDPRSettings')),
            ],
            options={
                'db_tablespace': '',
                'default_permissions': (),
                'verbose_name': 'gdpr settings Translation',
                'managed': True,
                'db_table': 'shuup_gdpr_gdprsettings_translation',
            },
        ),
        migrations.CreateModel(
            name='GDPRUserConsent',
            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',
                                      db_index=True)),
                ('documents',
                 models.ManyToManyField(blank=True,
                                        editable=False,
                                        to='shuup_simple_cms.Page',
                                        verbose_name='consent documents')),
                ('shop',
                 models.ForeignKey(editable=False,
                                   on_delete=django.db.models.deletion.CASCADE,
                                   related_name='gdpr_consents',
                                   to='shuup.Shop')),
                ('user',
                 models.ForeignKey(editable=False,
                                   on_delete=django.db.models.deletion.PROTECT,
                                   related_name='gdpr_consents',
                                   to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'verbose_name': 'gdpr user consent',
                'verbose_name_plural': 'gdpr user consents',
            },
        ),
        migrations.AlterUniqueTogether(
            name='gdprsettingstranslation',
            unique_together=set([('language_code', 'master')]),
        ),
        migrations.AlterUniqueTogether(
            name='gdprcookiecategorytranslation',
            unique_together=set([('language_code', 'master')]),
        ),
    ]
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")},
            },
        ),
    ]
Ejemplo n.º 10
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')]),
        ),
    ]