Merge pull request #75 from xarses/remove_state_dir

Remove state dir from git repository
This commit is contained in:
Łukasz Oleś 2015-06-02 21:47:47 +02:00
commit d08898ce04
6 changed files with 23 additions and 11 deletions

View File

@ -21,16 +21,21 @@ from solar import utils
from enum import Enum from enum import Enum
from solar.interfaces.db import get_db
import yaml
db = get_db()
STATES = Enum('States', 'pending inprogress error success') STATES = Enum('States', 'pending inprogress error success')
def state_file(filename): def state_file(name):
filepath = os.path.join(utils.read_config()['state'], filename) if 'log' in name:
if 'log' in filename: return Log(name)
return Log(filepath) elif 'data' in name:
elif 'data' in filename: return Data(name)
return Data(filepath)
CD = partial(state_file, 'commited_data') CD = partial(state_file, 'commited_data')
@ -70,14 +75,18 @@ class Log(object):
def __init__(self, path): def __init__(self, path):
self.path = path self.path = path
items = utils.yaml_load(path) or [] if path in db:
items = db[path]
else:
items = []
self.items = deque([LogItem( self.items = deque([LogItem(
l['uid'], l['res'], l['uid'], l['res'],
l['diff'], l['action'], l['diff'], l['action'],
getattr(STATES, l['state'])) for l in items]) getattr(STATES, l['state'])) for l in items])
def sync(self): def sync(self):
utils.yaml_dump_to([i.to_dict() for i in self.items], self.path) db[self.path] = [i.to_dict() for i in self.items]
def add(self, logitem): def add(self, logitem):
self.items.append(logitem) self.items.append(logitem)
@ -111,18 +120,21 @@ class Data(collections.MutableMapping):
def __init__(self, path): def __init__(self, path):
self.path = path self.path = path
self.store = utils.yaml_load(path) or {} if path in db:
self.store = db[path]
else:
self.store = {}
def __getitem__(self, key): def __getitem__(self, key):
return self.store[key] return self.store[key]
def __setitem__(self, key, value): def __setitem__(self, key, value):
self.store[key] = value self.store[key] = value
utils.yaml_dump_to(self.store, self.path) db[self.path] = self.store
def __delitem__(self, key): def __delitem__(self, key):
self.store.pop(key) self.store.pop(key)
utils.yaml_dump_to(self.store, self.path) db[self.path] = self.store
def __iter__(self): def __iter__(self):
return iter(self.store) return iter(self.store)

View File

View File

View File

View File

View File