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): 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')]), ), ]
class Migration(migrations.Migration): dependencies = [ ('shuup', '0001_initial'), ('contenttypes', '0002_remove_content_type_name'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='BasketCampaign', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('name', models.CharField(max_length=120, help_text='The name for this campaign.', verbose_name='name')), ('identifier', shuup.core.fields.InternalIdentifierField(max_length=64, null=True, unique=True, editable=False, blank=True)), ('active', models.BooleanField(verbose_name='active', default=False)), ('start_datetime', models.DateTimeField(blank=True, verbose_name='start date and time', null=True)), ('end_datetime', models.DateTimeField(blank=True, verbose_name='end date and time', null=True)), ('created_on', models.DateTimeField(verbose_name='created on', auto_now_add=True)), ('modified_on', models.DateTimeField(verbose_name='modified on', auto_now=True)), ('basket_line_text', models.CharField( max_length=120, help_text='This text will be shown in basket.', verbose_name='basket line text')), ], options={ 'verbose_name': 'Campaign', 'verbose_name_plural': 'Campaigns', 'abstract': False, }, bases=(shuup.utils.properties.MoneyPropped, parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='BasketCampaignTranslation', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')), ('public_name', models.CharField(verbose_name='public name', max_length=120)), ('master', models.ForeignKey(on_delete=models.CASCADE, related_name='translations', to='campaigns.BasketCampaign', null=True, editable=False)), ], options={ 'db_tablespace': '', 'default_permissions': (), 'verbose_name': 'Campaign Translation', 'managed': True, 'db_table': 'campaigns_basketcampaign_translation', }, ), migrations.CreateModel( name='BasketCondition', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('active', models.BooleanField(default=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='BasketDiscountEffect', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='BasketLineEffect', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='CatalogCampaign', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('name', models.CharField(max_length=120, help_text='The name for this campaign.', verbose_name='name')), ('identifier', shuup.core.fields.InternalIdentifierField(max_length=64, null=True, unique=True, editable=False, blank=True)), ('active', models.BooleanField(verbose_name='active', default=False)), ('start_datetime', models.DateTimeField(blank=True, verbose_name='start date and time', null=True)), ('end_datetime', models.DateTimeField(blank=True, verbose_name='end date and time', null=True)), ('created_on', models.DateTimeField(verbose_name='created on', auto_now_add=True)), ('modified_on', models.DateTimeField(verbose_name='modified on', auto_now=True)), ], options={ 'verbose_name': 'Campaign', 'verbose_name_plural': 'Campaigns', 'abstract': False, }, bases=(shuup.utils.properties.MoneyPropped, parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='CatalogCampaignTranslation', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')), ('public_name', models.CharField(max_length=120, blank=True)), ('master', models.ForeignKey(on_delete=models.CASCADE, related_name='translations', to='campaigns.CatalogCampaign', null=True, editable=False)), ], options={ 'db_tablespace': '', 'default_permissions': (), 'verbose_name': 'Campaign Translation', 'managed': True, 'db_table': 'campaigns_catalogcampaign_translation', }, ), migrations.CreateModel( name='CatalogFilter', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('active', models.BooleanField(verbose_name='active', default=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='ContactGroupSalesRange', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('min_value', shuup.core.fields.MoneyValueField(blank=True, decimal_places=9, verbose_name='min amount', null=True, max_digits=36)), ('max_value', shuup.core.fields.MoneyValueField(blank=True, decimal_places=9, verbose_name='max amount', null=True, max_digits=36)), ('group', models.ForeignKey(on_delete=models.CASCADE, related_name='+', to='shuup.ContactGroup', verbose_name='group')), ('shop', models.ForeignKey(on_delete=models.CASCADE, related_name='+', to='shuup.Shop', verbose_name='shop')), ], ), migrations.CreateModel( name='ContextCondition', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('active', models.BooleanField(default=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='Coupon', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('code', models.CharField(max_length=12)), ('usage_limit_customer', models.PositiveIntegerField( blank=True, help_text= 'Limit the amount of usages per a single customer.', verbose_name='usage limit per customer', null=True)), ('usage_limit', models.PositiveIntegerField( blank=True, help_text= 'Set the absolute limit of usages for this coupon. If the limit is zero (0) coupon cannot be used.', verbose_name='usage limit', null=True)), ('active', models.BooleanField(verbose_name='is active', default=False)), ('created_on', models.DateTimeField(verbose_name='created on', auto_now_add=True)), ('modified_on', models.DateTimeField(verbose_name='modified on', auto_now=True)), ('created_by', models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='created by')), ('modified_by', models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='modified by')), ], ), migrations.CreateModel( name='CouponUsage', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('created_on', models.DateTimeField(verbose_name='created on', auto_now_add=True)), ('modified_on', models.DateTimeField(verbose_name='modified on', auto_now=True)), ('coupon', models.ForeignKey(on_delete=models.CASCADE, related_name='usages', to='campaigns.Coupon')), ('created_by', models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='created by')), ('modified_by', models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='modified by')), ('order', models.ForeignKey(on_delete=models.CASCADE, related_name='coupon_usages', to='shuup.Order')), ], ), migrations.CreateModel( name='ProductDiscountEffect', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='BasketDiscountAmount', fields=[ ('basketdiscounteffect_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketDiscountEffect', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('discount_amount', shuup.core.fields.MoneyValueField( blank=True, null=True, verbose_name='discount amount', help_text='Flat amount of discount.', decimal_places=9, default=None, max_digits=36)), ], options={ 'abstract': False, }, bases=('campaigns.basketdiscounteffect', ), ), migrations.CreateModel( name='BasketDiscountPercentage', fields=[ ('basketdiscounteffect_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketDiscountEffect', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('discount_percentage', models.DecimalField( blank=True, null=True, verbose_name='discount percentage', help_text='The discount percentage for this campaign.', decimal_places=5, max_digits=6)), ], options={ 'abstract': False, }, bases=('campaigns.basketdiscounteffect', ), ), migrations.CreateModel( name='BasketMaxTotalAmountCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('amount_value', shuup.core.fields.MoneyValueField( blank=True, null=True, verbose_name='maximum basket total amount', decimal_places=9, default=None, max_digits=36)), ], options={ 'abstract': False, }, bases=(shuup.utils.properties.MoneyPropped, 'campaigns.basketcondition'), ), migrations.CreateModel( name='BasketMaxTotalProductAmountCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('product_count', models.DecimalField( blank=True, decimal_places=9, verbose_name='maximum product count in basket', null=True, max_digits=36)), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='BasketTotalAmountCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('amount_value', shuup.core.fields.MoneyValueField( blank=True, null=True, verbose_name='basket total amount', decimal_places=9, default=None, max_digits=36)), ], options={ 'abstract': False, }, bases=(shuup.utils.properties.MoneyPropped, 'campaigns.basketcondition'), ), migrations.CreateModel( name='BasketTotalProductAmountCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('product_count', models.DecimalField(blank=True, decimal_places=9, verbose_name='product count in basket', null=True, max_digits=36)), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='CategoryFilter', fields=[ ('catalogfilter_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.CatalogFilter', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('categories', models.ManyToManyField(verbose_name='categories', to='shuup.Category')), ], options={ 'abstract': False, }, bases=('campaigns.catalogfilter', ), ), migrations.CreateModel( name='ContactBasketCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('contacts', models.ManyToManyField(verbose_name='contacts', to='shuup.Contact')), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='ContactCondition', fields=[ ('contextcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.ContextCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('contacts', models.ManyToManyField(verbose_name='contacts', to='shuup.Contact')), ], options={ 'abstract': False, }, bases=('campaigns.contextcondition', ), ), migrations.CreateModel( name='ContactGroupBasketCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('contact_groups', models.ManyToManyField(verbose_name='contact groups', to='shuup.ContactGroup')), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='ContactGroupCondition', fields=[ ('contextcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.ContextCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('contact_groups', models.ManyToManyField(verbose_name='contact groups', to='shuup.ContactGroup')), ], options={ 'abstract': False, }, bases=('campaigns.contextcondition', ), ), migrations.CreateModel( name='DiscountFromProduct', fields=[ ('basketlineeffect_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketLineEffect', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('per_line_discount', models.BooleanField( verbose_name='per line discount', help_text= 'Uncheck this if you want to give discount for each matched product.', default=True)), ('discount_amount', shuup.core.fields.MoneyValueField( blank=True, null=True, verbose_name='discount amount', help_text='Flat amount of discount.', decimal_places=9, default=None, max_digits=36)), ('products', models.ManyToManyField(verbose_name='product', to='shuup.Product')), ], options={ 'abstract': False, }, bases=('campaigns.basketlineeffect', ), ), migrations.CreateModel( name='FreeProductLine', fields=[ ('basketlineeffect_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketLineEffect', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('quantity', models.PositiveIntegerField(default=1, verbose_name='quantity')), ('products', models.ManyToManyField(verbose_name='product', to='shuup.Product')), ], options={ 'abstract': False, }, bases=('campaigns.basketlineeffect', ), ), migrations.CreateModel( name='ProductDiscountAmount', fields=[ ('productdiscounteffect_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.ProductDiscountEffect', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('discount_amount', shuup.core.fields.MoneyValueField( blank=True, null=True, verbose_name='discount amount', help_text='Flat amount of discount.', decimal_places=9, default=None, max_digits=36)), ], options={ 'abstract': False, }, bases=('campaigns.productdiscounteffect', ), ), migrations.CreateModel( name='ProductDiscountPercentage', fields=[ ('productdiscounteffect_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.ProductDiscountEffect', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('discount_percentage', models.DecimalField( blank=True, null=True, verbose_name='discount percentage', help_text='The discount percentage for this campaign.', decimal_places=5, max_digits=6)), ], options={ 'abstract': False, }, bases=('campaigns.productdiscounteffect', ), ), migrations.CreateModel( name='ProductFilter', fields=[ ('catalogfilter_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.CatalogFilter', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('products', models.ManyToManyField(verbose_name='product', to='shuup.Product')), ], options={ 'abstract': False, }, bases=('campaigns.catalogfilter', ), ), migrations.CreateModel( name='ProductsInBasketCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('quantity', models.PositiveIntegerField(default=1, verbose_name='quantity')), ('products', models.ManyToManyField(blank=True, verbose_name='products', to='shuup.Product')), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='ProductTypeFilter', fields=[ ('catalogfilter_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.CatalogFilter', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('product_types', models.ManyToManyField(verbose_name='product Types', to='shuup.ProductType')), ], options={ 'abstract': False, }, bases=('campaigns.catalogfilter', ), ), migrations.AddField( model_name='productdiscounteffect', name='campaign', field=models.ForeignKey(on_delete=models.CASCADE, related_name='effects', to='campaigns.CatalogCampaign', verbose_name='campaign'), ), migrations.AddField( model_name='productdiscounteffect', name='polymorphic_ctype', field=models.ForeignKey( on_delete=models.CASCADE, related_name='polymorphic_campaigns.productdiscounteffect_set+', to='contenttypes.ContentType', null=True, editable=False), ), migrations.AddField( model_name='contextcondition', name='polymorphic_ctype', field=models.ForeignKey( on_delete=models.CASCADE, related_name='polymorphic_campaigns.contextcondition_set+', to='contenttypes.ContentType', null=True, editable=False), ), migrations.AddField( model_name='catalogfilter', name='polymorphic_ctype', field=models.ForeignKey( on_delete=models.CASCADE, related_name='polymorphic_campaigns.catalogfilter_set+', to='contenttypes.ContentType', null=True, editable=False), ), migrations.AddField( model_name='catalogcampaign', name='conditions', field=models.ManyToManyField(blank=True, related_name='campaign', to='campaigns.ContextCondition'), ), migrations.AddField( model_name='catalogcampaign', name='created_by', field=models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='created by'), ), migrations.AddField( model_name='catalogcampaign', name='filters', field=models.ManyToManyField(blank=True, related_name='campaign', to='campaigns.CatalogFilter'), ), migrations.AddField( model_name='catalogcampaign', name='modified_by', field=models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='modified by'), ), migrations.AddField( model_name='catalogcampaign', name='shop', field=models.ForeignKey( on_delete=models.CASCADE, to='shuup.Shop', verbose_name='shop', help_text='The shop where campaign is active.'), ), migrations.AddField( model_name='basketlineeffect', name='campaign', field=models.ForeignKey(on_delete=models.CASCADE, related_name='line_effects', to='campaigns.BasketCampaign', verbose_name='campaign'), ), migrations.AddField( model_name='basketlineeffect', name='polymorphic_ctype', field=models.ForeignKey( on_delete=models.CASCADE, related_name='polymorphic_campaigns.basketlineeffect_set+', to='contenttypes.ContentType', null=True, editable=False), ), migrations.AddField( model_name='basketdiscounteffect', name='campaign', field=models.ForeignKey(on_delete=models.CASCADE, related_name='discount_effects', to='campaigns.BasketCampaign', verbose_name='campaign'), ), migrations.AddField( model_name='basketdiscounteffect', name='polymorphic_ctype', field=models.ForeignKey( on_delete=models.CASCADE, related_name='polymorphic_campaigns.basketdiscounteffect_set+', to='contenttypes.ContentType', null=True, editable=False), ), migrations.AddField( model_name='basketcondition', name='polymorphic_ctype', field=models.ForeignKey( on_delete=models.CASCADE, related_name='polymorphic_campaigns.basketcondition_set+', to='contenttypes.ContentType', null=True, editable=False), ), migrations.AddField( model_name='basketcampaign', name='conditions', field=models.ManyToManyField(blank=True, related_name='campaign', to='campaigns.BasketCondition'), ), migrations.AddField( model_name='basketcampaign', name='coupon', field=models.OneToOneField(on_delete=models.CASCADE, verbose_name='coupon', blank=True, related_name='campaign', to='campaigns.Coupon', null=True), ), migrations.AddField( model_name='basketcampaign', name='created_by', field=models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='created by'), ), migrations.AddField( model_name='basketcampaign', name='modified_by', field=models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='modified by'), ), migrations.AddField( model_name='basketcampaign', name='shop', field=models.ForeignKey( on_delete=models.CASCADE, to='shuup.Shop', verbose_name='shop', help_text='The shop where campaign is active.'), ), migrations.AlterUniqueTogether( name='contactgroupsalesrange', unique_together=set([('group', 'shop')]), ), migrations.AlterUniqueTogether( name='catalogcampaigntranslation', unique_together=set([('language_code', 'master')]), ), migrations.AlterUniqueTogether( name='basketcampaigntranslation', unique_together=set([('language_code', 'master')]), ), ]
class Migration(migrations.Migration): replaces = [ ('shuup_simple_cms', '0001_initial'), ('shuup_simple_cms', '0002_md_to_html'), ('shuup_simple_cms', '0003_alter_names'), ] dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Page', fields=[ ('id', models.AutoField(auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('available_from', models.DateTimeField(null=True, blank=True, verbose_name='available from')), ('available_to', models.DateTimeField(null=True, blank=True, verbose_name='available to')), ('created_on', models.DateTimeField(auto_now_add=True, verbose_name='created on')), ('modified_on', models.DateTimeField(auto_now=True, verbose_name='modified on')), ('identifier', shuup.core.fields.InternalIdentifierField(editable=False, blank=True, unique=True, null=True, max_length=64)), ('visible_in_menu', models.BooleanField(default=False, verbose_name='visible in menu')), ('list_children_on_page', models.BooleanField(default=False, verbose_name='list children on page')), ('lft', models.PositiveIntegerField(db_index=True, editable=False)), ('rght', models.PositiveIntegerField(db_index=True, editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(db_index=True, editable=False)), ('created_by', models.ForeignKey( on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, verbose_name='created by', null=True, related_name='+')), ('modified_by', models.ForeignKey( on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, verbose_name='modified by', null=True, related_name='+')), ('parent', mptt.fields.TreeForeignKey(blank=True, to='shuup_simple_cms.Page', verbose_name='parent', null=True, related_name='children', on_delete=models.CASCADE)), ], options={ 'verbose_name_plural': 'pages', 'ordering': ('-id', ), 'verbose_name': 'page', }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='PageTranslation', fields=[ ('id', models.AutoField(auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')), ('title', models.CharField(max_length=256, verbose_name='title')), ('url', models.CharField(blank=True, default=None, verbose_name='URL', null=True, max_length=100, unique=True)), ('content', models.TextField(verbose_name='content')), ('master', models.ForeignKey(editable=False, to='shuup_simple_cms.Page', null=True, related_name='translations', on_delete=models.CASCADE)), ], options={ 'default_permissions': (), 'db_tablespace': '', 'db_table': 'shuup_simple_cms_page_translation', 'managed': True, 'verbose_name': 'page Translation', }, ), migrations.AlterUniqueTogether(name='pagetranslation', unique_together=set([('language_code', 'master')])), migrations.AlterField( model_name='page', name='available_from', field=models.DateTimeField( null=True, blank=True, help_text=( 'Set an available from date to restrict the page to ' 'be available only after a certain date and time. This ' 'is useful for pages describing sales campaigns or other ' 'time-sensitive pages.'), verbose_name='available from')), migrations.AlterField( model_name='page', name='available_to', field=models.DateTimeField( null=True, blank=True, help_text=( 'Set an available to date to restrict the page to be ' 'available only after a certain date and time. This is ' 'useful for pages describing sales campaigns or other ' 'time-sensitive pages.'), verbose_name='available to')), migrations.AlterField( model_name='page', name='list_children_on_page', field=models.BooleanField(help_text=( 'Check this if this page should list its children pages.'), default=False, verbose_name='list children on page'), ), migrations.AlterField( model_name='page', name='parent', field=mptt.fields.TreeForeignKey( blank=True, to='shuup_simple_cms.Page', verbose_name='parent', null=True, related_name='children', on_delete=models.CASCADE, help_text=('Set this to a parent page if this page should be ' 'subcategorized under another page.'))), migrations.AlterField( model_name='page', name='visible_in_menu', field=models.BooleanField(help_text=( 'Check this if this page should have a link in the top ' 'menu of the store front.'), default=False, verbose_name='visible in menu'), ), migrations.AlterField( model_name='pagetranslation', name='content', field=models.TextField(help_text=( 'The page content. This is the text that is displayed ' 'when customers click on your page link.'), verbose_name='content'), ), migrations.AlterField( model_name='pagetranslation', name='title', field=models.CharField( max_length=256, help_text=( 'The page title. This is shown anywhere links to your ' 'page are shown.'), verbose_name='title'), ), migrations.AlterField( model_name='pagetranslation', name='url', field=models.CharField( blank=True, default=None, verbose_name='URL', null=True, max_length=100, help_text=( 'The page url. Choose a descriptive url so that search ' 'engines can rank your page higher. Often the best url is ' 'simply the page title with spaces replaced with dashes.'), unique=True), ), ]
class Migration(migrations.Migration): dependencies = [ ('shuup', '0051_supplier_enabled'), ] operations = [ migrations.CreateModel( name='Label', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('identifier', shuup.core.fields.InternalIdentifierField(blank=True, editable=False, max_length=128, null=True, unique=True)), ('created_on', models.DateTimeField(auto_now_add=True, verbose_name='created on')), ('modified_on', models.DateTimeField(auto_now=True, db_index=True, verbose_name='modified on')), ], options={ 'verbose_name': 'label', 'verbose_name_plural': 'labels', }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='LabelTranslation', 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')), ('master', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='shuup.Label')), ], options={ 'verbose_name': 'label Translation', 'db_table': 'shuup_label_translation', 'db_tablespace': '', 'managed': True, 'default_permissions': (), }, ), migrations.AddField( model_name='shoptranslation', name='description', field=models.TextField( blank=True, help_text= 'To make your shop stand out, give it an awesome description. This is what will help your shoppers learn about your shop. It will also help shoppers find your store from the web.', verbose_name='description'), ), migrations.AddField( model_name='shoptranslation', name='short_description', field=models.CharField( blank=True, help_text= 'Enter a short description for your shop. The short description will be used to get the attention of your customer with a small but precise description of your shop.', max_length=150, verbose_name='short description'), ), migrations.AddField( model_name='paymentmethod', name='labels', field=models.ManyToManyField(blank=True, to='shuup.Label', verbose_name='labels'), ), migrations.AddField( model_name='shippingmethod', name='labels', field=models.ManyToManyField(blank=True, to='shuup.Label', verbose_name='labels'), ), migrations.AddField( model_name='shop', name='labels', field=models.ManyToManyField(blank=True, related_name='shops', to='shuup.Label', verbose_name='labels'), ), migrations.AlterUniqueTogether( name='labeltranslation', unique_together=set([('language_code', 'master')]), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('image', models.ImageField(blank=True, null=True, upload_to='blog', verbose_name='Imagen')), ('created', models.DateTimeField(auto_now_add=True, verbose_name='Fecha de creación')), ('updated', models.DateTimeField(auto_now=True, verbose_name='Fecha de edición')), ], options={ 'verbose_name': 'categoría', 'verbose_name_plural': 'categorías', 'ordering': ['-created'], }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('published', models.DateTimeField(default=django.utils.timezone.now, verbose_name='Fecha de publicación')), ('image', models.ImageField(blank=True, null=True, upload_to='blog', verbose_name='Imagen')), ('created', models.DateTimeField(auto_now_add=True, verbose_name='Fecha de creación')), ('updated', models.DateTimeField(auto_now=True, verbose_name='Fecha de edición')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor')), ('categories', models.ManyToManyField(to='blog.Category', verbose_name='Categorías')), ], options={ 'verbose_name': 'entrada', 'verbose_name_plural': 'entradas', 'ordering': ['-created'], }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='PostTranslation', 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')), ('title', models.CharField(max_length=200, verbose_name='Título')), ('content', models.TextField(verbose_name='Contenido')), ('master', parler.fields.TranslationsForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='blog.Post')), ], options={ 'verbose_name': 'entrada Translation', 'db_table': 'blog_post_translation', 'db_tablespace': '', 'managed': True, 'default_permissions': (), 'unique_together': {('language_code', 'master')}, }, bases=(parler.models.TranslatedFieldsModelMixin, models.Model), ), migrations.CreateModel( name='CategoryTranslation', 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=100, verbose_name='Nombre')), ('master', parler.fields.TranslationsForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='blog.Category')), ], options={ 'verbose_name': 'categoría Translation', 'db_table': 'blog_category_translation', 'db_tablespace': '', 'managed': True, 'default_permissions': (), 'unique_together': {('language_code', 'master')}, }, bases=(parler.models.TranslatedFieldsModelMixin, models.Model), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('shuup', '0045_disable_default_marketing_permission'), ] operations = [ migrations.CreateModel( name='Task', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=60, verbose_name='name')), ('status', enumfields.fields.EnumIntegerField( default=1, enum=shuup.tasks.models.TaskStatus, verbose_name='status')), ('priority', models.PositiveIntegerField(db_index=True, default=0, verbose_name='priority')), ('completed_on', models.DateTimeField(blank=True, null=True, verbose_name='completed on')), ('created_on', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='created on')), ('modified_on', models.DateTimeField(auto_now=True, db_index=True, verbose_name='modified on')), ('assigned_to', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='assigned_tasks', to='shuup.Contact', verbose_name='assigned to')), ('completed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='completed_tasks', to='shuup.Contact', verbose_name='completed by')), ('creator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='creted_tasks', to='shuup.Contact', verbose_name='creator')), ('shop', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='shuup.Shop', verbose_name='shop')), ], ), migrations.CreateModel( name='TaskComment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('visibility', enumfields.fields.EnumIntegerField( db_index=True, default=1, enum=shuup.tasks.models.TaskCommentVisibility, verbose_name='visibility')), ('body', models.TextField(verbose_name='body')), ('created_on', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='created on')), ('modified_on', models.DateTimeField(auto_now=True, db_index=True, verbose_name='modified on')), ('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='task_comments', to='shuup.Contact', verbose_name='author')), ('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='shuup_tasks.Task', verbose_name='task')), ], ), migrations.CreateModel( name='TaskLogEntry', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_on', models.DateTimeField(auto_now_add=True, verbose_name='created on')), ('message', models.CharField(max_length=256, verbose_name='message')), ('identifier', models.CharField(blank=True, max_length=64, verbose_name='identifier')), ('kind', enumfields.fields.EnumIntegerField( default=0, enum=shuup.utils.analog.LogEntryKind, verbose_name='log entry kind')), ('extra', jsonfield.fields.JSONField(blank=True, null=True, verbose_name='extra data')), ('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='log_entries', to='shuup_tasks.Task', verbose_name='target')), ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='TaskType', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('identifier', shuup.core.fields.InternalIdentifierField(blank=True, editable=False, max_length=64, null=True, unique=False)), ('shop', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='task_types', to='shuup.Shop', verbose_name='shop')), ], options={ 'verbose_name': 'task type', 'verbose_name_plural': 'task types', }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='TaskTypeTranslation', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')), ('name', models.TextField(verbose_name='name')), ('master', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='shuup_tasks.TaskType')), ], options={ 'db_tablespace': '', 'managed': True, 'default_permissions': (), 'verbose_name': 'task type Translation', 'db_table': 'shuup_tasks_tasktype_translation', }, ), migrations.AddField( model_name='task', name='type', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='shuup_tasks.TaskType', verbose_name='task type'), ), migrations.AlterUniqueTogether( name='tasktypetranslation', unique_together=set([('language_code', 'master')]), ), migrations.AlterUniqueTogether( name='tasktype', unique_together=set([('shop', 'identifier')]), ), ]
class Migration(migrations.Migration): 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')]), ), ]
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")}, }, ), ]
class Migration(migrations.Migration): dependencies = [ migrations.swappable_dependency(settings.FILER_IMAGE_MODEL), ('shuup_simple_cms', '0010_add_render_title_and_template_name'), ] operations = [ migrations.CreateModel( name='PageOpenGraph', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('og_type', enumfields.fields.EnumField( default='website', enum=shuup.simple_cms.models.PageOpenGraphType, max_length=10, verbose_name='type')), ('image', filer.fields.image.FilerImageField( blank=True, help_text='The image of your object.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blog_meta_image', to=settings.FILER_IMAGE_MODEL, verbose_name='Image')), ], options={ 'abstract': False, }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='PageOpenGraphTranslation', 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')), ('title', models.CharField( blank=True, help_text= 'The title of your object as it should appear within the graph, e.g. The Rock.', max_length=100, verbose_name='Title')), ('description', models.TextField( blank=True, help_text= 'A one to two sentence description of your object.', max_length=160, verbose_name='Description')), ('section', models.CharField( blank=True, help_text= 'A high-level section name, e.g. Technology. Only applicable when type is Article.', max_length=256, verbose_name='Section')), ('tags', models.CharField( blank=True, help_text= 'Tag words associated with this article. Only applicable when type is Article.', max_length=256, verbose_name='Tags')), ('article_author', models.CharField( blank=True, help_text= 'The name of the author for the article. Only applicable when type is Article.', max_length=100, verbose_name='Article author')), ('master', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='shuup_simple_cms.PageOpenGraph')), ], options={ 'verbose_name': 'page open graph Translation', 'db_table': 'shuup_simple_cms_pageopengraph_translation', 'db_tablespace': '', 'managed': True, 'default_permissions': (), }, ), migrations.AlterField( model_name='page', name='available_from', field=models.DateTimeField( blank=True, db_index=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.', null=True, verbose_name='available from'), ), migrations.AlterField( model_name='page', name='available_to', field=models.DateTimeField( blank=True, db_index=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.', null=True, verbose_name='available to'), ), migrations.AddField( model_name='pageopengraph', name='page', field=models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, related_name='open_graph', to='shuup_simple_cms.Page', verbose_name='page'), ), migrations.AlterUniqueTogether( name='pageopengraphtranslation', unique_together=set([('language_code', 'master')]), ), ]
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')]), ), ]
class Migration(migrations.Migration): initial = True dependencies = [] operations = [ migrations.CreateModel( name="Page", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created at"), ), ( "updated_at", models.DateTimeField(auto_now=True, verbose_name="Updated at"), ), ( "type", models.CharField( choices=[("HOME", "Home"), ("ANALYTICS", "Analytics")], max_length=254, verbose_name="Type", ), ), ], options={ "verbose_name": "Page", "verbose_name_plural": "Pages" }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name="PageSection", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "page", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="sections", to="pages.Page", ), ), ], options={ "verbose_name": "Page section", "verbose_name_plural": "Page sections", }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name="PageTranslation", 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"), ), ("title", models.CharField(max_length=254, verbose_name="Title")), ( "slug", models.SlugField(max_length=254, unique=True, verbose_name="Slug"), ), ( "description", models.CharField(blank=True, max_length=1000, verbose_name="Description"), ), ( "background", models.FileField(upload_to="", verbose_name="Background image"), ), ( "master", parler.fields.TranslationsForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="translations", to="pages.Page", ), ), ], options={ "verbose_name": "Page Translation", "db_table": "pages_page_translation", "db_tablespace": "", "managed": True, "default_permissions": (), "unique_together": {("language_code", "master")}, }, bases=(parler.models.TranslatedFieldsModelMixin, models.Model), ), migrations.CreateModel( name="PageSectionTranslation", 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"), ), ("image", models.FileField(upload_to="", verbose_name="Image")), ("text", models.TextField()), ( "image_position", models.CharField( choices=[("LEFT", "Left"), ("RIGHT", "Right")], default="RIGHT", max_length=254, verbose_name="Image position", ), ), ( "master", parler.fields.TranslationsForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="translations", to="pages.PageSection", ), ), ], options={ "verbose_name": "Page section Translation", "db_table": "pages_pagesection_translation", "db_tablespace": "", "managed": True, "default_permissions": (), "unique_together": {("language_code", "master")}, }, bases=(parler.models.TranslatedFieldsModelMixin, models.Model), ), ]