[Sync] + Settings sync

This commit is contained in:
Roman Timashev committed 2017-09-19 01:59:01 +03:00
1 parent 16a8719927
commit 952eaab69b
3 files changed
+72

No files matched your search

+2
View File
@@ -119,6 +119,7 @@ date_formats_reverse = [
origin = value('origin') origin = value('origin')
collection_settings = 'settings'
collection_images = 'images' collection_images = 'images'
collection_documents = 'documents' collection_documents = 'documents'
collection_awards = 'awards' collection_awards = 'awards'
@@ -133,6 +134,7 @@ provider_root = value('provider')['root'] # env('SYNC_PROVIDER', 'fs')
f = abs_fn(provider_root) f = abs_fn(provider_root)
dir_settings = f('Settings')
dir_documents = f('Documents') dir_documents = f('Documents')
dir_awards = f('Awards') dir_awards = f('Awards')
dir_schedules = f('Schedules') dir_schedules = f('Schedules')
+7
View File
@@ -12,6 +12,7 @@ from sync.models.Article import Article
from sync.models.Page import Page from sync.models.Page import Page
from sync.models.Person import Person from sync.models.Person import Person
from sync.models.Schedule import Schedule from sync.models.Schedule import Schedule
from sync.models.Settings import Settings
def init_logger(name: str, file: str): def init_logger(name: str, file: str):
@@ -74,6 +75,11 @@ async def run(run_interval=0):
model=Album, model=Album,
) )
_settings = Sync(
provider=io(settings.dir_settings),
model=Settings,
)
while True: while True:
await asyncio.wait([ await asyncio.wait([
main(documents), main(documents),
@@ -82,6 +88,7 @@ async def run(run_interval=0):
main(articles), main(articles),
main(schedules), main(schedules),
main(albums), main(albums),
main(_settings),
]) ])
if run_interval == 0: if run_interval == 0:
+63
View File
@@ -0,0 +1,63 @@
from toml import loads as toml_str
from yaml import load as yaml
import settings
from db import collection
from sync.data import Provider, get_data
from sync.models import Model
from utils.fn import constant
store = collection(settings.collection_settings)
class Settings(Model):
@staticmethod
async def find(query):
return store.find(query)
@staticmethod
async def delete(query):
return store.find_one_and_delete(query)
@staticmethod
async def scan(provider):
documents = provider.type_filter('.', '.yaml')
documents = [Settings.read(provider, i) for i in documents]
return documents
@staticmethod
def read(provider, path):
params = yaml(provider.read(path))
return Settings(
provider,
path,
params=params,
)
def __init__(self, provider, file, params=None):
super().__init__(provider, store, file, params=params)
def init(self):
pass
self.__set_id()
self.__set_hash()
def bake(self):
return {
**self.params,
'id': self.id,
'hash': self.hash,
'file': self.file,
}
def __set_id(self):
self.id = 'settings'
def __set_hash(self):
self.hash = self.provider.hash(self.file)
def __str__(self):
return '<Settings hash={} file={} id={}>'.format(self.hash, self.file, self.id)