fix estab tags

This commit is contained in:
Dmitriy Kuzmenko 2019-10-30 19:51:33 +03:00
parent 887bc92b85
commit aa2759d7e0

View File

@ -10,53 +10,52 @@ class Command(BaseCommand):
def handle(self, *args, **kwargs): def handle(self, *args, **kwargs):
categories = legacy.KeyValueMetadata.objects.all()
existing_establishment = Establishment.objects.filter(old_id__isnull=False) existing_establishment = Establishment.objects.filter(old_id__isnull=False)
for category in categories: ESTABLISHMENT = 1
ESTABLISHMENT = 1 SHOP = 2
SHOP = 2 RESTAURANT = 3
RESTAURANT = 3 WINEYARD = 4
WINEYARD = 4
MAPPER = { MAPPER = {
RESTAURANT: EstablishmentType.RESTAURANT, RESTAURANT: EstablishmentType.RESTAURANT,
WINEYARD: EstablishmentType.PRODUCER, WINEYARD: EstablishmentType.PRODUCER,
} }
mapper_values_meta = legacy.KeyValueMetadatumKeyValueMetadatumEstablishments.objects.all() mapper_values_meta = legacy.KeyValueMetadatumKeyValueMetadatumEstablishments.objects.all()
for key, value in MAPPER.items(): for key, value in MAPPER.items():
values_meta_id_list = mapper_values_meta.filter( values_meta_id_list = mapper_values_meta.filter(
key_value_metadatum_establishment_id=key key_value_metadatum_establishment_id=key
).values_list('key_value_metadatum_id') ).values_list('key_value_metadatum_id')
est_type, _ = EstablishmentType.objects.get_or_create(index_name=value) est_type, _ = EstablishmentType.objects.get_or_create(index_name=value)
key_value_metadata = legacy.KeyValueMetadata.objects.filter(id__in=values_meta_id_list) key_value_metadata = legacy.KeyValueMetadata.objects.filter(
id__in=values_meta_id_list)
# create TagCategory # create TagCategory
for key_value in key_value_metadata: for key_value in key_value_metadata:
tag_category, created = TagCategory.objects.get_or_create( tag_category, created = TagCategory.objects.get_or_create(
index_name=key_value.key_name, index_name=key_value.key_name,
)
if created:
tag_category.label = {'en-GB': key_value.key_name},
tag_category.value_type = key_value.value_type
tag_category.save()
est_type.tag_categories.add(
tag_category
) )
if created: # create Tag
tag_category.label = {'en-GB': key_value.key_name}, for tag in key_value.metadata_set.filter(
tag_category.value_type = key_value.value_type establishment__id__in=list(existing_establishment.values_list('old_id', flat=True))):
tag_category.save()
est_type.tag_categories.add(
tag_category
)
# create Tag new_tag, _ = Tag.objects.get_or_create(
for tag in key_value.metadata_set.filter( label={'en-GB': tag.value},
establishment__id__in=list(existing_establishment.values_list('old_id', flat=True))): value=tag.value,
category=tag_category,
new_tag, _ = Tag.objects.get_or_create( )
label={'en-GB': tag.value}, est = existing_establishment.get(old_id=tag.establishment_id)
value=tag.value, est.tags.add(new_tag)
category=tag_category, est.save()
)
est = existing_establishment.get(old_id=tag.establishment_id)
est.tags.add(new_tag)
est.save()