0ptr/models/base.py
Richard Bronkhorst 042b931133 Fetching systems
2023-06-10 20:49:50 +02:00

53 lines
1019 B
Python

from copy import deepcopy
from dataclasses import dataclass
from util import sg
@dataclass
class Base:
symbol: str
dirty: bool
def __init__(self, symbol, store):
self.symbol = symbol
self.store = store
self.dirty = True
def seta(self, attr, d, name=None):
if name is None:
name = attr
val = sg(d, name)
if val is not None:
setattr(self, attr, val)
def __setattr__(self, name, value):
if name != 'dirty':
self.dirty = True
super().__setattr__(name, value)
def update(self, d):
pass
def dict(self):
r = deepcopy(self.__dict__)
del r['store']
del r['dirty']
return r
def path(self):
raise NotImplementedError('path')
@classmethod
def ext(self):
raise NotImplementedError('extension')
def type(self):
return self.__class__.__name__
def __str__(self):
return self.f()
def f(self, detail=1):
r = self.symbol
if detail > 1:
r += '.' + self.ext()
return r