| 12 | from sxtuser import SXTUser |
| 13 | |
| 14 | class SXTResource(): |
| 15 | # child objects should override: self.__with__, has_with_statement(), self.resource_type |
| 16 | |
| 17 | logger: logging.Logger |
| 18 | SXTExceptions = None |
| 19 | resource_type:SXTResourceType = SXTResourceType.UNDEFINED |
| 20 | PERMISSION = SXTPermission |
| 21 | create_ddl:str = '' |
| 22 | user: SXTUser = None |
| 23 | key_manager: SXTKeyManager = None |
| 24 | filepath: Path = '' |
| 25 | application_name:str = '' |
| 26 | biscuits = [] |
| 27 | start_time: datetime = None |
| 28 | __rcn:str = '' |
| 29 | __ddlt__:str = '' |
| 30 | __allprops__: list = [] |
| 31 | __with__:dict |
| 32 | __existfunc__ = None |
| 33 | default_local_folder:Path = None |
| 34 | __foname__:str = 'resources' |
| 35 | __lasterr__ = None |
| 36 | |
| 37 | |
| 38 | def __init__(self, name:str=None, from_file:Path=None, default_user:SXTUser = None, |
| 39 | private_key:str = None, new_keypair:bool = False, key_manager:SXTKeyManager = None, |
| 40 | application_name:str = None, start_time:datetime = None, |
| 41 | default_local_folder:Path = None, |
| 42 | logger:logging.Logger = None, SpaceAndTime_parent:object = None) -> None: |
| 43 | |
| 44 | # start with parent |
| 45 | if SpaceAndTime_parent: |
| 46 | if not application_name: application_name = SpaceAndTime_parent.application_name |
| 47 | if not logger: logger = SpaceAndTime_parent.logger |
| 48 | if not default_user: default_user = SpaceAndTime_parent.user |
| 49 | # if not key_manager: key_manager = SpaceAndTime_parent.key_manager # this gets confused with Default.User, so removing |
| 50 | if not default_local_folder: default_local_folder = SpaceAndTime_parent.default_local_folder |
| 51 | if not start_time: start_time = SpaceAndTime_parent.start_time |
| 52 | |
| 53 | # set logger if set, otherwise create new |
| 54 | if logger: |
| 55 | self.logger = logger |
| 56 | else: |
| 57 | self.logger = logging.getLogger() |
| 58 | self.logger.setLevel(logging.INFO) |
| 59 | if len(self.logger.handlers) == 0: |
| 60 | self.logger.addHandler( logging.StreamHandler() ) |
| 61 | |
| 62 | # load parameters from file into variables |
| 63 | if not default_local_folder: default_local_folder = '.' |
| 64 | self.default_local_folder = Path(Path(default_local_folder) / Path( self.__foname__ )) |
| 65 | self.biscuits = [] |
| 66 | if from_file: self.load(from_file) |
| 67 | |
| 68 | # Continue setting parameters if they exist, or if not, supply new objects /defaults |
| 69 | # overriding anything set above |
| 70 | if name: self.resource_name = name |
| 71 | self.user = default_user if default_user else SXTUser() |
no outgoing calls