fixed assemblage tags
This commit is contained in:
parent
e49d62de5d
commit
92ee7537a3
|
|
@ -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}"))
|
||||||
|
|
@ -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,
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,6 @@ class Command(BaseCommand):
|
||||||
'product_note',
|
'product_note',
|
||||||
'souvenir',
|
'souvenir',
|
||||||
'establishment_note',
|
'establishment_note',
|
||||||
'cepage',
|
|
||||||
'assemblage',
|
'assemblage',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user