diff --git a/oml/item/models.py b/oml/item/models.py index 546dfc9..4cad67e 100644 --- a/oml/item/models.py +++ b/oml/item/models.py @@ -378,6 +378,10 @@ class Item(db.Model): u = state.user() if not u in self.users: t = Transfer.get_or_create(self.id) + if not t.added: + t.added = datetime.utcnow() + t.progress = 0 + t.save() logger.debug('queue %s for download', self.id) self.add_user(u) diff --git a/oml/nodes.py b/oml/nodes.py index 2307550..2d59198 100644 --- a/oml/nodes.py +++ b/oml/nodes.py @@ -332,14 +332,18 @@ class Node(Thread): if since_ct > 1: ct = datetime.utcnow() t = Transfer.get(item.id) - t.progress = len(content) / item.info['size'] - t.save() - trigger_event('transfer', { - 'id': item.id, 'progress': t.progress - }) - if state.bandwidth: - state.bandwidth.download(size/since_ct) - size = 0 + if not t.added: + # transfer was canceled + return False + else: + t.progress = len(content) / item.info['size'] + t.save() + trigger_event('transfer', { + 'id': item.id, 'progress': t.progress + }) + if state.bandwidth: + state.bandwidth.download(size/since_ct) + size = 0 ''' content = fileobj.read() '''