Files
hudozka/utils/Sync/sync/image.py
T

67 lines
1.7 KiB
Python

from db import db
from settings import image_name_format, image_url_base
from utils.fn import lmap
# class SyncImage(Sync):
# def __init__(self, sizes, save_path, create_url_fn):
# super().__init__()
# self.sizes = sizes
# self.save_path = save_path
# self.create_url_fn = create_url_fn
# self.collection = db().images
#
# def create_id(self, document):
# id = document['id'] if 'id' in document and document['id'] else None
# if not id:
# id = 'schedule-{period}-{semester}'.format(**document)
# document['id'] = id
# return document
#
# def read(self, document):
# return super().read(document)
#
# def create_hash(self, document):
# return {
# **document,
# 'hash': hash_file(document)
# }
#
# def create(self, document):
# image = create_image(document, self.sizes, self.create_url_fn, self.save_path)
#
# return {
# 'file': document,
# 'hash': self.create_hash(document),
# 'data': image['data']
# }
#
# def find_or_create(self, document):
# i = self.read(document)
# if not i:
# return self.create(document)
# return i
def sync_image(record):
if isinstance(record, list):
return lmap(
sync_image,
record
)
q = {'hash': record['hash']}
try:
db().images.update_one(q, {'$set': record}, upsert=True)
i = db().images.find_one({'hash': record['hash']})
return i
except ValueError:
pass
return None
def image_create_url(file):
url = image_url_base + image_name_format
return url.format(file)