[Sync] Image updated

This commit is contained in:
Roman Timashev committed 2017-09-12 01:26:18 +03:00
1 parent 98f9de7d60
commit 1da289802c
2 files changed
+24 -27

No files matched your search

+1 -1
View File
@@ -63,7 +63,7 @@ class SyncPage(Sync):
def get_image_url_fn(page_id: str):
image_id = lambda filename: url_encode_text(
os.path.splitext(filename)[0]
os.path.splitext(os.path.basename(filename))[0]
)
def img_url_fn(file, size, ext):
+23 -26
View File
@@ -30,7 +30,7 @@ class Image(Model):
@staticmethod
async def new(provider, file, sizes, url_factory):
img = Image(provider, file, url_factory)
img = Image(provider, file, data=None, url_factory=url_factory)
changed = await img.is_changed()
if changed:
await img.compile(sizes)
@@ -38,14 +38,13 @@ class Image(Model):
await img.save()
else:
doc = await Image.find_one({'file': file})
img.image = [i for i in doc['data'].values()]
img.id = doc['_id']
img = Image(provider, file, doc['data'], url_factory)
img.__set_id(doc['_id'])
return img
def __init__(self, provider, file, url_factory):
store = collection(settings.collection_images)
def __init__(self, provider, file, data, url_factory):
self.data = data
self.url_factory = url_factory
super().__init__(provider, store, file)
@@ -61,13 +60,21 @@ class Image(Model):
img_in = self.provider.get_abs(self.file)
img_out = tempfile.mkdtemp()
self.image = create_image(img_in, sizes, self.url_factory, img_out)
images = create_image(img_in, sizes, self.url_factory, img_out)
data = {}
if images:
for i in images:
size_name = i['size']
data[size_name] = {
**i,
}
self.data = data
async def upload(self):
logger.info('Uploading Image {}'.format(self.hash))
if self.image:
for i in self.image:
if self.data:
for i in self.data.values():
url = get_upload_url(i['url'])
file = i['file']
@@ -75,36 +82,26 @@ class Image(Model):
async def save(self):
c = sync_image(self.bake())
self.id = c['_id']
self.__set_id(c['_id'])
def bake(self):
data = {}
if self.image:
for i in self.image:
size_name = i['size']
data[size_name] = {
'url': i['url'],
'size': size_name,
'width': i['width'],
'height': i['height'],
}
return {
'file': self.file,
'hash': self.hash,
'data': data,
'data': self.data,
}
def get_size(self, size):
if self.image:
for i in self.image:
if size == i['size']:
return i
if size in self.data:
return self.data[size]
return None
def __filename(self):
return os.path.basename(self.file)
def __set_id(self, value):
self.id = value
def __get_hash(self):
return self.provider.hash(self.file)