Fix category, poduct-tags

This commit is contained in:
Виктор Гладких 2019-11-19 12:17:05 +03:00
parent 267544a0b1
commit c9a0fb6656

View File

@ -26,15 +26,17 @@ class Command(BaseCommand):
def add_category_tag(self): def add_category_tag(self):
objects = [] objects = []
for c in tqdm(self.category_sql(), desc='Add category tags'): for c in tqdm(self.category_sql(), desc='Add category tags'):
categories = TagCategory.objects.filter(index_name=c.category categories = TagCategory.objects.filter(index_name=c.category)
)
if not categories.exists(): if not categories.exists():
objects.append( objects.append(
TagCategory(label={"en-GB": c.category}, TagCategory(label={"en-GB": c.category},
value_type=c.value_type, value_type=c.value_type,
index_name=c.category index_name=c.category,
public=True
) )
) )
else:
categories.update(public=True)
TagCategory.objects.bulk_create(objects) TagCategory.objects.bulk_create(objects)
self.stdout.write(self.style.WARNING(f'Add or get tag category objects.')) self.stdout.write(self.style.WARNING(f'Add or get tag category objects.'))
@ -64,22 +66,24 @@ class Command(BaseCommand):
if not tags.exists(): if not tags.exists():
objects.append(Tag(label={"en-GB": t.tag_value}, objects.append(Tag(label={"en-GB": t.tag_value},
category=category, category=category,
value=t.tag_value, value=t.tag_value)
old_id_meta_product=t.old_id )
))
else:
qs = tags.filter(old_id_meta_product__isnull=True)\
.update(old_id_meta_product=t.old_id)
Tag.objects.bulk_create(objects) Tag.objects.bulk_create(objects)
self.stdout.write(self.style.WARNING(f'Add or get tag objects.')) self.stdout.write(self.style.WARNING(f'Add or get tag objects.'))
def remove_tags_product(self):
print('Begin clear tags product')
products = Product.objects.all()
products.tags.clear()
print('End clear tags product')
def product_sql(self): def product_sql(self):
with connections['legacy'].cursor() as cursor: with connections['legacy'].cursor() as cursor:
cursor.execute(''' cursor.execute('''
select select
DISTINCT DISTINCT
m.id as old_id_tag,
m.product_id, m.product_id,
lower(trim(CONVERT(m.value USING utf8))) as tag_value, lower(trim(CONVERT(m.value USING utf8))) as tag_value,
trim(CONVERT(v.key_name USING utf8)) as tag_category trim(CONVERT(v.key_name USING utf8)) as tag_category
@ -90,7 +94,12 @@ class Command(BaseCommand):
def add_product_tag(self): def add_product_tag(self):
for t in tqdm(self.product_sql(), desc='Add product tag'): for t in tqdm(self.product_sql(), desc='Add product tag'):
tags = Tag.objects.filter(old_id_meta_product=t.old_id_tag) category = TagCategory.objects.get(index_name=t.tag_category)
tags = Tag.objects.filter(
category=category,
value=t.tag_value
)
product = Product.objects.get(old_id=t.product_id) product = Product.objects.get(old_id=t.product_id)
for tag in tags: for tag in tags:
if product not in tag.products.all(): if product not in tag.products.all():
@ -111,6 +120,7 @@ class Command(BaseCommand):
tag.save() tag.save()
def handle(self, *args, **kwargs): def handle(self, *args, **kwargs):
self.remove_tags_product()
self.add_category_tag() self.add_category_tag()
self.add_tag() self.add_tag()
self.check_tag() self.check_tag()