import logging

from django.core.management.base import BaseCommand
from django.conf import settings

from products.models import CategoryTag
from products.models import Product


class Command(BaseCommand):

    help = 'Load taxonomy terms into Product.tags'

    def handle(self, *args, **kwargs):

        print(self.help)
        print("Deleting existing instances")
        CategoryTag.objects.all().delete()

        file_path = settings.BASE_DIR + '/datasets/' + settings.TAXONOMY_FILE
        counter = 0
        with open(file_path, 'rt') as data_file:
            print(f"Reading from {settings.TAXONOMY_FILE}")
            for line in data_file.readlines():
                try:
                    tag = Product.category.tag_model.objects.create(name=line, official=True)
                    counter += 1
                    print('.', end='')
                    logging.debug(f"{tag} created from {line}")
                except Exception as e:
                    logging.error(f"{type(e)} while creating tags from {settings.TAXONOMY_FILE}")
            print(f"\nAdded {counter} Tag objects to Product.category")
        print('Shutting down\n')
