diff --git a/apps/location/migrations/0012_data_migrate.py b/apps/location/migrations/0012_data_migrate.py index b61c43df..a88723a1 100644 --- a/apps/location/migrations/0012_data_migrate.py +++ b/apps/location/migrations/0012_data_migrate.py @@ -21,5 +21,5 @@ class Migration(migrations.Migration): ] operations = [ - migrations.RunPython(load_data_from_sql, revert_data), + # migrations.RunPython(load_data_from_sql, revert_data), ] diff --git a/apps/location/migrations/0021_auto_20191101_1323.py b/apps/location/migrations/0021_auto_20191101_1323.py new file mode 100644 index 00000000..5bc751f0 --- /dev/null +++ b/apps/location/migrations/0021_auto_20191101_1323.py @@ -0,0 +1,52 @@ +# Generated by Django 2.2.4 on 2019-11-01 13:23 + +import django.contrib.gis.db.models.fields +from django.db import migrations, models +import utils.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('location', '0020_merge_20191030_1714'), + ] + + operations = [ + migrations.CreateModel( + name='WineSubRegion', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='name')), + ], + options={ + 'verbose_name': 'wine region', + 'verbose_name_plural': 'wine regions', + }, + ), + migrations.CreateModel( + name='WineVillage', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='name')), + ('description', utils.models.TJSONField(help_text='{"en-GB":"some text"}', verbose_name='description')), + ], + options={ + 'verbose_name': 'wine village', + 'verbose_name_plural': 'wine villages', + }, + ), + migrations.RemoveField( + model_name='wineappellation', + name='wine_region', + ), + migrations.AddField( + model_name='wineregion', + name='coordinates', + field=django.contrib.gis.db.models.fields.PointField(blank=True, default=None, null=True, srid=4326, verbose_name='Coordinates'), + ), + migrations.AlterField( + model_name='wineregion', + name='name', + field=models.CharField(max_length=255, verbose_name='name'), + ), + ] diff --git a/apps/location/migrations/0022_auto_20191101_1323.py b/apps/location/migrations/0022_auto_20191101_1323.py new file mode 100644 index 00000000..4d02b140 --- /dev/null +++ b/apps/location/migrations/0022_auto_20191101_1323.py @@ -0,0 +1,33 @@ +# Generated by Django 2.2.4 on 2019-11-01 13:23 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('product', '0003_auto_20191101_1323'), + ('location', '0021_auto_20191101_1323'), + ] + + operations = [ + migrations.DeleteModel( + name='WineAppellation', + ), + migrations.AddField( + model_name='winevillage', + name='wine_region', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='location.WineRegion', verbose_name='wine region'), + ), + migrations.AddField( + model_name='winevillage', + name='wine_sub_region', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='location.WineSubRegion', verbose_name='wine sub region'), + ), + migrations.AddField( + model_name='winesubregion', + name='country', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='location.Country', verbose_name='country'), + ), + ] diff --git a/apps/product/migrations/0003_auto_20191101_1323.py b/apps/product/migrations/0003_auto_20191101_1323.py new file mode 100644 index 00000000..fa07c28c --- /dev/null +++ b/apps/product/migrations/0003_auto_20191101_1323.py @@ -0,0 +1,106 @@ +# Generated by Django 2.2.4 on 2019-11-01 13:23 + +import django.contrib.gis.db.models.fields +from django.db import migrations, models +import django.db.models.deletion +import utils.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('location', '0021_auto_20191101_1323'), + ('product', '0002_product_slug'), + ] + + operations = [ + migrations.CreateModel( + name='Characteristic', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', utils.models.TJSONField(blank=True, help_text='{"en-GB":"some text"}', null=True, verbose_name='name')), + ('value', models.CharField(blank=True, max_length=255, null=True, verbose_name='value')), + ('priority', models.IntegerField(default=None, null=True, unique=True)), + ], + options={ + 'verbose_name': 'characteristic', + 'verbose_name_plural': 'characteristics', + }, + bases=(utils.models.TranslatedFieldsMixin, models.Model), + ), + migrations.CreateModel( + name='Unit', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='name')), + ('value', models.CharField(max_length=255, verbose_name='value')), + ], + options={ + 'verbose_name': 'unit', + 'verbose_name_plural': 'units', + }, + ), + migrations.CreateModel( + name='WineStandard', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='name')), + ('standard_type', models.CharField(choices=[('Appellation', 'Appellation'), ('Classification', 'Classification'), ('WineQuality', 'Wine quality'), ('YardClassification', 'Yard classification')], max_length=30, verbose_name='standard type')), + ('coordinates', django.contrib.gis.db.models.fields.PointField(blank=True, default=None, null=True, srid=4326, verbose_name='Coordinates')), + ], + options={ + 'verbose_name': 'wine standard', + 'verbose_name_plural': 'wine standards', + }, + ), + migrations.RemoveField( + model_name='product', + name='wine_appellation', + ), + migrations.AddField( + model_name='product', + name='wine_village', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='location.WineVillage', verbose_name='wine appellation'), + ), + migrations.RemoveField( + model_name='product', + name='characteristics', + ), + migrations.AlterField( + model_name='product', + name='establishment', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='products', to='establishment.Establishment', verbose_name='establishment'), + ), + migrations.AlterField( + model_name='product', + name='name', + field=models.CharField(default=None, max_length=255, null=True, verbose_name='name'), + ), + migrations.AlterField( + model_name='productsubtype', + name='index_name', + field=models.CharField(choices=[('rum', 'Rum'), ('other', 'Other'), ('extra brut', 'extra brut'), ('brut', 'brut'), ('brut nature', 'brut nature'), ('demi-sec', 'demi-sec'), ('Extra Dry', 'Extra Dry'), ('dosage zero', 'dosage zero'), ('sec', 'sec'), ('doux', 'doux'), ('moelleux', 'moelleux')], db_index=True, max_length=50, unique=True, verbose_name='Index name'), + ), + migrations.CreateModel( + name='WineClassification', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='name')), + ('standard', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='product.WineStandard', verbose_name='standard')), + ], + options={ + 'verbose_name': 'wine classification', + 'verbose_name_plural': 'wine classifications', + }, + ), + migrations.AddField( + model_name='product', + name='wine_standard', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='product.WineStandard', verbose_name='wine standard'), + ), + migrations.AddField( + model_name='product', + name='characteristics', + field=models.ManyToManyField(to='product.Characteristic', verbose_name='characteristics'), + ), + ] diff --git a/apps/product/models.py b/apps/product/models.py index 2ed604dc..d6c35f0f 100644 --- a/apps/product/models.py +++ b/apps/product/models.py @@ -234,9 +234,9 @@ class Characteristic(TranslatedFieldsMixin, models.Model): STR_FIELD_NAME = 'name' - name = TJSONField(_('name'), + name = TJSONField(_('name'), null=True, blank=True, help_text='{"en-GB":"some text"}') - value = models.CharField(max_length=255, + value = models.CharField(max_length=255, null=True, blank=True, verbose_name=_('value')) # unit = models.ForeignKey('Unit', on_delete=models.PROTECT) priority = models.IntegerField(unique=True, null=True, default=None) diff --git a/apps/product/transfer_data.py b/apps/product/transfer_data.py index eb8ac740..e8b95cc6 100644 --- a/apps/product/transfer_data.py +++ b/apps/product/transfer_data.py @@ -1,7 +1,8 @@ from pprint import pprint -from transfer.models import EstablishmentBacklinks +from transfer.models import EstablishmentBacklinks, WineColor from transfer.serializers.partner import PartnerSerializer +from transfer.serializers.product import WineColorSerializer def transfer_partner(): @@ -14,6 +15,17 @@ def transfer_partner(): pprint(f"News serializer errors: {serialized_data.errors}") +def transfer_wine_color(): + queryset = WineColor.objects.all() + serialized_data = WineColorSerializer(data=list(queryset.values()), + many=True) + if serialized_data.is_valid(): + serialized_data.save() + else: + pprint(f"CharacteristicSerializer errors: {serialized_data.errors}") + + data_types = { - "partner": [transfer_partner] + "partner": [transfer_partner], + "wine_color": [transfer_wine_color], } diff --git a/apps/transfer/management/commands/transfer.py b/apps/transfer/management/commands/transfer.py index f3abbfab..5cba2713 100644 --- a/apps/transfer/management/commands/transfer.py +++ b/apps/transfer/management/commands/transfer.py @@ -21,7 +21,8 @@ class Command(BaseCommand): 'overlook', 'tmp', 'menu', - 'location_establishment' + 'location_establishment', + 'wine_color', ] def handle(self, *args, **options): diff --git a/apps/transfer/models.py b/apps/transfer/models.py index 23a060a9..6dc15c13 100644 --- a/apps/transfer/models.py +++ b/apps/transfer/models.py @@ -902,7 +902,6 @@ class WineColor(MigrateMixin): name = models.CharField(max_length=255) order_number = models.IntegerField(null=True, blank=True) - fra_encima_id = models.IntegerField(null=True, blank=True) class Meta: managed = False diff --git a/apps/transfer/serializers/product.py b/apps/transfer/serializers/product.py index f7b2b12d..190396fa 100644 --- a/apps/transfer/serializers/product.py +++ b/apps/transfer/serializers/product.py @@ -2,27 +2,25 @@ from rest_framework import serializers from product.models import Characteristic -class RecipeSerializer(serializers.ModelSerializer): +class WineColorSerializer(serializers.ModelSerializer): + NAME = 'Wine color' + name = serializers.CharField(allow_null=True) + order_number = serializers.IntegerField(allow_null=True) class Meta: model = Characteristic fields = ( - "body", - "title", - "state", - "created_at", - 'locale', + 'name', + 'value', + 'priority', + 'order_number', ) - def validate(self, data): - data["state"] = self.get_state(data) - data["title"] = self.get_title(data) - data["description"] = self.get_description(data) - data.pop("body") - data.pop("locale") - return data - - def create(self, validated_data): - return Recipe.objects.create(**validated_data) + def validate(self, attrs): + attrs['value'] = attrs['name'] + attrs['name'] = {'en-GB': self.NAME} + attrs['priority'] = attrs['order_number'] + attrs.pop('order_number') + return attrs