76 lines
1.8 KiB
Python
76 lines
1.8 KiB
Python
import os
|
|
from glob import glob
|
|
|
|
import settings
|
|
from db import db
|
|
from sync.image import sync_image
|
|
from utils.fn import lmap, lprint, key_mapper
|
|
from utils.image import create_image
|
|
from utils.io import read_yaml_md
|
|
|
|
|
|
def sync_collective(record):
|
|
if isinstance(record, list):
|
|
return lmap(
|
|
sync_collective,
|
|
record
|
|
)
|
|
|
|
q = {'id': record['id']}
|
|
try:
|
|
collection = db().collective
|
|
update_result = collection.update_one(q, {'$set': record}, upsert=True)
|
|
i = collection.find_one({'id': record['id']})
|
|
return i
|
|
except ValueError:
|
|
pass
|
|
|
|
return None
|
|
|
|
|
|
def create_profile(profile):
|
|
sizes = settings.image_sizes
|
|
images_dir = settings.collective_image_output
|
|
|
|
url_base = 'https://static.shburg.org/art/image/teacher-{id}-{size}{ext}'
|
|
url_fn = lambda size, ext: url_base.format(id=profile['id'], size=size, ext=ext)
|
|
|
|
profile['picture'] = create_image(profile['picture'], sizes, url_fn, images_dir)
|
|
return profile
|
|
|
|
|
|
if __name__ == '__main__':
|
|
dir = '/Users/tmshv/Dropbox/Dev/Hud school/Collective'
|
|
os.chdir(dir)
|
|
|
|
# GET TEACHER YAML/MD MANIFEST FILES
|
|
files = glob('*.md')
|
|
|
|
# READ TEACHER YAML/MD MANIFEST
|
|
collective = lmap(
|
|
read_yaml_md,
|
|
files
|
|
)
|
|
|
|
# COMBINE MD DATA WITH YAML MANIFEST AS BIOGRAPHY
|
|
collective = lmap(
|
|
lambda i: {'biography': i[1], **i[0]},
|
|
collective
|
|
)
|
|
|
|
# MAP TEACHER_MANIFEST -> TEACHER_PROFILE
|
|
collective = lmap(
|
|
create_profile,
|
|
collective
|
|
)
|
|
|
|
# REPLACE PICTURE_OBJECT WITH IT _ID IN MONGODB
|
|
sync_picture = lambda i: None if i is None else sync_image(i)['_id']
|
|
collective = lmap(
|
|
key_mapper('picture', sync_picture),
|
|
collective
|
|
)
|
|
|
|
lprint(collective)
|
|
print('SYNC COLLECTIVE DONE')
|