class Migration(migrations.Migration): dependencies = [("services", "0008_servicetranslation")] operations = [ migrations.CreateModel( name="AllowedDataField", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("field_name", models.CharField(max_length=30)), ( "order", models.PositiveIntegerField( db_index=True, default=services.models.get_next_data_field_order, editable=False, ), ), ], options={"ordering": ["order"]}, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.AddField( model_name="service", name="allowed_data_fields", field=models.ManyToManyField(to="services.AllowedDataField"), ), migrations.CreateModel( name="AllowedDataFieldTranslation", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "language_code", models.CharField(db_index=True, max_length=15, verbose_name="Language"), ), ("label", models.CharField(max_length=64)), ( "master", models.ForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="translations", to="services.AllowedDataField", ), ), ], options={ "verbose_name": "allowed data field Translation", "db_table": "services_alloweddatafield_translation", "db_tablespace": "", "managed": True, "default_permissions": (), "unique_together": {("language_code", "master")}, }, ), ]
class Migration(migrations.Migration): dependencies = [ ('shuup', '0001_initial'), ('contenttypes', '0002_remove_content_type_name'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='BasketCampaign', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('name', models.CharField(max_length=120, help_text='The name for this campaign.', verbose_name='name')), ('identifier', shuup.core.fields.InternalIdentifierField(max_length=64, null=True, unique=True, editable=False, blank=True)), ('active', models.BooleanField(verbose_name='active', default=False)), ('start_datetime', models.DateTimeField(blank=True, verbose_name='start date and time', null=True)), ('end_datetime', models.DateTimeField(blank=True, verbose_name='end date and time', null=True)), ('created_on', models.DateTimeField(verbose_name='created on', auto_now_add=True)), ('modified_on', models.DateTimeField(verbose_name='modified on', auto_now=True)), ('basket_line_text', models.CharField( max_length=120, help_text='This text will be shown in basket.', verbose_name='basket line text')), ], options={ 'verbose_name': 'Campaign', 'verbose_name_plural': 'Campaigns', 'abstract': False, }, bases=(shuup.utils.properties.MoneyPropped, parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='BasketCampaignTranslation', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')), ('public_name', models.CharField(verbose_name='public name', max_length=120)), ('master', models.ForeignKey(on_delete=models.CASCADE, related_name='translations', to='campaigns.BasketCampaign', null=True, editable=False)), ], options={ 'db_tablespace': '', 'default_permissions': (), 'verbose_name': 'Campaign Translation', 'managed': True, 'db_table': 'campaigns_basketcampaign_translation', }, ), migrations.CreateModel( name='BasketCondition', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('active', models.BooleanField(default=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='BasketDiscountEffect', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='BasketLineEffect', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='CatalogCampaign', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('name', models.CharField(max_length=120, help_text='The name for this campaign.', verbose_name='name')), ('identifier', shuup.core.fields.InternalIdentifierField(max_length=64, null=True, unique=True, editable=False, blank=True)), ('active', models.BooleanField(verbose_name='active', default=False)), ('start_datetime', models.DateTimeField(blank=True, verbose_name='start date and time', null=True)), ('end_datetime', models.DateTimeField(blank=True, verbose_name='end date and time', null=True)), ('created_on', models.DateTimeField(verbose_name='created on', auto_now_add=True)), ('modified_on', models.DateTimeField(verbose_name='modified on', auto_now=True)), ], options={ 'verbose_name': 'Campaign', 'verbose_name_plural': 'Campaigns', 'abstract': False, }, bases=(shuup.utils.properties.MoneyPropped, parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='CatalogCampaignTranslation', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')), ('public_name', models.CharField(max_length=120, blank=True)), ('master', models.ForeignKey(on_delete=models.CASCADE, related_name='translations', to='campaigns.CatalogCampaign', null=True, editable=False)), ], options={ 'db_tablespace': '', 'default_permissions': (), 'verbose_name': 'Campaign Translation', 'managed': True, 'db_table': 'campaigns_catalogcampaign_translation', }, ), migrations.CreateModel( name='CatalogFilter', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('active', models.BooleanField(verbose_name='active', default=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='ContactGroupSalesRange', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('min_value', shuup.core.fields.MoneyValueField(blank=True, decimal_places=9, verbose_name='min amount', null=True, max_digits=36)), ('max_value', shuup.core.fields.MoneyValueField(blank=True, decimal_places=9, verbose_name='max amount', null=True, max_digits=36)), ('group', models.ForeignKey(on_delete=models.CASCADE, related_name='+', to='shuup.ContactGroup', verbose_name='group')), ('shop', models.ForeignKey(on_delete=models.CASCADE, related_name='+', to='shuup.Shop', verbose_name='shop')), ], ), migrations.CreateModel( name='ContextCondition', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('active', models.BooleanField(default=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='Coupon', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('code', models.CharField(max_length=12)), ('usage_limit_customer', models.PositiveIntegerField( blank=True, help_text= 'Limit the amount of usages per a single customer.', verbose_name='usage limit per customer', null=True)), ('usage_limit', models.PositiveIntegerField( blank=True, help_text= 'Set the absolute limit of usages for this coupon. If the limit is zero (0) coupon cannot be used.', verbose_name='usage limit', null=True)), ('active', models.BooleanField(verbose_name='is active', default=False)), ('created_on', models.DateTimeField(verbose_name='created on', auto_now_add=True)), ('modified_on', models.DateTimeField(verbose_name='modified on', auto_now=True)), ('created_by', models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='created by')), ('modified_by', models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='modified by')), ], ), migrations.CreateModel( name='CouponUsage', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('created_on', models.DateTimeField(verbose_name='created on', auto_now_add=True)), ('modified_on', models.DateTimeField(verbose_name='modified on', auto_now=True)), ('coupon', models.ForeignKey(on_delete=models.CASCADE, related_name='usages', to='campaigns.Coupon')), ('created_by', models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='created by')), ('modified_by', models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='modified by')), ('order', models.ForeignKey(on_delete=models.CASCADE, related_name='coupon_usages', to='shuup.Order')), ], ), migrations.CreateModel( name='ProductDiscountEffect', fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='BasketDiscountAmount', fields=[ ('basketdiscounteffect_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketDiscountEffect', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('discount_amount', shuup.core.fields.MoneyValueField( blank=True, null=True, verbose_name='discount amount', help_text='Flat amount of discount.', decimal_places=9, default=None, max_digits=36)), ], options={ 'abstract': False, }, bases=('campaigns.basketdiscounteffect', ), ), migrations.CreateModel( name='BasketDiscountPercentage', fields=[ ('basketdiscounteffect_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketDiscountEffect', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('discount_percentage', models.DecimalField( blank=True, null=True, verbose_name='discount percentage', help_text='The discount percentage for this campaign.', decimal_places=5, max_digits=6)), ], options={ 'abstract': False, }, bases=('campaigns.basketdiscounteffect', ), ), migrations.CreateModel( name='BasketMaxTotalAmountCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('amount_value', shuup.core.fields.MoneyValueField( blank=True, null=True, verbose_name='maximum basket total amount', decimal_places=9, default=None, max_digits=36)), ], options={ 'abstract': False, }, bases=(shuup.utils.properties.MoneyPropped, 'campaigns.basketcondition'), ), migrations.CreateModel( name='BasketMaxTotalProductAmountCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('product_count', models.DecimalField( blank=True, decimal_places=9, verbose_name='maximum product count in basket', null=True, max_digits=36)), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='BasketTotalAmountCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('amount_value', shuup.core.fields.MoneyValueField( blank=True, null=True, verbose_name='basket total amount', decimal_places=9, default=None, max_digits=36)), ], options={ 'abstract': False, }, bases=(shuup.utils.properties.MoneyPropped, 'campaigns.basketcondition'), ), migrations.CreateModel( name='BasketTotalProductAmountCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('product_count', models.DecimalField(blank=True, decimal_places=9, verbose_name='product count in basket', null=True, max_digits=36)), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='CategoryFilter', fields=[ ('catalogfilter_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.CatalogFilter', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('categories', models.ManyToManyField(verbose_name='categories', to='shuup.Category')), ], options={ 'abstract': False, }, bases=('campaigns.catalogfilter', ), ), migrations.CreateModel( name='ContactBasketCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('contacts', models.ManyToManyField(verbose_name='contacts', to='shuup.Contact')), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='ContactCondition', fields=[ ('contextcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.ContextCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('contacts', models.ManyToManyField(verbose_name='contacts', to='shuup.Contact')), ], options={ 'abstract': False, }, bases=('campaigns.contextcondition', ), ), migrations.CreateModel( name='ContactGroupBasketCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('contact_groups', models.ManyToManyField(verbose_name='contact groups', to='shuup.ContactGroup')), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='ContactGroupCondition', fields=[ ('contextcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.ContextCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('contact_groups', models.ManyToManyField(verbose_name='contact groups', to='shuup.ContactGroup')), ], options={ 'abstract': False, }, bases=('campaigns.contextcondition', ), ), migrations.CreateModel( name='DiscountFromProduct', fields=[ ('basketlineeffect_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketLineEffect', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('per_line_discount', models.BooleanField( verbose_name='per line discount', help_text= 'Uncheck this if you want to give discount for each matched product.', default=True)), ('discount_amount', shuup.core.fields.MoneyValueField( blank=True, null=True, verbose_name='discount amount', help_text='Flat amount of discount.', decimal_places=9, default=None, max_digits=36)), ('products', models.ManyToManyField(verbose_name='product', to='shuup.Product')), ], options={ 'abstract': False, }, bases=('campaigns.basketlineeffect', ), ), migrations.CreateModel( name='FreeProductLine', fields=[ ('basketlineeffect_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketLineEffect', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('quantity', models.PositiveIntegerField(default=1, verbose_name='quantity')), ('products', models.ManyToManyField(verbose_name='product', to='shuup.Product')), ], options={ 'abstract': False, }, bases=('campaigns.basketlineeffect', ), ), migrations.CreateModel( name='ProductDiscountAmount', fields=[ ('productdiscounteffect_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.ProductDiscountEffect', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('discount_amount', shuup.core.fields.MoneyValueField( blank=True, null=True, verbose_name='discount amount', help_text='Flat amount of discount.', decimal_places=9, default=None, max_digits=36)), ], options={ 'abstract': False, }, bases=('campaigns.productdiscounteffect', ), ), migrations.CreateModel( name='ProductDiscountPercentage', fields=[ ('productdiscounteffect_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.ProductDiscountEffect', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('discount_percentage', models.DecimalField( blank=True, null=True, verbose_name='discount percentage', help_text='The discount percentage for this campaign.', decimal_places=5, max_digits=6)), ], options={ 'abstract': False, }, bases=('campaigns.productdiscounteffect', ), ), migrations.CreateModel( name='ProductFilter', fields=[ ('catalogfilter_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.CatalogFilter', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('products', models.ManyToManyField(verbose_name='product', to='shuup.Product')), ], options={ 'abstract': False, }, bases=('campaigns.catalogfilter', ), ), migrations.CreateModel( name='ProductsInBasketCondition', fields=[ ('basketcondition_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.BasketCondition', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('quantity', models.PositiveIntegerField(default=1, verbose_name='quantity')), ('products', models.ManyToManyField(blank=True, verbose_name='products', to='shuup.Product')), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='ProductTypeFilter', fields=[ ('catalogfilter_ptr', models.OneToOneField(on_delete=models.CASCADE, to='campaigns.CatalogFilter', parent_link=True, serialize=False, auto_created=True, primary_key=True)), ('product_types', models.ManyToManyField(verbose_name='product Types', to='shuup.ProductType')), ], options={ 'abstract': False, }, bases=('campaigns.catalogfilter', ), ), migrations.AddField( model_name='productdiscounteffect', name='campaign', field=models.ForeignKey(on_delete=models.CASCADE, related_name='effects', to='campaigns.CatalogCampaign', verbose_name='campaign'), ), migrations.AddField( model_name='productdiscounteffect', name='polymorphic_ctype', field=models.ForeignKey( on_delete=models.CASCADE, related_name='polymorphic_campaigns.productdiscounteffect_set+', to='contenttypes.ContentType', null=True, editable=False), ), migrations.AddField( model_name='contextcondition', name='polymorphic_ctype', field=models.ForeignKey( on_delete=models.CASCADE, related_name='polymorphic_campaigns.contextcondition_set+', to='contenttypes.ContentType', null=True, editable=False), ), migrations.AddField( model_name='catalogfilter', name='polymorphic_ctype', field=models.ForeignKey( on_delete=models.CASCADE, related_name='polymorphic_campaigns.catalogfilter_set+', to='contenttypes.ContentType', null=True, editable=False), ), migrations.AddField( model_name='catalogcampaign', name='conditions', field=models.ManyToManyField(blank=True, related_name='campaign', to='campaigns.ContextCondition'), ), migrations.AddField( model_name='catalogcampaign', name='created_by', field=models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='created by'), ), migrations.AddField( model_name='catalogcampaign', name='filters', field=models.ManyToManyField(blank=True, related_name='campaign', to='campaigns.CatalogFilter'), ), migrations.AddField( model_name='catalogcampaign', name='modified_by', field=models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='modified by'), ), migrations.AddField( model_name='catalogcampaign', name='shop', field=models.ForeignKey( on_delete=models.CASCADE, to='shuup.Shop', verbose_name='shop', help_text='The shop where campaign is active.'), ), migrations.AddField( model_name='basketlineeffect', name='campaign', field=models.ForeignKey(on_delete=models.CASCADE, related_name='line_effects', to='campaigns.BasketCampaign', verbose_name='campaign'), ), migrations.AddField( model_name='basketlineeffect', name='polymorphic_ctype', field=models.ForeignKey( on_delete=models.CASCADE, related_name='polymorphic_campaigns.basketlineeffect_set+', to='contenttypes.ContentType', null=True, editable=False), ), migrations.AddField( model_name='basketdiscounteffect', name='campaign', field=models.ForeignKey(on_delete=models.CASCADE, related_name='discount_effects', to='campaigns.BasketCampaign', verbose_name='campaign'), ), migrations.AddField( model_name='basketdiscounteffect', name='polymorphic_ctype', field=models.ForeignKey( on_delete=models.CASCADE, related_name='polymorphic_campaigns.basketdiscounteffect_set+', to='contenttypes.ContentType', null=True, editable=False), ), migrations.AddField( model_name='basketcondition', name='polymorphic_ctype', field=models.ForeignKey( on_delete=models.CASCADE, related_name='polymorphic_campaigns.basketcondition_set+', to='contenttypes.ContentType', null=True, editable=False), ), migrations.AddField( model_name='basketcampaign', name='conditions', field=models.ManyToManyField(blank=True, related_name='campaign', to='campaigns.BasketCondition'), ), migrations.AddField( model_name='basketcampaign', name='coupon', field=models.OneToOneField(on_delete=models.CASCADE, verbose_name='coupon', blank=True, related_name='campaign', to='campaigns.Coupon', null=True), ), migrations.AddField( model_name='basketcampaign', name='created_by', field=models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='created by'), ), migrations.AddField( model_name='basketcampaign', name='modified_by', field=models.ForeignKey( blank=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, null=True, verbose_name='modified by'), ), migrations.AddField( model_name='basketcampaign', name='shop', field=models.ForeignKey( on_delete=models.CASCADE, to='shuup.Shop', verbose_name='shop', help_text='The shop where campaign is active.'), ), migrations.AlterUniqueTogether( name='contactgroupsalesrange', unique_together=set([('group', 'shop')]), ), migrations.AlterUniqueTogether( name='catalogcampaigntranslation', unique_together=set([('language_code', 'master')]), ), migrations.AlterUniqueTogether( name='basketcampaigntranslation', unique_together=set([('language_code', 'master')]), ), ]
class Migration(migrations.Migration): replaces = [ ('shuup_simple_cms', '0001_initial'), ('shuup_simple_cms', '0002_md_to_html'), ('shuup_simple_cms', '0003_alter_names'), ] dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Page', fields=[ ('id', models.AutoField(auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('available_from', models.DateTimeField(null=True, blank=True, verbose_name='available from')), ('available_to', models.DateTimeField(null=True, blank=True, verbose_name='available to')), ('created_on', models.DateTimeField(auto_now_add=True, verbose_name='created on')), ('modified_on', models.DateTimeField(auto_now=True, verbose_name='modified on')), ('identifier', shuup.core.fields.InternalIdentifierField(editable=False, blank=True, unique=True, null=True, max_length=64)), ('visible_in_menu', models.BooleanField(default=False, verbose_name='visible in menu')), ('list_children_on_page', models.BooleanField(default=False, verbose_name='list children on page')), ('lft', models.PositiveIntegerField(db_index=True, editable=False)), ('rght', models.PositiveIntegerField(db_index=True, editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(db_index=True, editable=False)), ('created_by', models.ForeignKey( on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, verbose_name='created by', null=True, related_name='+')), ('modified_by', models.ForeignKey( on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, verbose_name='modified by', null=True, related_name='+')), ('parent', mptt.fields.TreeForeignKey(blank=True, to='shuup_simple_cms.Page', verbose_name='parent', null=True, related_name='children', on_delete=models.CASCADE)), ], options={ 'verbose_name_plural': 'pages', 'ordering': ('-id', ), 'verbose_name': 'page', }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='PageTranslation', fields=[ ('id', models.AutoField(auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')), ('title', models.CharField(max_length=256, verbose_name='title')), ('url', models.CharField(blank=True, default=None, verbose_name='URL', null=True, max_length=100, unique=True)), ('content', models.TextField(verbose_name='content')), ('master', models.ForeignKey(editable=False, to='shuup_simple_cms.Page', null=True, related_name='translations', on_delete=models.CASCADE)), ], options={ 'default_permissions': (), 'db_tablespace': '', 'db_table': 'shuup_simple_cms_page_translation', 'managed': True, 'verbose_name': 'page Translation', }, ), migrations.AlterUniqueTogether(name='pagetranslation', unique_together=set([('language_code', 'master')])), migrations.AlterField( model_name='page', name='available_from', field=models.DateTimeField( null=True, blank=True, help_text=( 'Set an available from date to restrict the page to ' 'be available only after a certain date and time. This ' 'is useful for pages describing sales campaigns or other ' 'time-sensitive pages.'), verbose_name='available from')), migrations.AlterField( model_name='page', name='available_to', field=models.DateTimeField( null=True, blank=True, help_text=( 'Set an available to date to restrict the page to be ' 'available only after a certain date and time. This is ' 'useful for pages describing sales campaigns or other ' 'time-sensitive pages.'), verbose_name='available to')), migrations.AlterField( model_name='page', name='list_children_on_page', field=models.BooleanField(help_text=( 'Check this if this page should list its children pages.'), default=False, verbose_name='list children on page'), ), migrations.AlterField( model_name='page', name='parent', field=mptt.fields.TreeForeignKey( blank=True, to='shuup_simple_cms.Page', verbose_name='parent', null=True, related_name='children', on_delete=models.CASCADE, help_text=('Set this to a parent page if this page should be ' 'subcategorized under another page.'))), migrations.AlterField( model_name='page', name='visible_in_menu', field=models.BooleanField(help_text=( 'Check this if this page should have a link in the top ' 'menu of the store front.'), default=False, verbose_name='visible in menu'), ), migrations.AlterField( model_name='pagetranslation', name='content', field=models.TextField(help_text=( 'The page content. This is the text that is displayed ' 'when customers click on your page link.'), verbose_name='content'), ), migrations.AlterField( model_name='pagetranslation', name='title', field=models.CharField( max_length=256, help_text=( 'The page title. This is shown anywhere links to your ' 'page are shown.'), verbose_name='title'), ), migrations.AlterField( model_name='pagetranslation', name='url', field=models.CharField( blank=True, default=None, verbose_name='URL', null=True, max_length=100, help_text=( 'The page url. Choose a descriptive url so that search ' 'engines can rank your page higher. Often the best url is ' 'simply the page title with spaces replaced with dashes.'), unique=True), ), ]
class Migration(migrations.Migration): replaces = [ ('campaigns', '0001_initial'), ('campaigns', '0002_productsinbasketcondition_operator'), ('campaigns', '0003_category_products'), ('campaigns', '0004_logmodels'), ('campaigns', '0005_catalogfiltercachedshopproduct'), ('campaigns', '0006_basket_cond_category_to_categories'), ('campaigns', '0007_add_excluded_categories'), ('campaigns', '0008_freeproductline_quantity_to_quantityfield'), ('campaigns', '0009_hourcondition'), ('campaigns', '0010_hourbasketcondition'), ('campaigns', '0011_alter_names'), ] dependencies = [ ('wshop', '0001_squashed_0039_alter_names'), ('contenttypes', '0002_remove_content_type_name'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='BasketCampaign', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('name', models.CharField( help_text='The name for this campaign.', max_length=120, verbose_name='name')), ('identifier', wshop.core.fields.InternalIdentifierField( editable=False, blank=True, max_length=64, null=True, unique=True)), ('active', models.BooleanField( help_text= 'Check this if the campaign is currently active. Please also set a start and end date.', verbose_name='active', default=False)), ('start_datetime', models.DateTimeField( blank=True, help_text= 'The date and time the campaign starts. This is only applicable if the campaign is marked as active.', null=True, verbose_name='start date and time')), ('end_datetime', models.DateTimeField( blank=True, help_text= 'The date and time the campaign ends. This is only applicable if the campaign is marked as active.', null=True, verbose_name='end date and time')), ('created_on', models.DateTimeField( verbose_name='created on', auto_now_add=True)), ('modified_on', models.DateTimeField( auto_now=True, verbose_name='modified on')), ('basket_line_text', models.CharField( help_text='This text will be shown in basket.', max_length=120, verbose_name='basket line text')), ], options={ 'abstract': False, 'verbose_name_plural': 'Campaigns', 'verbose_name': 'Campaign', }, bases=(wshop.utils.properties.MoneyPropped, parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='BasketCampaignLogEntry', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('created_on', models.DateTimeField( verbose_name='created on', auto_now_add=True)), ('message', models.CharField( max_length=256, verbose_name='message')), ('identifier', models.CharField( blank=True, max_length=64, verbose_name='identifier')), ('kind', enumfields.fields.EnumIntegerField( enum=wshop.utils.analog.LogEntryKind, verbose_name='log entry kind', default=0)), ('extra', jsonfield.fields.JSONField( blank=True, null=True, verbose_name='extra data')), ('target', models.ForeignKey( to='campaigns.BasketCampaign', related_name='log_entries', verbose_name='target')), ('user', models.ForeignKey( to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.PROTECT, null=True, verbose_name='user')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='BasketCampaignTranslation', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('language_code', models.CharField( max_length=15, db_index=True, verbose_name='Language')), ('public_name', models.CharField( help_text='The campaign name to show in the store front.', max_length=120, verbose_name='public name')), ('master', models.ForeignKey( to='campaigns.BasketCampaign', editable=False, related_name='translations', null=True)), ], options={ 'managed': True, 'db_table': 'campaigns_basketcampaign_translation', 'default_permissions': (), 'db_tablespace': '', 'verbose_name': 'Campaign Translation', }, ), migrations.CreateModel( name='BasketCondition', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('active', models.BooleanField(default=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='BasketDiscountEffect', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='BasketLineEffect', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='CatalogCampaign', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('name', models.CharField( help_text='The name for this campaign.', max_length=120, verbose_name='name')), ('identifier', wshop.core.fields.InternalIdentifierField( editable=False, blank=True, max_length=64, null=True, unique=True)), ('active', models.BooleanField( help_text= 'Check this if the campaign is currently active. Please also set a start and end date.', verbose_name='active', default=False)), ('start_datetime', models.DateTimeField( blank=True, help_text= 'The date and time the campaign starts. This is only applicable if the campaign is marked as active.', null=True, verbose_name='start date and time')), ('end_datetime', models.DateTimeField( blank=True, help_text= 'The date and time the campaign ends. This is only applicable if the campaign is marked as active.', null=True, verbose_name='end date and time')), ('created_on', models.DateTimeField( verbose_name='created on', auto_now_add=True)), ('modified_on', models.DateTimeField( auto_now=True, verbose_name='modified on')), ], options={ 'abstract': False, 'verbose_name_plural': 'Campaigns', 'verbose_name': 'Campaign', }, bases=(wshop.utils.properties.MoneyPropped, parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='CatalogCampaignLogEntry', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('created_on', models.DateTimeField( verbose_name='created on', auto_now_add=True)), ('message', models.CharField( max_length=256, verbose_name='message')), ('identifier', models.CharField( blank=True, max_length=64, verbose_name='identifier')), ('kind', enumfields.fields.EnumIntegerField( enum=wshop.utils.analog.LogEntryKind, verbose_name='log entry kind', default=0)), ('extra', jsonfield.fields.JSONField( blank=True, null=True, verbose_name='extra data')), ('target', models.ForeignKey( to='campaigns.CatalogCampaign', related_name='log_entries', verbose_name='target')), ('user', models.ForeignKey( to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.PROTECT, null=True, verbose_name='user')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='CatalogCampaignTranslation', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('language_code', models.CharField( max_length=15, db_index=True, verbose_name='Language')), ('public_name', models.CharField( blank=True, help_text='The campaign name to show in the store front.', max_length=120)), ('master', models.ForeignKey( to='campaigns.CatalogCampaign', editable=False, related_name='translations', null=True)), ], options={ 'managed': True, 'db_table': 'campaigns_catalogcampaign_translation', 'default_permissions': (), 'db_tablespace': '', 'verbose_name': 'Campaign Translation', }, ), migrations.CreateModel( name='CatalogFilter', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('active', models.BooleanField( verbose_name='active', default=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='CatalogFilterCachedShopProduct', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ], ), migrations.CreateModel( name='ContactGroupSalesRange', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('min_value', wshop.core.fields.MoneyValueField( blank=True, decimal_places=9, null=True, max_digits=36, verbose_name='min amount')), ('max_value', wshop.core.fields.MoneyValueField( blank=True, decimal_places=9, null=True, max_digits=36, verbose_name='max amount')), ('group', models.ForeignKey( to='wshop.ContactGroup', related_name='+', verbose_name='group')), ('shop', models.ForeignKey( to='wshop.Shop', related_name='+', verbose_name='shop')), ], ), migrations.CreateModel( name='ContextCondition', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('active', models.BooleanField(default=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='Coupon', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('code', models.CharField(max_length=12)), ('usage_limit_customer', models.PositiveIntegerField( blank=True, help_text= 'Limit the amount of usages per a single customer.', null=True, verbose_name='usage limit per customer')), ('usage_limit', models.PositiveIntegerField( blank=True, help_text= 'Set the absolute limit of usages for this coupon. If the limit is zero (0) coupon cannot be used.', null=True, verbose_name='usage limit')), ('active', models.BooleanField( verbose_name='is active', default=False)), ('created_on', models.DateTimeField( verbose_name='created on', auto_now_add=True)), ('modified_on', models.DateTimeField( auto_now=True, verbose_name='modified on')), ('created_by', models.ForeignKey( to=settings.AUTH_USER_MODEL, blank=True, on_delete=django.db.models.deletion.SET_NULL, null=True, verbose_name='created by', related_name='+')), ('modified_by', models.ForeignKey( to=settings.AUTH_USER_MODEL, blank=True, on_delete=django.db.models.deletion.SET_NULL, null=True, verbose_name='modified by', related_name='+')), ], ), migrations.CreateModel( name='CouponLogEntry', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('created_on', models.DateTimeField( verbose_name='created on', auto_now_add=True)), ('message', models.CharField( max_length=256, verbose_name='message')), ('identifier', models.CharField( blank=True, max_length=64, verbose_name='identifier')), ('kind', enumfields.fields.EnumIntegerField( enum=wshop.utils.analog.LogEntryKind, verbose_name='log entry kind', default=0)), ('extra', jsonfield.fields.JSONField( blank=True, null=True, verbose_name='extra data')), ('target', models.ForeignKey( to='campaigns.Coupon', related_name='log_entries', verbose_name='target')), ('user', models.ForeignKey( to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.PROTECT, null=True, verbose_name='user')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='CouponUsage', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('created_on', models.DateTimeField( verbose_name='created on', auto_now_add=True)), ('modified_on', models.DateTimeField( auto_now=True, verbose_name='modified on')), ('coupon', models.ForeignKey( to='campaigns.Coupon', related_name='usages')), ('created_by', models.ForeignKey( to=settings.AUTH_USER_MODEL, blank=True, on_delete=django.db.models.deletion.SET_NULL, null=True, verbose_name='created by', related_name='+')), ('modified_by', models.ForeignKey( to=settings.AUTH_USER_MODEL, blank=True, on_delete=django.db.models.deletion.SET_NULL, null=True, verbose_name='modified by', related_name='+')), ('order', models.ForeignKey( to='wshop.Order', related_name='coupon_usages')), ], ), migrations.CreateModel( name='CouponUsageLogEntry', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ('created_on', models.DateTimeField( verbose_name='created on', auto_now_add=True)), ('message', models.CharField( max_length=256, verbose_name='message')), ('identifier', models.CharField( blank=True, max_length=64, verbose_name='identifier')), ('kind', enumfields.fields.EnumIntegerField( enum=wshop.utils.analog.LogEntryKind, verbose_name='log entry kind', default=0)), ('extra', jsonfield.fields.JSONField( blank=True, null=True, verbose_name='extra data')), ('target', models.ForeignKey( to='campaigns.CouponUsage', related_name='log_entries', verbose_name='target')), ('user', models.ForeignKey( to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.PROTECT, null=True, verbose_name='user')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='ProductDiscountEffect', fields=[ ('id', models.AutoField( auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='BasketDiscountAmount', fields=[ ('basketdiscounteffect_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketDiscountEffect')), ('discount_amount', wshop.core.fields.MoneyValueField( decimal_places=9, max_digits=36, blank=True, help_text='Flat amount of discount.', null=True, verbose_name='discount amount', default=None)), ], options={ 'abstract': False, }, bases=('campaigns.basketdiscounteffect', ), ), migrations.CreateModel( name='BasketDiscountPercentage', fields=[ ('basketdiscounteffect_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketDiscountEffect')), ('discount_percentage', models.DecimalField( decimal_places=5, max_digits=6, blank=True, help_text='The discount percentage for this campaign.', null=True, verbose_name='discount percentage')), ], options={ 'abstract': False, }, bases=('campaigns.basketdiscounteffect', ), ), migrations.CreateModel( name='BasketMaxTotalAmountCondition', fields=[ ('basketcondition_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketCondition')), ('amount_value', wshop.core.fields.MoneyValueField( decimal_places=9, max_digits=36, blank=True, null=True, verbose_name='maximum basket total amount', default=None)), ], options={ 'abstract': False, }, bases=(wshop.utils.properties.MoneyPropped, 'campaigns.basketcondition'), ), migrations.CreateModel( name='BasketMaxTotalProductAmountCondition', fields=[ ('basketcondition_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketCondition')), ('product_count', models.DecimalField( blank=True, decimal_places=9, null=True, max_digits=36, verbose_name='maximum product count in basket')), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='BasketTotalAmountCondition', fields=[ ('basketcondition_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketCondition')), ('amount_value', wshop.core.fields.MoneyValueField( decimal_places=9, max_digits=36, blank=True, null=True, verbose_name='basket total amount', default=None)), ], options={ 'abstract': False, }, bases=(wshop.utils.properties.MoneyPropped, 'campaigns.basketcondition'), ), migrations.CreateModel( name='BasketTotalProductAmountCondition', fields=[ ('basketcondition_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketCondition')), ('product_count', models.DecimalField( blank=True, decimal_places=9, null=True, max_digits=36, verbose_name='product count in basket')), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='CategoryFilter', fields=[ ('catalogfilter_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.CatalogFilter')), ('categories', models.ManyToManyField( to='wshop.Category', verbose_name='categories')), ], options={ 'abstract': False, }, bases=('campaigns.catalogfilter', ), ), migrations.CreateModel( name='CategoryProductsBasketCondition', fields=[ ('basketcondition_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketCondition')), ('operator', enumfields.fields.EnumIntegerField( enum=wshop.campaigns.models.basket_conditions. ComparisonOperator, verbose_name='operator', default=1)), ('quantity', models.PositiveIntegerField( verbose_name='quantity', default=1)), ('categories', models.ManyToManyField( to='wshop.Category', verbose_name='categories', related_name= '_categoryproductsbasketcondition_categories_+')), ('excluded_categories', models.ManyToManyField( blank=True, help_text= "If the customer has even a single product in the basket from these categories this rule won't match thus the campaign cannot be applied to the basket.", to='wshop.Category', verbose_name='excluded categories', related_name= '_categoryproductsbasketcondition_excluded_categories_+')), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='ContactBasketCondition', fields=[ ('basketcondition_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketCondition')), ('contacts', models.ManyToManyField( to='wshop.Contact', verbose_name='contacts')), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='ContactCondition', fields=[ ('contextcondition_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.ContextCondition')), ('contacts', models.ManyToManyField( to='wshop.Contact', verbose_name='contacts')), ], options={ 'abstract': False, }, bases=('campaigns.contextcondition', ), ), migrations.CreateModel( name='ContactGroupBasketCondition', fields=[ ('basketcondition_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketCondition')), ('contact_groups', models.ManyToManyField( to='wshop.ContactGroup', verbose_name='contact groups')), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='ContactGroupCondition', fields=[ ('contextcondition_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.ContextCondition')), ('contact_groups', models.ManyToManyField( to='wshop.ContactGroup', verbose_name='contact groups')), ], options={ 'abstract': False, }, bases=('campaigns.contextcondition', ), ), migrations.CreateModel( name='DiscountFromCategoryProducts', fields=[ ('basketlineeffect_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketLineEffect')), ('discount_amount', wshop.core.fields.MoneyValueField( decimal_places=9, max_digits=36, blank=True, help_text='Flat amount of discount.', null=True, verbose_name='discount amount', default=None)), ('discount_percentage', models.DecimalField( decimal_places=5, max_digits=6, blank=True, help_text='The discount percentage for this campaign.', null=True, verbose_name='discount percentage')), ('category', models.ForeignKey( to='wshop.Category', verbose_name='category')), ], options={ 'abstract': False, }, bases=('campaigns.basketlineeffect', ), ), migrations.CreateModel( name='DiscountFromProduct', fields=[ ('basketlineeffect_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketLineEffect')), ('per_line_discount', models.BooleanField( help_text= 'Uncheck this if you want to give discount for each matched product.', verbose_name='per line discount', default=True)), ('discount_amount', wshop.core.fields.MoneyValueField( decimal_places=9, max_digits=36, blank=True, help_text='Flat amount of discount.', null=True, verbose_name='discount amount', default=None)), ('products', models.ManyToManyField( to='wshop.Product', verbose_name='product')), ], options={ 'abstract': False, }, bases=('campaigns.basketlineeffect', ), ), migrations.CreateModel( name='FreeProductLine', fields=[ ('basketlineeffect_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketLineEffect')), ('quantity', wshop.core.fields.QuantityField( decimal_places=9, max_digits=36, verbose_name='quantity', default=1)), ('products', models.ManyToManyField( to='wshop.Product', verbose_name='product')), ], options={ 'abstract': False, }, bases=('campaigns.basketlineeffect', ), ), migrations.CreateModel( name='HourBasketCondition', fields=[ ('basketcondition_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketCondition')), ('hour_start', models.TimeField( help_text='12pm is considered noon and 12am as midnight.', verbose_name='start time')), ('hour_end', models.TimeField( help_text= '12pm is considered noon and 12am as midnight. End time is not considered match.', verbose_name='end time')), ('days', models.CharField( max_length=255, verbose_name='days', validators=[ django.core.validators.RegexValidator( re.compile('^[\\d,]+\\Z', 32), 'Enter only digits separated by commas.', 'invalid') ])), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='HourCondition', fields=[ ('contextcondition_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.ContextCondition')), ('hour_start', models.TimeField( help_text='12pm is considered noon and 12am as midnight.', verbose_name='start time')), ('hour_end', models.TimeField( help_text= '12pm is considered noon and 12am as midnight. End time is not considered match.', verbose_name='end time')), ('days', models.CharField( max_length=255, verbose_name='days', validators=[ django.core.validators.RegexValidator( re.compile('^[\\d,]+\\Z', 32), 'Enter only digits separated by commas.', 'invalid') ])), ], options={ 'abstract': False, }, bases=('campaigns.contextcondition', ), ), migrations.CreateModel( name='ProductDiscountAmount', fields=[ ('productdiscounteffect_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.ProductDiscountEffect')), ('discount_amount', wshop.core.fields.MoneyValueField( decimal_places=9, max_digits=36, blank=True, help_text='Flat amount of discount.', null=True, verbose_name='discount amount', default=None)), ], options={ 'abstract': False, }, bases=('campaigns.productdiscounteffect', ), ), migrations.CreateModel( name='ProductDiscountPercentage', fields=[ ('productdiscounteffect_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.ProductDiscountEffect')), ('discount_percentage', models.DecimalField( decimal_places=5, max_digits=6, blank=True, help_text='The discount percentage for this campaign.', null=True, verbose_name='discount percentage')), ], options={ 'abstract': False, }, bases=('campaigns.productdiscounteffect', ), ), migrations.CreateModel( name='ProductFilter', fields=[ ('catalogfilter_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.CatalogFilter')), ('products', models.ManyToManyField( to='wshop.Product', verbose_name='product')), ], options={ 'abstract': False, }, bases=('campaigns.catalogfilter', ), ), migrations.CreateModel( name='ProductsInBasketCondition', fields=[ ('basketcondition_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.BasketCondition')), ('operator', enumfields.fields.EnumIntegerField( enum=wshop.campaigns.models.basket_conditions. ComparisonOperator, verbose_name='operator', default=1)), ('quantity', models.PositiveIntegerField( verbose_name='quantity', default=1)), ('products', models.ManyToManyField( blank=True, to='wshop.Product', verbose_name='products')), ], options={ 'abstract': False, }, bases=('campaigns.basketcondition', ), ), migrations.CreateModel( name='ProductTypeFilter', fields=[ ('catalogfilter_ptr', models.OneToOneField( auto_created=True, primary_key=True, parent_link=True, serialize=False, to='campaigns.CatalogFilter')), ('product_types', models.ManyToManyField( to='wshop.ProductType', verbose_name='product Types')), ], options={ 'abstract': False, }, bases=('campaigns.catalogfilter', ), ), migrations.AddField( model_name='productdiscounteffect', name='campaign', field=models.ForeignKey( to='campaigns.CatalogCampaign', related_name='effects', verbose_name='campaign'), ), migrations.AddField( model_name='productdiscounteffect', name='polymorphic_ctype', field=models.ForeignKey( to='contenttypes.ContentType', editable=False, related_name= 'polymorphic_campaigns.productdiscounteffect_set+', null=True), ), migrations.AddField( model_name='contextcondition', name='polymorphic_ctype', field=models.ForeignKey( to='contenttypes.ContentType', editable=False, related_name='polymorphic_campaigns.contextcondition_set+', null=True), ), migrations.AddField( model_name='catalogfiltercachedshopproduct', name='filter', field=models.ForeignKey( to='campaigns.CatalogFilter', related_name='cached_shop_products'), ), migrations.AddField( model_name='catalogfiltercachedshopproduct', name='shop_product', field=models.ForeignKey( to='wshop.ShopProduct', related_name='cached_catalog_campaign_filters'), ), migrations.AddField( model_name='catalogfilter', name='polymorphic_ctype', field=models.ForeignKey( to='contenttypes.ContentType', editable=False, related_name='polymorphic_campaigns.catalogfilter_set+', null=True), ), migrations.AddField( model_name='catalogcampaign', name='conditions', field=models.ManyToManyField( blank=True, to='campaigns.ContextCondition', related_name='campaign'), ), migrations.AddField( model_name='catalogcampaign', name='created_by', field=models.ForeignKey( to=settings.AUTH_USER_MODEL, blank=True, on_delete=django.db.models.deletion.SET_NULL, null=True, verbose_name='created by', related_name='+'), ), migrations.AddField( model_name='catalogcampaign', name='filters', field=models.ManyToManyField( blank=True, to='campaigns.CatalogFilter', related_name='campaign'), ), migrations.AddField( model_name='catalogcampaign', name='modified_by', field=models.ForeignKey( to=settings.AUTH_USER_MODEL, blank=True, on_delete=django.db.models.deletion.SET_NULL, null=True, verbose_name='modified by', related_name='+'), ), migrations.AddField( model_name='catalogcampaign', name='shop', field=models.ForeignKey( help_text='The shop where the campaign is active.', to='wshop.Shop', verbose_name='shop'), ), migrations.AddField( model_name='basketlineeffect', name='campaign', field=models.ForeignKey( to='campaigns.BasketCampaign', related_name='line_effects', verbose_name='campaign'), ), migrations.AddField( model_name='basketlineeffect', name='polymorphic_ctype', field=models.ForeignKey( to='contenttypes.ContentType', editable=False, related_name='polymorphic_campaigns.basketlineeffect_set+', null=True), ), migrations.AddField( model_name='basketdiscounteffect', name='campaign', field=models.ForeignKey( to='campaigns.BasketCampaign', related_name='discount_effects', verbose_name='campaign'), ), migrations.AddField( model_name='basketdiscounteffect', name='polymorphic_ctype', field=models.ForeignKey( to='contenttypes.ContentType', editable=False, related_name='polymorphic_campaigns.basketdiscounteffect_set+', null=True), ), migrations.AddField( model_name='basketcondition', name='polymorphic_ctype', field=models.ForeignKey( to='contenttypes.ContentType', editable=False, related_name='polymorphic_campaigns.basketcondition_set+', null=True), ), migrations.AddField( model_name='basketcampaign', name='conditions', field=models.ManyToManyField( blank=True, to='campaigns.BasketCondition', related_name='campaign'), ), migrations.AddField( model_name='basketcampaign', name='coupon', field=models.OneToOneField( blank=True, to='campaigns.Coupon', null=True, verbose_name='coupon', related_name='campaign'), ), migrations.AddField( model_name='basketcampaign', name='created_by', field=models.ForeignKey( to=settings.AUTH_USER_MODEL, blank=True, on_delete=django.db.models.deletion.SET_NULL, null=True, verbose_name='created by', related_name='+'), ), migrations.AddField( model_name='basketcampaign', name='modified_by', field=models.ForeignKey( to=settings.AUTH_USER_MODEL, blank=True, on_delete=django.db.models.deletion.SET_NULL, null=True, verbose_name='modified by', related_name='+'), ), migrations.AddField( model_name='basketcampaign', name='shop', field=models.ForeignKey( help_text='The shop where the campaign is active.', to='wshop.Shop', verbose_name='shop'), ), migrations.AlterUniqueTogether( name='contactgroupsalesrange', unique_together=set([('group', 'shop')]), ), migrations.AlterUniqueTogether( name='catalogcampaigntranslation', unique_together=set([('language_code', 'master')]), ), migrations.AlterUniqueTogether( name='basketcampaigntranslation', unique_together=set([('language_code', 'master')]), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('shuup', '0045_disable_default_marketing_permission'), ] operations = [ migrations.CreateModel( name='Task', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=60, verbose_name='name')), ('status', enumfields.fields.EnumIntegerField( default=1, enum=shuup.tasks.models.TaskStatus, verbose_name='status')), ('priority', models.PositiveIntegerField(db_index=True, default=0, verbose_name='priority')), ('completed_on', models.DateTimeField(blank=True, null=True, verbose_name='completed on')), ('created_on', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='created on')), ('modified_on', models.DateTimeField(auto_now=True, db_index=True, verbose_name='modified on')), ('assigned_to', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='assigned_tasks', to='shuup.Contact', verbose_name='assigned to')), ('completed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='completed_tasks', to='shuup.Contact', verbose_name='completed by')), ('creator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='creted_tasks', to='shuup.Contact', verbose_name='creator')), ('shop', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='shuup.Shop', verbose_name='shop')), ], ), migrations.CreateModel( name='TaskComment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('visibility', enumfields.fields.EnumIntegerField( db_index=True, default=1, enum=shuup.tasks.models.TaskCommentVisibility, verbose_name='visibility')), ('body', models.TextField(verbose_name='body')), ('created_on', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='created on')), ('modified_on', models.DateTimeField(auto_now=True, db_index=True, verbose_name='modified on')), ('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='task_comments', to='shuup.Contact', verbose_name='author')), ('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='shuup_tasks.Task', verbose_name='task')), ], ), migrations.CreateModel( name='TaskLogEntry', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_on', models.DateTimeField(auto_now_add=True, verbose_name='created on')), ('message', models.CharField(max_length=256, verbose_name='message')), ('identifier', models.CharField(blank=True, max_length=64, verbose_name='identifier')), ('kind', enumfields.fields.EnumIntegerField( default=0, enum=shuup.utils.analog.LogEntryKind, verbose_name='log entry kind')), ('extra', jsonfield.fields.JSONField(blank=True, null=True, verbose_name='extra data')), ('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='log_entries', to='shuup_tasks.Task', verbose_name='target')), ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='TaskType', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('identifier', shuup.core.fields.InternalIdentifierField(blank=True, editable=False, max_length=64, null=True, unique=False)), ('shop', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='task_types', to='shuup.Shop', verbose_name='shop')), ], options={ 'verbose_name': 'task type', 'verbose_name_plural': 'task types', }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='TaskTypeTranslation', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')), ('name', models.TextField(verbose_name='name')), ('master', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='shuup_tasks.TaskType')), ], options={ 'db_tablespace': '', 'managed': True, 'default_permissions': (), 'verbose_name': 'task type Translation', 'db_table': 'shuup_tasks_tasktype_translation', }, ), migrations.AddField( model_name='task', name='type', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='shuup_tasks.TaskType', verbose_name='task type'), ), migrations.AlterUniqueTogether( name='tasktypetranslation', unique_together=set([('language_code', 'master')]), ), migrations.AlterUniqueTogether( name='tasktype', unique_together=set([('shop', 'identifier')]), ), ]
class Migration(migrations.Migration): initial = True dependencies = [("profiles", "0022_add_newsletter_options")] operations = [ migrations.CreateModel( name="SubscriptionTypeCategory", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("code", models.CharField(max_length=32)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "order", models.PositiveIntegerField( db_index=True, default=1, editable=False, ), ), ], options={"abstract": False, "ordering": ["order"]}, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name="SubscriptionType", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("code", models.CharField(max_length=32)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "order", models.PositiveIntegerField( db_index=True, default=1, editable=False, ), ), ( "subscription_type_category", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="subscription_types", to="subscriptions.SubscriptionTypeCategory", ), ), ], options={"abstract": False, "ordering": ["order"]}, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name="Subscription", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("created_at", models.DateTimeField(auto_now_add=True)), ("enabled", models.BooleanField(default=True)), ( "profile", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="subscriptions", to="profiles.Profile", ), ), ( "subscription_type", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="subscriptions", to="subscriptions.SubscriptionType", ), ), ], ), migrations.CreateModel( name="SubscriptionTypeTranslation", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "language_code", models.CharField( db_index=True, max_length=15, verbose_name="Language" ), ), ("label", models.CharField(max_length=255)), ( "master", models.ForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="translations", to="subscriptions.SubscriptionType", ), ), ], options={ "verbose_name": "subscription type Translation", "db_table": "subscriptions_subscriptiontype_translation", "db_tablespace": "", "managed": True, "default_permissions": (), "unique_together": {("language_code", "master")}, }, ), migrations.CreateModel( name="SubscriptionTypeCategoryTranslation", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "language_code", models.CharField( db_index=True, max_length=15, verbose_name="Language" ), ), ("label", models.CharField(max_length=255)), ( "master", models.ForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="translations", to="subscriptions.SubscriptionTypeCategory", ), ), ], options={ "verbose_name": "subscription type category Translation", "db_table": "subscriptions_subscriptiontypecategory_translation", "db_tablespace": "", "managed": True, "default_permissions": (), "unique_together": {("language_code", "master")}, }, ), ]
class Migration(migrations.Migration): dependencies = [ ('shuup', '0085_longer_order_line_sku'), ] operations = [ migrations.AddField( model_name='attribute', name='max_choices', field=models.PositiveIntegerField( default=1, help_text= 'Maximum amount of choices that user can choose from existing options. This field has affect only for choices type.', verbose_name='max choices'), ), migrations.AddField( model_name='attribute', name='min_choices', field=models.PositiveIntegerField( default=0, help_text= 'Minimum amount of choices that user can choose from existing options. This field has affect only for choices type.', verbose_name='min choices'), ), migrations.AddField( model_name='attribute', name='ordering', field=models.IntegerField( default=0, help_text= 'The ordering in which your attribute will be displayed.'), ), migrations.CreateModel( name='AttributeChoiceOption', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('attribute', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='choices', to='shuup.Attribute', verbose_name='attribute')), ], options={ 'abstract': False, }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.AddField( model_name='productattribute', name='chosen_options', field=models.ManyToManyField(to='shuup.AttributeChoiceOption', verbose_name='chosen options'), ), migrations.CreateModel( name='AttributeChoiceOptionTranslation', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')), ('name', models.CharField( help_text='The attribute choice option name. ', max_length=256, verbose_name='name')), ('master', parler.fields.TranslationsForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='shuup.AttributeChoiceOption')), ], options={ 'verbose_name': 'attribute choice option Translation', 'db_table': 'shuup_attributechoiceoption_translation', 'db_tablespace': '', 'managed': True, 'default_permissions': (), 'unique_together': {('language_code', 'master')}, }, bases=(parler.models.TranslatedFieldsModelMixin, models.Model), ), ]
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')]), ), ]