Fix #2277 : Plugins keys weren't fetched in filter_torrent_ids
Fixed bug introduced in 8c106ce8c4
where keys for plugins weren't fetched in filter_torrent_ids.
This commit is contained in:
parent
4b31061037
commit
e6498b6864
|
@ -420,9 +420,9 @@ class Core(component.Component):
|
||||||
for torrent_id in torrent_ids:
|
for torrent_id in torrent_ids:
|
||||||
self.torrentmanager[torrent_id].resume()
|
self.torrentmanager[torrent_id].resume()
|
||||||
|
|
||||||
def create_torrent_status(self, torrent_id, torrent_keys, plugin_keys, diff=False, update=False):
|
def create_torrent_status(self, torrent_id, torrent_keys, plugin_keys, diff=False, update=False, all_keys=False):
|
||||||
try:
|
try:
|
||||||
status = self.torrentmanager[torrent_id].get_status(torrent_keys, diff, update=update)
|
status = self.torrentmanager[torrent_id].get_status(torrent_keys, diff, update=update, all_keys=all_keys)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
@ -437,7 +437,7 @@ class Core(component.Component):
|
||||||
@export
|
@export
|
||||||
def get_torrent_status(self, torrent_id, keys, diff=False):
|
def get_torrent_status(self, torrent_id, keys, diff=False):
|
||||||
torrent_keys, plugin_keys = self.torrentmanager.separate_keys(keys, [torrent_id])
|
torrent_keys, plugin_keys = self.torrentmanager.separate_keys(keys, [torrent_id])
|
||||||
return self.create_torrent_status(torrent_id, torrent_keys, plugin_keys, diff=diff, update=True)
|
return self.create_torrent_status(torrent_id, torrent_keys, plugin_keys, diff=diff, update=True, all_keys=not keys)
|
||||||
|
|
||||||
@export
|
@export
|
||||||
def get_torrents_status(self, filter_dict, keys, diff=False):
|
def get_torrents_status(self, filter_dict, keys, diff=False):
|
||||||
|
|
|
@ -155,7 +155,7 @@ class FilterManager(component.Component):
|
||||||
if isinstance(value, basestring):
|
if isinstance(value, basestring):
|
||||||
filter_dict[key] = [value]
|
filter_dict[key] = [value]
|
||||||
|
|
||||||
if "id"in filter_dict: #optimized filter for id:
|
if "id" in filter_dict: #optimized filter for id:
|
||||||
torrent_ids = list(filter_dict["id"])
|
torrent_ids = list(filter_dict["id"])
|
||||||
del filter_dict["id"]
|
del filter_dict["id"]
|
||||||
else:
|
else:
|
||||||
|
@ -189,10 +189,11 @@ class FilterManager(component.Component):
|
||||||
if not filter_dict: #return if there's nothing more to filter
|
if not filter_dict: #return if there's nothing more to filter
|
||||||
return torrent_ids
|
return torrent_ids
|
||||||
|
|
||||||
|
torrent_keys, plugin_keys = self.torrents.separate_keys(filter_dict.keys(), torrent_ids)
|
||||||
#leftover filter arguments:
|
#leftover filter arguments:
|
||||||
#default filter on status fields.
|
#default filter on status fields.
|
||||||
for torrent_id in list(torrent_ids):
|
for torrent_id in list(torrent_ids):
|
||||||
status = self.torrents[torrent_id].get_status(filter_dict.keys()) #status={key:value}
|
status = self.core.create_torrent_status(torrent_id, torrent_keys, plugin_keys)
|
||||||
for field, values in filter_dict.iteritems():
|
for field, values in filter_dict.iteritems():
|
||||||
if (not status[field] in values) and torrent_id in torrent_ids:
|
if (not status[field] in values) and torrent_id in torrent_ids:
|
||||||
torrent_ids.remove(torrent_id)
|
torrent_ids.remove(torrent_id)
|
||||||
|
|
|
@ -626,7 +626,7 @@ class Torrent(object):
|
||||||
return host
|
return host
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
def get_status(self, keys, diff=False, update=False):
|
def get_status(self, keys, diff=False, update=False, all_keys=False):
|
||||||
"""
|
"""
|
||||||
Returns the status of the torrent based on the keys provided
|
Returns the status of the torrent based on the keys provided
|
||||||
|
|
||||||
|
@ -646,7 +646,7 @@ class Torrent(object):
|
||||||
if update:
|
if update:
|
||||||
self.update_status(self.handle.status())
|
self.update_status(self.handle.status())
|
||||||
|
|
||||||
if not keys:
|
if all_keys:
|
||||||
keys = self.status_funcs.keys()
|
keys = self.status_funcs.keys()
|
||||||
|
|
||||||
status_dict = {}
|
status_dict = {}
|
||||||
|
|
|
@ -1151,7 +1151,7 @@ class TorrentManager(component.Component):
|
||||||
# Could be the clients cache (sessionproxy) isn't up to speed.
|
# Could be the clients cache (sessionproxy) isn't up to speed.
|
||||||
del status_dict[torrent_id]
|
del status_dict[torrent_id]
|
||||||
else:
|
else:
|
||||||
status_dict[torrent_id] = self.torrents[torrent_id].get_status(torrent_keys, diff)
|
status_dict[torrent_id] = self.torrents[torrent_id].get_status(torrent_keys, diff, all_keys=not keys)
|
||||||
self.status_dict = status_dict
|
self.status_dict = status_dict
|
||||||
d.callback((status_dict, plugin_keys))
|
d.callback((status_dict, plugin_keys))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue