from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text
from .k2obj import k2obj
import yaml
import os
import requests
import pytz
import os
import sys
from flask import session

class k2(k2obj):

    version = '2.5.1.27'
    db = SQLAlchemy()
    domain = 'http://127.0.0.1:5000/'
    update_domain ='http://127.0.0.1:8001/'
    venv_bin_path = os.path.join(os.path.dirname(sys.prefix), 'venv/Scripts')
    json_sort_keys = False
    timezone = pytz.timezone('Europe/Kiev')
    secret_key = 'JH&INH987gFDHdsagh&8dwbjdw8ckw'
    default_language = 'en'
    current_language = ''
    babel_translation_directories = ''

    def __init__(self):
        super().__init__()

    @classmethod
    def load_babel_translation_directories(cls):
        with open('languages/babel_translation_directories.yml', 'r') as f:
            data = yaml.safe_load(f)
        cls.babel_translation_directories = data['babel_translation_directories']

    @classmethod
    def get_locale(cls):
        if 'lang' in session:
            # Отримати обрану мову з сеансу користувача
            return session['lang']
        else:
            # Повернути мову за замовчуванням з налаштувань додатку
            return cls.default_language #app.config['DEFAULT_LANGUAGE']

    @classmethod
    def search_babel_translation_directories(cls):
        response = requests.get(f'{cls.domain}api/languages')
        if response.status_code == 200:
            cls.babel_translation_directories = response.text
            data = {'babel_translation_directories': response.text}
        else:
            cls.babel_translation_directories = 'languages'
            data = {'babel_translation_directories': 'languages'}

        with open('languages/babel_translation_directories.yml', 'w') as f:
            yaml.dump(data, f)

    # load database settings from yml file
    def init_db_uri(self):
        with open('db/db.yml', 'r') as f:
            db_config = yaml.load(f, Loader=yaml.FullLoader)
        return db_config

    # creating a connection string


    def init_db(self, app):
        db_config = self.init_db_uri()
        db_uri = f"mysql+{db_config['driver']}://{db_config['user']}:{db_config['password']}@{db_config['host']}/{db_config['dbname']}"
        app.config['SQLALCHEMY_DATABASE_URI'] = db_uri
        db_path = '../db/database.db'
        app.config['SQLALCHEMY_BINDS'] = {'db2': f'sqlite:///{db_path}'}
        self.db.init_app(app)





