diff --git a/oml/item/models.py b/oml/item/models.py index a104506..cfc44e3 100644 --- a/oml/item/models.py +++ b/oml/item/models.py @@ -437,6 +437,30 @@ class Item(db.Model): if state.nodes.download_preview(u.id, self.id): break + def update_cover(self): + logger.debug('%s update cover', self.id) + key = 'cover:%s' % self.id + cover = None + if 'cover' in self.meta and self.meta['cover']: + logger.debug('download cover %s %s', self.id, self.meta['cover']) + try: + cover = ox.cache.read_url(self.meta['cover']) + except: + logger.debug('unable to read cover url %s', self.meta['cover']) + cover = None + if cover: + icons[key] = cover + self.info['coverRatio'] = get_ratio(cover) + else: + del icons[key] + if not cover: + if 'previewRatio' in self.info: + self.info['coverRatio'] = self.info['previewRatio'] + elif 'coverRatio' in self.info: + del self.info['coverRatio'] + icons.clear('cover:%s:' % self.id) + logger.debug('%s update_cover done', self.id) + def get_preview(self): key = 'preview:%s' % self.id data = icons[key] @@ -466,14 +490,11 @@ class Item(db.Model): icons.clear('preview:%s:' % self.id) logger.debug('%s update_preview done', self.id) - def update_cover(self): + def update_icons(self): if state.online: - download_cover(self.id) + self.update_cover() elif state.tasks: state.tasks.queue('getcover', self.id) - - def update_icons(self): - self.update_cover() self.update_preview() def load_metadata(self): @@ -835,47 +856,15 @@ def update_sort_table(): s.connection().execute(q) s.commit() -def download_cover(id): - key = 'cover:%s' % id - with db.session(): - i = Item.get(id) - if i: - url = i.meta.get('cover') - else: - url = None - - logger.debug('download cover %s %s', self.id, url) - ratio = None - try: - cover = ox.net.read_url(url) - ratio = get_ratio(cover) - except: - logger.debug('unable to read cover url %s', url) - cover = None - with db.session(): - i = Item.get(id, for_update=True) - if i: - if cover: - i.info['coverRatio'] = get_ratio(cover) - else: - if 'previewRatio' in i.info: - i.info['coverRatio'] = i.info['previewRatio'] - elif 'coverRatio' in i.info: - del i.info['coverRatio'] - i.save() - - if cover: - icons[key] = cover - else: - del icons[key] - icons.clear('cover:%s:' % id) - logger.debug('%s update_cover done', id) def get_cover(id): delay = 60 if state.online: # logger.debug('get_cover(%s)', id) - download_cover(id) + with db.session(): + i = Item.get(id) + if i: + i.update_cover() else: state.main.call_later(delay, lambda: state.tasks.queue('getcover', id)) diff --git a/static/js/folders.js b/static/js/folders.js index 17775b9..812f8bd 100644 --- a/static/js/folders.js +++ b/static/js/folders.js @@ -314,7 +314,7 @@ oml.ui.folders = function() { }; - that.updateItems = function(list, items) { + that.updateItems = function(items) { var $list; if (arguments.length == 0) { oml.getLists(function(lists) { @@ -326,11 +326,12 @@ oml.ui.folders = function() { }); }); } else { - $lists.forEach(function($list) { - if (!Ox.isEmpty($list.value(list))) { - $list.value(list, 'items', items); - } - }) + $list = $lists.filter(function($list) { + return $list.options('selected').length; + })[0]; + if ($list && !Ox.isEmpty($list.value(ui._list))) { + $list.value(ui._list, 'items', items); + } } }; diff --git a/static/js/list.js b/static/js/list.js index 3c159ae..9af026d 100644 --- a/static/js/list.js +++ b/static/js/list.js @@ -64,7 +64,7 @@ oml.ui.list = function() { && ui.find.conditions[0].key == 'list' && ui.find.conditions[0].operator == '==' )) { - oml.$ui.folders.updateItems(ui.find.conditions[0].value, data.items); + oml.$ui.folders.updateItems(data.items); } oml.$ui.statusbar.set('total', data); },