FUCKING BIG SYNC UPDATE: caching, events, albums, documents, awards, news, schedules, teachers, other
This commit is contained in:
1 parent
359cc430f5
commit
f07c39c317
20 files changed
+1190
-166
No files matched your search
@@ -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: ''.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
|
||||
Reference in new issue
Block a user