from django.core.management.base import BaseCommand
from django.db import connections
from establishment.management.commands.add_position import namedtuplefetchall
from main.models import SiteSettings
from location.models import Country
from tqdm import tqdm


class Command(BaseCommand):
    help = '''Add add site settings from old db to new db.
              Run after country migrate!!!'''

    def site_sql(self):
        with connections['legacy'].cursor() as cursor:
            cursor.execute('''
                            select
                                distinct 
                                id, 
                                country_code_2 as code, 
                                pinterest_page_url, 
                                twitter_page_url, 
                                facebook_page_url, 
                                contact_email, 
                                config, 
                                released, 
                                instagram_page_url, 
                                ad_config
                            from sites as s                         
                         ''')
            return namedtuplefetchall(cursor)

    def add_site_settings(self):
        objects=[]
        for s in tqdm(self.site_sql(), desc='Add site settings'):
            country = Country.objects.filter(code=s.code).first()
            sites = SiteSettings.objects.filter(subdomain=s.code)
            if not sites.exists():
                objects.append(
                    SiteSettings(
                        subdomain=s.code,
                        country=country,
                        pinterest_page_url=s.pinterest_page_url,
                        twitter_page_url=s.twitter_page_url,
                        facebook_page_url=s.facebook_page_url,
                        instagram_page_url=s.instagram_page_url,
                        contact_email=s.contact_email,
                        config=s.config,
                        ad_config=s.ad_config,
                        old_id=s.id
                    )
                )
        SiteSettings.objects.bulk_create(objects)
        self.stdout.write(self.style.WARNING(f'Add or get tag category objects.'))

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