import settings from db import collection from sync.core.person import SyncPerson from sync.image import sync_image from utils.fn import key_mapper from utils.text.transform import interpolate_swift def resolve_value(param, store): """ :param param: \(nv-andreeva) :param store: function should return value by key nv-andreeva :return: """ i = interpolate_swift(param) return store(i) unpop_image = key_mapper('image', lambda i: sync_image(i)['_id']) def resolve_teacher(i): sync = SyncPerson( collection(settings.collection_collective), None, '' ) return resolve_value(i, lambda teacher_id: sync.read({'id': teacher_id})) def create_product(doc): # author, image, title, awards, teacher, date unpop_teacher = key_mapper('teacher', lambda i: i['_id']) product = {**doc} unpop_image(product) product['teacher'] = resolve_teacher(doc['teacher']) if (product['teacher']): unpop_teacher(product) return product