Source code for satcfdi.catalogs

import os
import pickle
import sqlite3

from ..models import Code

current_dir = os.path.dirname(__file__)

db_file = os.path.join(current_dir, "catalogs.db")
conn = sqlite3.connect(db_file)
c = conn.cursor()


[docs]def select(catalog_name, key): c.execute(f"SELECT value FROM {catalog_name} WHERE key = ?", (pickle.dumps(key),)) if ds := c.fetchone(): return pickle.loads(ds[0])
[docs]def select_all(catalog_name): c.execute(f"SELECT key, value FROM {catalog_name}") return {pickle.loads(k): pickle.loads(v) for k, v in c.fetchall()}
[docs]def catalog_code(catalog_name, key, index=None): code = key if isinstance(key, tuple): code = key[0] if ds := select(catalog_name, key): if index is not None: ds = ds[index] return Code(code, ds)
[docs]def moneda_decimales(moneda): return select('C756_c_Moneda', moneda)[1]
[docs]def codigo_postal_uso_horario(codigo_postal): return select('C756_c_CodigoPostal', codigo_postal)[4]
[docs]def split_at_upper(word: str): def split_at_upper_itr(word: str): piu = None for w in word: niu = w.isupper() if piu == False: if niu: yield " " if piu is None: yield w.upper() else: yield w piu = niu return "".join(split_at_upper_itr(word))
[docs]def trans(k): c.execute(f"SELECT value FROM Translations WHERE key = ?", (k,)) if res := c.fetchone(): return res[0] return split_at_upper(k)