class Migration(migrations.Migration): dependencies = [ ('core', '0007_auto_20171004_1133'), ('course_metadata', '0070_auto_20171127_1057'), ] operations = [ migrations.CreateModel( name='Topic', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', django_extensions.db.fields.CreationDateTimeField(auto_now_add=True, verbose_name='created')), ('modified', django_extensions.db.fields.ModificationDateTimeField(auto_now=True, verbose_name='modified')), ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, verbose_name='UUID')), ('banner_image_url', models.URLField(blank=True, null=True)), ('slug', django_extensions.db.fields.AutoSlugField(blank=True, editable=False, help_text='Leave this field blank to have the value generated automatically.', populate_from='name')), ('partner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Partner')), ], bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='TopicTranslation', 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=255)), ('subtitle', models.CharField(blank=True, max_length=255, null=True)), ('description', models.TextField(blank=True, null=True)), ('long_description', models.TextField(blank=True, null=True)), ('master', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='course_metadata.Topic')), ], options={ 'verbose_name': 'Topic model translations', }, ), migrations.AlterUniqueTogether( name='topictranslation', unique_together=set([('language_code', 'master')]), ), migrations.AlterUniqueTogether( name='topic', unique_together=set([('partner', 'uuid'), ('partner', 'slug')]), ), ]
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): dependencies = [ ("sites", "0002_alter_domain_unique"), ("api", "0061_no_null_product_on_plantemplate"), ] operations = [ migrations.CreateModel( name="SiteProfile", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("logo", models.ImageField(blank=True, upload_to="")), ( "site", models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, to="sites.Site" ), ), ], options={"abstract": False}, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name="SiteProfileTranslation", 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)), ( "welcome_text", sfdo_template_helpers.fields.MarkdownField( blank=True, property_suffix="_markdown" ), ), ( "copyright_notice", sfdo_template_helpers.fields.MarkdownField( blank=True, property_suffix="_markdown" ), ), ( "master", models.ForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="translations", to="api.SiteProfile", ), ), ], options={ "verbose_name": "site profile Translation", "db_table": "api_siteprofile_translation", "db_tablespace": "", "managed": True, "default_permissions": (), }, ), migrations.AlterUniqueTogether( name="siteprofiletranslation", unique_together={("language_code", "master")} ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('oidc_provider', '0020_client__post_logout_redirect_uris'), ] operations = [ migrations.CreateModel( name='Api', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField( max_length=50, validators=[ django.core.validators.RegexValidator( '^[a-z0-9]*$', message=('May contain only lower case letters ' 'and digits.')) ], verbose_name='name')), ('required_scopes', multiselectfield.db.fields.MultiSelectField( blank=True, choices=[('email', 'E-mail'), ('profile', 'Profile'), ('address', 'Address'), ('github_username', 'GitHub username')], help_text=('Select the scopes that this API needs ' 'information from. Information from the ' 'selected scopes will be included to the ' 'API Tokens.'), max_length=1000, verbose_name='required scopes')), ], options={ 'verbose_name': 'API', 'verbose_name_plural': 'APIs', }, ), migrations.CreateModel( name='ApiDomain', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('identifier', models.CharField(help_text=( 'API domain identifier, e.g. https://api.hel.fi/auth'), max_length=50, unique=True, verbose_name='identifier')), ], options={ 'verbose_name': 'API domain', 'verbose_name_plural': 'API domains', }, ), migrations.CreateModel( name='ApiScope', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('identifier', models.CharField( editable=False, help_text= ('The scope identifier as known by the API application ' '(i.e. the Resource Server). Generated automatically ' 'from the API identifier and the scope specifier.'), max_length=150, unique=True, verbose_name='identifier')), ('specifier', models.CharField( blank=True, help_text=( 'If there is a need for multiple scopes per API, ' 'this can specify what kind of scope this is about, ' 'e.g. "readonly". For general API scope just leave ' 'this empty.'), max_length=30, validators=[ django.core.validators.RegexValidator( '^[a-z0-9]*$', message=('May contain only lower case letters ' 'and digits.')) ], verbose_name='specifier')), ('allowed_apps', models.ManyToManyField(help_text=( 'Select client applications which are allowed to ' 'get access to this API scope.'), related_name='granted_api_scopes', to='oidc_provider.Client', verbose_name='allowed applications')), ('api', models.ForeignKey(help_text='The API that this scope is for.', on_delete=django.db.models.deletion.CASCADE, related_name='scopes', to='oidc_apis.Api', verbose_name='API')), ], options={ 'verbose_name': 'API scope', 'verbose_name_plural': 'API scopes', }, bases=(AutoFilledIdentifier, ImmutableFields, parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='ApiScopeTranslation', 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=200, verbose_name='name')), ('description', models.CharField(max_length=1000, verbose_name='description')), ('master', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='oidc_apis.ApiScope', verbose_name='API scope')), ], options={ 'verbose_name': 'API scope translation', 'verbose_name_plural': 'API scope translations', }, ), migrations.AddField( model_name='api', name='domain', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='oidc_apis.ApiDomain', verbose_name='domain'), ), migrations.AddField( model_name='api', name='oidc_client', field=models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, related_name='+', to='oidc_provider.Client', verbose_name='OIDC client'), ), migrations.AlterUniqueTogether( name='apiscopetranslation', unique_together=set([('language_code', 'master')]), ), migrations.AlterUniqueTogether( name='apiscope', unique_together=set([('api', 'specifier')]), ), migrations.AlterUniqueTogether( name='api', unique_together=set([('domain', 'name')]), ), ]
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): 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): 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): replaces = [ ('carousel', '0001_initial'), ('carousel', '0002_alter_names'), ] dependencies = [ ('filer', '0002_auto_20150606_2003'), ('E-Commerce_simple_cms', '0001_initial'), ('E-Commerce', '0001_squashed_0039_alter_names'), ] operations = [ migrations.CreateModel( name='Carousel', fields=[ ('id', models.AutoField( serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('name', models.CharField( max_length=50, verbose_name='name', help_text='Name is only used to configure carousels.')), ('animation', enumfields.fields.EnumIntegerField( default=0, verbose_name='animation', help_text='Animation type for cycling slides.', enum=E-Commerce.front.apps.carousel.models.CarouselMode)), ('interval', models.IntegerField( default=5, verbose_name='interval', help_text='Slide interval in seconds.')), ('pause_on_hover', models.BooleanField( default=True, verbose_name='pause on hover', help_text=( 'Pauses the cycling of the carousel on mouse over.'))), ('is_arrows_visible', models.BooleanField( default=True, verbose_name='show navigation arrows')), ('use_dot_navigation', models.BooleanField( default=True, verbose_name='show navigation dots')), ('image_width', models.IntegerField( default=1200, verbose_name='image width', help_text='Slide images will be cropped to this width.')), ('image_height', models.IntegerField( default=600, verbose_name='image height', help_text='Slide images will be cropped to this height.')), ], options={ 'verbose_name_plural': 'Carousels', 'verbose_name': 'Carousel', }), migrations.CreateModel( name='Slide', fields=[ ('id', models.AutoField( serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('name', models.CharField( null=True, max_length=50, verbose_name='name', help_text='Name is only used to configure slides.', blank=True)), ('ordering', models.IntegerField( null=True, default=0, verbose_name='ordering', blank=True)), ('target', enumfields.fields.EnumIntegerField( default=0, verbose_name='link target', enum=E-Commerce.front.apps.carousel.models.LinkTargetType)), ('available_from', models.DateTimeField( null=True, verbose_name='available from', blank=True)), ('available_to', models.DateTimeField( null=True, verbose_name='available to', blank=True)), ('carousel', models.ForeignKey( related_name='slides', to='carousel.Carousel')), ('category_link', models.ForeignKey( null=True, verbose_name='category link', related_name='+', to='E-Commerce.Category', blank=True)), ('cms_page_link', models.ForeignKey( null=True, verbose_name='cms page link', related_name='+', to='E-Commerce_simple_cms.Page', blank=True)), ('product_link', models.ForeignKey( null=True, verbose_name='product link', related_name='+', to='E-Commerce.Product', blank=True)), ], options={ 'verbose_name_plural': 'Slides', 'verbose_name': 'Slide', 'ordering': ('ordering', 'id'), }, bases=(parler.models.TranslatableModelMixin, models.Model)), migrations.CreateModel( name='SlideTranslation', fields=[ ('id', models.AutoField( serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), ('language_code', models.CharField( max_length=15, verbose_name='Language', db_index=True)), ('caption', models.CharField( null=True, max_length=80, verbose_name='caption', blank=True)), ('caption_text', models.TextField( null=True, verbose_name='caption text', help_text=( 'When displayed in banner box mode, ' 'caption text is shown as a tooltip'), blank=True)), ('external_link', models.CharField( null=True, max_length=160, verbose_name='external link', blank=True)), ('image', filer.fields.image.FilerImageField( null=True, verbose_name='image', related_name='+', on_delete=django.db.models.deletion.PROTECT, to='filer.Image', blank=True)), ('master', models.ForeignKey( editable=False, null=True, related_name='translations', to='carousel.Slide')), ], options={ 'db_tablespace': '', 'verbose_name': 'Slide Translation', 'managed': True, 'default_permissions': (), 'db_table': 'carousel_slide_translation', }), migrations.AlterUniqueTogether( name='slidetranslation', unique_together=set([('language_code', 'master')]), ), migrations.AlterField( model_name='carousel', name='is_arrows_visible', field=models.BooleanField( default=True, verbose_name='show navigation arrows', help_text=( 'When checked, navigational arrows are shown on the ' 'carousel allowing for customers to go back and forward.') )), migrations.AlterField( model_name='carousel', name='name', field=models.CharField( max_length=50, verbose_name='name', help_text='The carousel name use for carousel configuration.'), ), migrations.AlterField( model_name='carousel', name='pause_on_hover', field=models.BooleanField( default=True, verbose_name='pause on hover', help_text=( 'When checked, the carousel cycling pauses ' 'on mouse over.'))), migrations.AlterField( model_name='carousel', name='use_dot_navigation', field=models.BooleanField( default=True, verbose_name='show navigation dots', help_text=( 'When checked, navigational indicator dots are shown.') )), migrations.AlterField( model_name='slide', name='available_from', field=models.DateTimeField( null=True, verbose_name='available from', help_text=( 'Set the date and time from which this slide should be ' 'visible in the carousel. This is useful to advertise ' 'sales campaigns or other time-sensitive marketing.'), blank=True)), migrations.AlterField( model_name='slide', name='available_to', field=models.DateTimeField( null=True, verbose_name='available to', help_text=( 'Set the date and time from which this slide should be ' 'visible in the carousel. This is useful to advertise ' 'sales campaigns or other time-sensitive marketing.'), blank=True)), migrations.AlterField( model_name='slide', name='category_link', field=models.ForeignKey( null=True, verbose_name='category link', related_name='+', help_text=( 'Set the product category page that should be shown ' 'when this slide is clicked, if any.'), to='E-Commerce.Category', blank=True)), migrations.AlterField( model_name='slide', name='cms_page_link', field=models.ForeignKey( null=True, verbose_name='cms page link', related_name='+', help_text=( 'Set the web page that should be shown when the slide ' 'is clicked, if any.'), to='E-Commerce_simple_cms.Page', blank=True)), migrations.AlterField( model_name='slide', name='ordering', field=models.IntegerField( null=True, default=0, verbose_name='ordering', help_text=( 'Set the numeric order in which this slide should ' 'appear relative to other slides in this carousel.'), blank=True)), migrations.AlterField( model_name='slide', name='product_link', field=models.ForeignKey( null=True, verbose_name='product link', related_name='+', help_text=( 'Set the product detail page that should be shown ' 'when this slide is clicked, if any.'), to='E-Commerce.Product', blank=True)), migrations.AlterField( model_name='slide', name='target', field=enumfields.fields.EnumIntegerField( default=0, verbose_name='link target', help_text=( 'Set this to current if clicking on this slide ' 'should open a new browser tab.'), enum=E-Commerce.front.apps.carousel.models.LinkTargetType)), migrations.AlterField( model_name='slidetranslation', name='caption', field=models.CharField( null=True, max_length=80, verbose_name='caption', help_text=( 'Text that describes the image. Used for search ' 'engine purposes.'), blank=True)), migrations.AlterField( model_name='slidetranslation', name='external_link', field=models.CharField( null=True, max_length=160, verbose_name='external link', help_text=( 'Set the external site that should be shown when ' 'this slide is clicked, if any.'), blank=True)), migrations.AlterField( model_name='slidetranslation', name='image', field=filer.fields.image.FilerImageField( null=True, verbose_name='image', related_name='+', help_text='The slide image to show.', on_delete=django.db.models.deletion.PROTECT, to='filer.Image', blank=True)), ]
class Migration(migrations.Migration): replaces = [ ('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): dependencies = [ ('wshop', '0027_modify_shop_fields'), ] operations = [ migrations.RenameField( model_name='salesunittranslation', old_name='short_name', new_name='symbol', ), migrations.CreateModel( name='DisplayUnit', fields=[ ('id', models.AutoField( auto_created=True, primary_key=True, serialize=False)), ('internal_unit', models.ForeignKey( to='wshop.SalesUnit', related_name='display_units')), ('ratio', wshop.core.fields.QuantityField( default=1, max_digits=36, decimal_places=9, validators=[ wshop.core.models._units.validate_positive_not_zero])), ('decimals', models.PositiveSmallIntegerField(default=0)), ('comparison_value', wshop.core.fields.QuantityField( default=1, max_digits=36, decimal_places=9, validators=[ wshop.core.models._units.validate_positive_not_zero])), ('allow_bare_number', models.BooleanField(default=False)), ('default', models.BooleanField(default=False)), ], options={ 'verbose_name_plural': 'display units', 'verbose_name': 'display unit', }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name='DisplayUnitTranslation', fields=[ ('id', models.AutoField( auto_created=True, primary_key=True, serialize=False)), ('language_code', models.CharField(max_length=15, db_index=True)), ('name', models.CharField(max_length=150)), ('symbol', models.CharField(max_length=50)), ('master', models.ForeignKey( to='wshop.DisplayUnit', editable=False, related_name='translations', null=True)), ], options={ 'db_table': 'wshop_displayunit_translation', 'default_permissions': (), 'db_tablespace': '', 'managed': True, 'verbose_name': 'display unit Translation', }, ), migrations.AlterUniqueTogether( name='displayunittranslation', unique_together=set([('language_code', 'master')]), ), migrations.AddField( model_name='shopproduct', name='display_unit', field=models.ForeignKey( to='wshop.DisplayUnit', blank=True, null=True), ), ]
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 = [ ('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 = [ ('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.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 = [("api", "0049_add_all_other_translations")] operations = [ migrations.CreateModel( name="PlanTemplate", fields=[( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), )], options={"abstract": False}, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name="PlanTemplateTranslation", 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"), ), ( "preflight_message", sfdo_template_helpers.fields.MarkdownField( blank=True, property_suffix="_markdown"), ), ( "post_install_message", sfdo_template_helpers.fields.MarkdownField( blank=True, property_suffix="_markdown"), ), ( "master", models.ForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="translations", to="api.PlanTemplate", ), ), ], options={ "verbose_name": "plan template Translation", "db_table": "api_plantemplate_translation", "db_tablespace": "", "managed": True, "default_permissions": (), }, ), migrations.RenameField( model_name="plantranslation", old_name="post_install_message", new_name="post_install_message_additional", ), migrations.RenameField( model_name="plantranslation", old_name="preflight_message", new_name="preflight_message_additional", ), migrations.AddField( model_name="plan", name="plan_template", field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.PlanTemplate", ), ), migrations.AlterUniqueTogether( name="plantemplatetranslation", unique_together={("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): dependencies = [ ("publicbody", "0038_foilaw_scale_of_fees"), migrations.swappable_dependency(settings.FILINGCABINET_DOCUMENT_MODEL), ("froide_legalaction", "0012_remove_moved_lawsuit_fields"), ] operations = [ migrations.CreateModel( name="LegalDecisionTag", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ], options={ "abstract": False, }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name="LegalDecisionType", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ], options={ "verbose_name": "Legal Decision Type", "verbose_name_plural": "Legal Decision Types", }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name="LegalDecision", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("date", models.DateField(blank=True, null=True)), ("outcome", models.CharField(max_length=500, blank=True)), ("reference", models.CharField(max_length=200)), ("paragraphs", models.JSONField(default=list, blank=True, null=True)), ("source_data", models.JSONField(blank=True, null=True)), ( "foi_court", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="publicbody.publicbody", ), ), ( "foi_document", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.FILINGCABINET_DOCUMENT_MODEL, ), ), ( "foi_law", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="publicbody.foilaw", ), ), ( "foi_lawsuit", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="froide_legalaction.lawsuit", ), ), ( "tags", models.ManyToManyField( blank=True, to="froide_legalaction.LegalDecisionTag" ), ), ( "type", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="froide_legalaction.legaldecisiontype", ), ), ], options={ "abstract": False, }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name="LegalDecisionTypeTranslation", 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=255, verbose_name="title")), ( "slug", models.SlugField( max_length=255, verbose_name="slug", ), ), ( "master", parler.fields.TranslationsForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="translations", to="froide_legalaction.legaldecisiontype", ), ), ], options={ "verbose_name": "Legal Decision Type Translation", "db_table": "froide_legalaction_legaldecisiontype_translation", "db_tablespace": "", "managed": True, "default_permissions": (), "unique_together": {("language_code", "master")}, }, bases=(parler.models.TranslatedFieldsModelMixin, models.Model), ), migrations.CreateModel( name="LegalDecisionTranslation", 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" ), ), ("abstract", models.TextField(blank=True)), ("fulltext", models.TextField(blank=True)), ("court", models.CharField(blank=True, max_length=500)), ("law", models.CharField(blank=True, max_length=500)), ( "master", parler.fields.TranslationsForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="translations", to="froide_legalaction.legaldecision", ), ), ], options={ "verbose_name": "legal decision Translation", "db_table": "froide_legalaction_legaldecision_translation", "db_tablespace": "", "managed": True, "default_permissions": (), "unique_together": {("language_code", "master")}, }, bases=(parler.models.TranslatedFieldsModelMixin, models.Model), ), migrations.CreateModel( name="LegalDecisionTagTranslation", 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="name")), ("slug", models.SlugField(max_length=100, verbose_name="slug")), ( "master", parler.fields.TranslationsForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="translations", to="froide_legalaction.legaldecisiontag", ), ), ], options={ "verbose_name": "legal decision tag Translation", "db_table": "froide_legalaction_legaldecisiontag_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 = [] operations = [ migrations.CreateModel( name="NotificationTemplate", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "type", models.CharField(max_length=50, unique=True, verbose_name="type"), ), ], options={ "verbose_name": "notification", "verbose_name_plural": "notifications", }, bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.CreateModel( name="NotificationTemplateTranslation", 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" ), ), ("subject", models.CharField(max_length=255, verbose_name="subject")), ( "body_html", models.TextField(blank=True, verbose_name="body, HTML version"), ), ( "body_text", models.TextField( blank=True, help_text="If left blank, the HTML version without HTML tags will be used.", verbose_name="body, plain text version", ), ), ( "master", models.ForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="translations", to="django_ilmoitin.NotificationTemplate", ), ), ], options={ "verbose_name": "notification Translation", "db_table": "django_ilmoitin_notificationtemplate_translation", "db_tablespace": "", "managed": True, "default_permissions": (), }, ), migrations.AlterUniqueTogether( name="notificationtemplatetranslation", unique_together={("language_code", "master")}, ), ]
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): 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), ), ]