fixed assemblage tags

This commit is contained in:
Anatoly 2019-11-14 10:23:08 +03:00
parent e49d62de5d
commit 92ee7537a3
4 changed files with 34 additions and 50 deletions

View File

@ -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}"))

View File

@ -1,8 +1,7 @@
from pprint import pprint from pprint import pprint
from transfer import models as transfer_models from transfer import models as transfer_models
from transfer.serializers.tag import AssemblageTagSerializer, \ from transfer.serializers.tag import AssemblageTagSerializer
CepagesTagCategorySerializer
def transfer_assemblage(): def transfer_assemblage():
@ -13,24 +12,10 @@ def transfer_assemblage():
if serialized_data.is_valid(): if serialized_data.is_valid():
serialized_data.save() serialized_data.save()
else: else:
pprint(f"transfer_wine_color errors: {serialized_data.errors}") pprint(f"transfer_assemblage 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}")
data_types = { data_types = {
"cepage": [
transfer_cepages
],
"assemblage": [ "assemblage": [
transfer_assemblage, transfer_assemblage,
] ]

View File

@ -35,7 +35,6 @@ class Command(BaseCommand):
'product_note', 'product_note',
'souvenir', 'souvenir',
'establishment_note', 'establishment_note',
'cepage',
'assemblage', 'assemblage',
] ]

View File

@ -1,13 +1,17 @@
from transfer.mixins import TransferSerializerMixin from django.conf import settings
from django.utils.text import slugify from django.utils.text import slugify
from rest_framework import serializers 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 transfer.models import Cepages
from django.conf import settings
class AssemblageTagSerializer(TransferSerializerMixin): class AssemblageTagSerializer(TransferSerializerMixin):
CATEGORY_LABEL = 'Grape variety'
CATEGORY_INDEX_NAME = slugify(CATEGORY_LABEL)
percent = serializers.FloatField() percent = serializers.FloatField()
cepage_id = serializers.PrimaryKeyRelatedField( cepage_id = serializers.PrimaryKeyRelatedField(
queryset=Cepages.objects.all()) queryset=Cepages.objects.all())
@ -20,12 +24,13 @@ class AssemblageTagSerializer(TransferSerializerMixin):
) )
def validate(self, attrs): def validate(self, attrs):
name = attrs.pop('percent') percent = attrs.pop('percent')
cepage = attrs.pop('cepage_id') cepage = attrs.pop('cepage_id')
value = self.get_tag_value(cepage, percent)
attrs['label'] = {settings.FALLBACK_LOCALE: name} attrs['label'] = {settings.FALLBACK_LOCALE: value}
attrs['value'] = name attrs['value'] = slugify(cepage.name)
attrs['category'] = self.get_tag_category(cepage) attrs['category'] = self.tag_category
return attrs return attrs
def create(self, validated_data): def create(self, validated_data):
@ -34,28 +39,6 @@ class AssemblageTagSerializer(TransferSerializerMixin):
if not qs.exists() and category: if not qs.exists() and category:
return super().create(validated_data) return super().create(validated_data)
def get_tag_category(self, cepage): def get_tag_value(self, cepage, percent):
cepage_name = cepage.name if isinstance(cepage, Cepages) else cepage if cepage and percent:
qs = TagCategory.objects.filter(index_name=slugify(cepage_name)) return f'{cepage.name} - {percent}%'
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