diff --git a/IzzyLib/database.py b/IzzyLib/database.py index bfd9672..232436d 100644 --- a/IzzyLib/database.py +++ b/IzzyLib/database.py @@ -21,12 +21,15 @@ class DataBase(): self.engine_string = self.__engine_string(dbtype, kwargs) self.db = create_engine(self.engine_string) self.table = Tables(self, tables) - self.cache = DotDict({table: LRUCache() for table in tables.keys()}) + self.table_names = tables.keys() self.classes = kwargs.get('row_classes', CustomRows()) + self.cache = None session_class = kwargs.get('session_class', Session) self.session = lambda trans=True: session_class(self, trans) + self.SetupCache() + def __engine_string(self, dbtype, kwargs): if not kwargs.get('database'): @@ -63,6 +66,14 @@ class DataBase(): return engine_string + def close(self): + self.SetupCache() + + + def SetupCache(self): + self.cache = DotDict({table: LRUCache() for table in self.table_names}) + + def CreateDatabase(self): if self.engine_string.startswith('postgresql'): predb = create_engine(db.engine_string.replace(config.db.name, 'postgres', -1)) diff --git a/IzzyLib/misc.py b/IzzyLib/misc.py index 2348ae0..fc45464 100644 --- a/IzzyLib/misc.py +++ b/IzzyLib/misc.py @@ -5,6 +5,7 @@ from os import environ as env from datetime import datetime from getpass import getpass from pathlib import Path as Pathlib +from shutil import copyfile from . import logging @@ -324,6 +325,10 @@ class LowerDotDict(DotDict): class Path(object): def __init__(self, path, exist=True, missing=True, parents=True): self.__path = Pathlib(str(path)) + + if str(path).startswith('~'): + self.__path == self.__path.expanduser() + self.json = DotDict({}) self.exist = exist self.missing = missing @@ -382,14 +387,21 @@ class Path(object): return self - def move(self, path): + def copy(self, path, overwrite=False): target = Path(path) self.__check_dir(path) - if target.exists() and not target.isdir(): + if target.exists() and overwrite: target.delete() + copyfile(self.str(), target.str()) + + + def move(self, path, overwrite=False): + self.copy(path, overwrite=overwrite) + self.delete() + def join(self, path, new=True): new_path = self.__path.joinpath(path) @@ -487,10 +499,10 @@ class Path(object): # This needs to be extended to handle dirs with files/sub-dirs def delete(self): if self.isdir(): - self.__path.rmdir(self.missing) + self.__path.rmdir() else: - self.__path.unlink(self.missing) + self.__path.unlink() return not self.exists() diff --git a/IzzyLib/template.py b/IzzyLib/template.py index 63da6f1..2a7ba08 100644 --- a/IzzyLib/template.py +++ b/IzzyLib/template.py @@ -100,7 +100,7 @@ class Template(Environment): self.filters.update(data) - def render(self, tplfile, request=None, context={}, headers={}, cookies={}, pprint=False, **kwargs): + def render(self, tplfile, context={}, headers={}, cookies={}, request=None, pprint=False, **kwargs): if not isinstance(context, dict): raise TypeError(f'context for {tplfile} not a dict: {type(context)} {context}')