From dc7ff544a7b7ac04de0450926310ac36a3dce1c4 Mon Sep 17 00:00:00 2001 From: j Date: Wed, 24 Feb 2016 12:22:36 +0530 Subject: [PATCH] fix download state --- oml/item/models.py | 17 +++++++++-------- oml/user/models.py | 4 ++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/oml/item/models.py b/oml/item/models.py index b49490d..82aa153 100644 --- a/oml/item/models.py +++ b/oml/item/models.py @@ -8,6 +8,7 @@ import re import shutil import stat import unicodedata +import time import ox from sqlalchemy.orm import load_only @@ -508,13 +509,13 @@ class Item(db.Model): def queue_download(self): u = state.user() + if not self.id in state.downloads.transfers: + state.downloads.transfers[self.id] = { + 'added': datetime.utcnow(), + 'progress': 0 + } + logger.debug('queue %s for download', self.id) if not u in self.users: - if not self.id in state.downloads.transfers: - state.downloads.transfers[self.id] = { - 'added': datetime.utcnow(), - 'progress': 0 - } - logger.debug('queue %s for download', self.id) self.add_user(u) def save_file(self, content): @@ -846,7 +847,6 @@ def get_cover(id): def get_preview(id): - delay = 60 if state.online: #logger.debug('get_preview(%s)', id) with db.session(): @@ -854,7 +854,8 @@ def get_preview(id): if i: i.get_preview() else: - state.main.call_later(delay, lambda: state.tasks.queue('getpreview', id)) + state.tasks.queue('getpreview', id) + time.sleep(0.5) def sync_metadata(ids=None): #logger.debug('sync_metadata(%s)', len(ids) if len(ids) > 10 else ids) diff --git a/oml/user/models.py b/oml/user/models.py index 50211dc..703d2cc 100644 --- a/oml/user/models.py +++ b/oml/user/models.py @@ -318,10 +318,10 @@ class List(db.Model): for item_id in items: i = Item.get(item_id) if i: + if i.info['mediastate'] != 'available' and self.user_id == settings.USER_ID: + i.queue_download() if i not in self.items: self.items.append(i) - if self.user_id == settings.USER_ID: - i.queue_download() i.update(commit=False) if i.info['mediastate'] == 'available': available_items.append(item_id)