FUCKING BIG SYNC UPDATE: caching, events, albums, documents, awards, news, schedules, teachers, other

This commit is contained in:
tmshv committed 2016-03-03 01:36:50 +03:00
1 parent 359cc430f5
commit f07c39c317
20 files changed
+1190 -166

No files matched your search

+61 -2
View File
@@ -1,9 +1,11 @@
import re
from datetime import datetime
from markdown import markdown
from db import db
from utils.fn import lmap, key_mapper
def create_date(date_str, date_formats=None):
"""
@@ -36,6 +38,18 @@ def create_date(date_str, date_formats=None):
folder_name_pattern = re.compile('([\d.]+)(.*)')
def untouched(documents, store):
return lmap(
lambda i: i[0],
filter(
lambda i: (i[1] is None) or ('hash' not in i[1]) or (i[0]['hash'] != i[1]['hash']),
map(
lambda i: (i, store.read(i)),
documents
)
))
def create_date_and_title_from_folder_name(folder_name, date_formats=None):
m = folder_name_pattern.findall(folder_name)
if not m:
@@ -56,4 +70,49 @@ create_post_from_image_list = lambda images: markdown(
lambda i: '![]({img})'.format(img=i),
images
))
)
)
class Sync:
def __init__(self):
super().__init__()
self.collection = None
def read(self, document):
if isinstance(document, list):
return lmap(self.read, document)
q = {'id': document['id']}
try:
return self.collection.find_one(q)
except ValueError:
pass
return None
def update(self, document):
if isinstance(document, list):
return lmap(self.update, document)
q = {'id': document['id']}
try:
self.collection.update_one(q, {'$set': document}, upsert=True)
return self.read(document)
except ValueError:
pass
return None
def compile(self, document):
return document
def query(self, q):
return self.collection.find(q)
def delete(self, q):
return self.collection.find_one_and_delete(q)
def create_id(self, document):
return None
def create_hash(self, document):
return None