From 92ee7537a389a91a3042201a9eea506504a64a82 Mon Sep 17 00:00:00 2001 From: Anatoly Date: Thu, 14 Nov 2019 10:23:08 +0300 Subject: [PATCH] fixed assemblage tags --- .../commands/fix_cepage_tag_categories.py | 17 +++++++ apps/tag/transfer_data.py | 19 +------- apps/transfer/management/commands/transfer.py | 1 - apps/transfer/serializers/tag.py | 47 ++++++------------- 4 files changed, 34 insertions(+), 50 deletions(-) create mode 100644 apps/product/management/commands/fix_cepage_tag_categories.py diff --git a/apps/product/management/commands/fix_cepage_tag_categories.py b/apps/product/management/commands/fix_cepage_tag_categories.py new file mode 100644 index 00000000..a8217e46 --- /dev/null +++ b/apps/product/management/commands/fix_cepage_tag_categories.py @@ -0,0 +1,17 @@ +from django.core.management.base import BaseCommand +from django.utils.text import slugify + +from tag.models import TagCategory +from transfer import models as transfer_models + + +class Command(BaseCommand): + help = 'Fix wine color tag' + + def handle(self, *args, **kwarg): + queryset = transfer_models.Cepages.objects.all() + cepage_list = [slugify(i) for i in queryset.values_list('name', flat=True)] + tag_categories = TagCategory.objects.filter(index_name__in=cepage_list) + deleted_tag_categories = tag_categories.count() + tag_categories.delete() + self.stdout.write(self.style.WARNING(f"Deleted tag categories: {deleted_tag_categories}")) diff --git a/apps/tag/transfer_data.py b/apps/tag/transfer_data.py index b94fd0a0..725f164c 100644 --- a/apps/tag/transfer_data.py +++ b/apps/tag/transfer_data.py @@ -1,8 +1,7 @@ from pprint import pprint from transfer import models as transfer_models -from transfer.serializers.tag import AssemblageTagSerializer, \ - CepagesTagCategorySerializer +from transfer.serializers.tag import AssemblageTagSerializer def transfer_assemblage(): @@ -13,24 +12,10 @@ def transfer_assemblage(): if serialized_data.is_valid(): serialized_data.save() else: - pprint(f"transfer_wine_color errors: {serialized_data.errors}") - - -def transfer_cepages(): - queryset = transfer_models.Cepages.objects.all() - serialized_data = CepagesTagCategorySerializer( - data=list(queryset.values()), - many=True) - if serialized_data.is_valid(): - serialized_data.save() - else: - pprint(f"transfer_cepages errors: {serialized_data.errors}") + pprint(f"transfer_assemblage errors: {serialized_data.errors}") data_types = { - "cepage": [ - transfer_cepages - ], "assemblage": [ transfer_assemblage, ] diff --git a/apps/transfer/management/commands/transfer.py b/apps/transfer/management/commands/transfer.py index 9159a20c..fc01f655 100644 --- a/apps/transfer/management/commands/transfer.py +++ b/apps/transfer/management/commands/transfer.py @@ -35,7 +35,6 @@ class Command(BaseCommand): 'product_note', 'souvenir', 'establishment_note', - 'cepage', 'assemblage', ] diff --git a/apps/transfer/serializers/tag.py b/apps/transfer/serializers/tag.py index db4a882c..56bae02f 100644 --- a/apps/transfer/serializers/tag.py +++ b/apps/transfer/serializers/tag.py @@ -1,13 +1,17 @@ -from transfer.mixins import TransferSerializerMixin +from django.conf import settings from django.utils.text import slugify from rest_framework import serializers -from tag.models import Tag, TagCategory + +from tag.models import Tag +from transfer.mixins import TransferSerializerMixin from transfer.models import Cepages -from django.conf import settings class AssemblageTagSerializer(TransferSerializerMixin): + CATEGORY_LABEL = 'Grape variety' + CATEGORY_INDEX_NAME = slugify(CATEGORY_LABEL) + percent = serializers.FloatField() cepage_id = serializers.PrimaryKeyRelatedField( queryset=Cepages.objects.all()) @@ -20,12 +24,13 @@ class AssemblageTagSerializer(TransferSerializerMixin): ) def validate(self, attrs): - name = attrs.pop('percent') + percent = attrs.pop('percent') cepage = attrs.pop('cepage_id') + value = self.get_tag_value(cepage, percent) - attrs['label'] = {settings.FALLBACK_LOCALE: name} - attrs['value'] = name - attrs['category'] = self.get_tag_category(cepage) + attrs['label'] = {settings.FALLBACK_LOCALE: value} + attrs['value'] = slugify(cepage.name) + attrs['category'] = self.tag_category return attrs def create(self, validated_data): @@ -34,28 +39,6 @@ class AssemblageTagSerializer(TransferSerializerMixin): if not qs.exists() and category: return super().create(validated_data) - def get_tag_category(self, cepage): - cepage_name = cepage.name if isinstance(cepage, Cepages) else cepage - qs = TagCategory.objects.filter(index_name=slugify(cepage_name)) - if qs.exists(): - return qs.first() - - -class CepagesTagCategorySerializer(TransferSerializerMixin): - - name = serializers.CharField() - - class Meta: - model = TagCategory - fields = ( - 'name', - ) - - def validate(self, attrs): - name = attrs.pop('name') - - attrs['label'] = {settings.FALLBACK_LOCALE: name} - attrs['public'] = True - attrs['index_name'] = slugify(name) - attrs['value_type'] = TagCategory.PERCENTAGE - return attrs + def get_tag_value(self, cepage, percent): + if cepage and percent: + return f'{cepage.name} - {percent}%'