refactor:remove ws.(part1)
This commit is contained in:
parent
35446801c6
commit
86eeef4b92
|
@ -32,7 +32,7 @@
|
|||
import lib.newforms_plus as forms
|
||||
import page_decorators as deco
|
||||
import lib.webpy022 as web
|
||||
from webserver_common import ws
|
||||
from webserver_common import ws, proxy, log
|
||||
from render import render
|
||||
from lib.webpy022.http import seeother
|
||||
import sys
|
||||
|
@ -64,9 +64,9 @@ class CookieCfgForm(forms.Form):
|
|||
class CfgForm(forms.Form):
|
||||
"config base for deluge-cfg"
|
||||
def initial_data(self):
|
||||
return ws.proxy.get_config()
|
||||
return proxy.get_config()
|
||||
def save(self, data):
|
||||
ws.proxy.set_config(dict(data))
|
||||
proxy.set_config(dict(data))
|
||||
|
||||
class config_page:
|
||||
"""
|
||||
|
@ -95,12 +95,12 @@ class config_page:
|
|||
form_data = web.Storage(utils.get_newforms_data(form_class))
|
||||
form = form_class(form_data)
|
||||
if form.is_valid():
|
||||
ws.log.debug('save config %s' % form_data)
|
||||
log.debug('save config %s' % form_data)
|
||||
try:
|
||||
form.start_save()
|
||||
return self.render(form , name, _('These changes were saved'))
|
||||
except forms.ValidationError, e:
|
||||
ws.log.debug(e.message)
|
||||
log.debug(e.message)
|
||||
return self.render(form , name, error = e.message)
|
||||
else:
|
||||
return self.render(form , name,
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
import lib.newforms_plus as forms
|
||||
import config
|
||||
import utils
|
||||
from webserver_common import ws
|
||||
from webserver_common import ws, proxy , log
|
||||
|
||||
|
||||
class NetworkPorts(config.CfgForm ):
|
||||
|
@ -126,15 +126,15 @@ config.register_block('deluge','daemon', Daemon)
|
|||
class Plugins(forms.Form):
|
||||
title = _("Enabled Plugins")
|
||||
try:
|
||||
_choices = [(p,p) for p in ws.proxy.get_available_plugins()]
|
||||
_choices = [(p,p) for p in proxy.get_available_plugins()]
|
||||
enabled_plugins = forms.MultipleChoice(_(""), _choices)
|
||||
except:
|
||||
ws.log.error("Not connected to daemon, Unable to load plugin-list")
|
||||
log.error("Not connected to daemon, Unable to load plugin-list")
|
||||
#TODO: reload on reconnect!
|
||||
|
||||
|
||||
def initial_data(self):
|
||||
return {'enabled_plugins':ws.proxy.get_enabled_plugins()}
|
||||
return {'enabled_plugins':proxy.get_enabled_plugins()}
|
||||
|
||||
def save(self, value):
|
||||
raise forms.ValidationError("SAVE:TODO")
|
||||
|
|
|
@ -38,11 +38,11 @@ it would be possible not to include the python-json dependency.
|
|||
|
||||
from new import instancemethod
|
||||
from inspect import getargspec
|
||||
from utils import ws,get_torrent_status,get_category_choosers, get_stats,filter_torrent_state,fsize,fspeed
|
||||
from utils import get_torrent_status,get_category_choosers, get_stats,filter_torrent_state,fsize,fspeed
|
||||
from page_decorators import remote
|
||||
from operator import attrgetter
|
||||
import lib.webpy022 as web
|
||||
proxy = ws.proxy
|
||||
from webserver_common import proxy, log
|
||||
|
||||
def to_json(obj):
|
||||
from lib.pythonize import pythonize
|
||||
|
@ -80,7 +80,7 @@ class json_api:
|
|||
|
||||
method = getattr(self,name)
|
||||
vars = web.input(kwargs= None)
|
||||
ws.log.debug('vars=%s' % vars)
|
||||
log.debug('vars=%s' % vars)
|
||||
if vars.kwargs:
|
||||
kwargs = json.read(vars.kwargs)
|
||||
else:
|
||||
|
@ -118,7 +118,7 @@ class json_api:
|
|||
#extra's:
|
||||
def list_torrents(self):
|
||||
return [get_torrent_status(torrent_id)
|
||||
for torrent_id in ws.proxy.get_session_state()]
|
||||
for torrent_id in proxy.get_session_state()]
|
||||
|
||||
def simplify_torrent_status(self, torrent):
|
||||
"""smaller subset and preformatted data for the treelist"""
|
||||
|
|
|
@ -3,7 +3,7 @@ decorators for html-pages.
|
|||
"""
|
||||
#relative imports
|
||||
from render import render
|
||||
from webserver_common import ws
|
||||
from webserver_common import ws, log
|
||||
from utils import *
|
||||
#/relative
|
||||
|
||||
|
@ -30,7 +30,7 @@ def check_session(func):
|
|||
mostly used for POST-pages.
|
||||
"""
|
||||
def deco(self, name = None):
|
||||
ws.log.debug('%s.%s(name=%s)' % (self.__class__.__name__, func.__name__,
|
||||
log.debug('%s.%s(name=%s)' % (self.__class__.__name__, func.__name__,
|
||||
name))
|
||||
vars = web.input(redir_after_login = None)
|
||||
ck = cookies()
|
||||
|
@ -95,7 +95,7 @@ def remote(func):
|
|||
"decorator for remote (string) api's"
|
||||
def deco(self, name = None):
|
||||
try:
|
||||
ws.log.debug('%s.%s(%s)' ,self.__class__.__name__, func.__name__,name )
|
||||
log.debug('%s.%s(%s)' ,self.__class__.__name__, func.__name__,name )
|
||||
print func(self, name)
|
||||
except Exception, e:
|
||||
print 'error:%s' % e.message
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
# this exception statement from your version. If you delete this exception
|
||||
# statement from all source files in the program, then also delete it here.
|
||||
#
|
||||
from webserver_common import ws
|
||||
from webserver_common import ws, proxy, log
|
||||
from utils import *
|
||||
from render import render, error_page
|
||||
import page_decorators as deco
|
||||
|
@ -179,28 +179,28 @@ class torrent_start:
|
|||
@deco.check_session
|
||||
@deco.torrent_ids
|
||||
def POST(self, torrent_ids):
|
||||
ws.proxy.resume_torrent(torrent_ids)
|
||||
proxy.resume_torrent(torrent_ids)
|
||||
do_redirect()
|
||||
|
||||
class torrent_stop:
|
||||
@deco.check_session
|
||||
@deco.torrent_ids
|
||||
def POST(self, torrent_ids):
|
||||
ws.proxy.pause_torrent(torrent_ids)
|
||||
proxy.pause_torrent(torrent_ids)
|
||||
do_redirect()
|
||||
|
||||
class torrent_reannounce:
|
||||
@deco.check_session
|
||||
@deco.torrent_ids
|
||||
def POST(self, torrent_ids):
|
||||
ws.proxy.force_reannounce(torrent_ids)
|
||||
proxy.force_reannounce(torrent_ids)
|
||||
do_redirect()
|
||||
|
||||
class torrent_recheck:
|
||||
@deco.check_session
|
||||
@deco.torrent_ids
|
||||
def POST(self, torrent_ids):
|
||||
ws.proxy.force_recheck(torrent_ids)
|
||||
proxy.force_recheck(torrent_ids)
|
||||
do_redirect()
|
||||
|
||||
class torrent_delete:
|
||||
|
@ -217,7 +217,7 @@ class torrent_delete:
|
|||
vars = web.input(data_also = None, torrent_also = None)
|
||||
data_also = bool(vars.data_also)
|
||||
torrent_also = bool(vars.torrent_also)
|
||||
ws.proxy.remove_torrent(torrent_ids, torrent_also, data_also)
|
||||
proxy.remove_torrent(torrent_ids, torrent_also, data_also)
|
||||
do_redirect()
|
||||
|
||||
class torrent_queue_up:
|
||||
|
@ -228,7 +228,7 @@ class torrent_queue_up:
|
|||
torrent_list.sort(lambda x, y : x.queue - y.queue)
|
||||
torrent_ids = [t.id for t in torrent_list]
|
||||
for torrent_id in torrent_ids:
|
||||
ws.async_proxy.get_core().call("queue_queue_up", None, torrent_id)
|
||||
async_proxy.get_core().call("queue_queue_up", None, torrent_id)
|
||||
do_redirect()
|
||||
|
||||
class torrent_queue_down:
|
||||
|
@ -239,7 +239,7 @@ class torrent_queue_down:
|
|||
torrent_list.sort(lambda x, y : x.queue - y.queue)
|
||||
torrent_ids = [t.id for t in torrent_list]
|
||||
for torrent_id in reversed(torrent_ids):
|
||||
ws.async_proxy.get_core().call("queue_queue_down", None, torrent_id)
|
||||
async_proxy.get_core().call("queue_queue_down", None, torrent_id)
|
||||
do_redirect()
|
||||
|
||||
class torrent_files:
|
||||
|
@ -253,19 +253,19 @@ class torrent_files:
|
|||
for pos in file_priorities:
|
||||
proxy_prio[int(pos)] = 1
|
||||
|
||||
ws.proxy.set_torrent_file_priorities(torrent_id, proxy_prio)
|
||||
proxy.set_torrent_file_priorities(torrent_id, proxy_prio)
|
||||
do_redirect()
|
||||
|
||||
class pause_all:
|
||||
@deco.check_session
|
||||
def POST(self, name):
|
||||
ws.proxy.pause_torrent(ws.proxy.get_session_state())
|
||||
proxy.pause_torrent(proxy.get_session_state())
|
||||
do_redirect()
|
||||
|
||||
class resume_all:
|
||||
@deco.check_session
|
||||
def POST(self, name):
|
||||
ws.proxy.resume_torrent(ws.proxy.get_session_state())
|
||||
proxy.resume_torrent(proxy.get_session_state())
|
||||
do_redirect()
|
||||
|
||||
class refresh:
|
||||
|
@ -319,7 +319,7 @@ class logout:
|
|||
class connect:
|
||||
@deco.deluge_page
|
||||
def GET(self, name):
|
||||
#if ws.proxy.connected():
|
||||
#if proxy.connected():
|
||||
# error = _("Not Connected to a daemon")
|
||||
#else:
|
||||
error = None
|
||||
|
@ -361,7 +361,7 @@ class remote_torrent_add:
|
|||
else: #file-post (curl)
|
||||
data_b64 = base64.b64encode(vars.torrent.file.read())
|
||||
torrent_name = vars.torrent.filename
|
||||
ws.proxy.add_torrent_filecontent(torrent_name, data_b64)
|
||||
proxy.add_torrent_filecontent(torrent_name, data_b64)
|
||||
return 'ok'
|
||||
|
||||
class static(static_handler):
|
||||
|
@ -374,7 +374,7 @@ class template_static(static_handler):
|
|||
|
||||
class downloads(static_handler):
|
||||
def GET(self, name):
|
||||
self.base_dir = ws.proxy.get_config_value('default_download_path')
|
||||
self.base_dir = proxy.get_config_value('default_download_path')
|
||||
if not ws.config.get('share_downloads'):
|
||||
raise Exception('Access to downloads is forbidden.')
|
||||
return static_handler.GET(self, name)
|
||||
|
|
|
@ -3,9 +3,8 @@ test multicall.
|
|||
"""
|
||||
import time
|
||||
|
||||
from WebUi.webserver_common import ws
|
||||
from WebUi.webserver_common import ws, proxy, async_proxy
|
||||
ws.init_06()
|
||||
async_proxy = ws.async_proxy
|
||||
|
||||
TORRENT_KEYS = ['name', 'total_size', 'num_files', 'num_pieces', 'piece_length',
|
||||
'eta', 'ratio', 'file_progress', 'distributed_copies', 'total_done',
|
||||
|
@ -17,21 +16,18 @@ TORRENT_KEYS = ['name', 'total_size', 'num_files', 'num_pieces', 'piece_length',
|
|||
'max_upload_slots', 'max_download_speed', 'prioritize_first_last', 'private'
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
if False:
|
||||
#
|
||||
#A: translate this into 1 multicall:
|
||||
|
||||
start = time.time()
|
||||
stats = {
|
||||
'download_rate':ws.proxy.get_download_rate(),
|
||||
'upload_rate':ws.proxy.get_upload_rate(),
|
||||
'max_download':ws.proxy.get_config_value('max_download_speed'),
|
||||
'max_upload':ws.proxy.get_config_value('max_upload_speed'),
|
||||
'num_connections':ws.proxy.get_num_connections(),
|
||||
'max_num_connections':ws.proxy.get_config_value('max_connections_global')
|
||||
'download_rate':proxy.get_download_rate(),
|
||||
'upload_rate':proxy.get_upload_rate(),
|
||||
'max_download':proxy.get_config_value('max_download_speed'),
|
||||
'max_upload':proxy.get_config_value('max_upload_speed'),
|
||||
'num_connections':proxy.get_num_connections(),
|
||||
'max_num_connections':proxy.get_config_value('max_connections_global')
|
||||
}
|
||||
|
||||
print "sync-stats:",time.time() - start
|
||||
|
@ -66,8 +62,8 @@ if False:
|
|||
#old-sync:
|
||||
start = time.time()
|
||||
|
||||
torrent_list = [ws.proxy.get_torrent_status(id, TORRENT_KEYS )
|
||||
for id in ws.proxy.get_session_state()
|
||||
torrent_list = [proxy.get_torrent_status(id, TORRENT_KEYS )
|
||||
for id in proxy.get_session_state()
|
||||
]
|
||||
|
||||
print "sync-list:",time.time() - start
|
||||
|
@ -87,7 +83,7 @@ if False:
|
|||
|
||||
start = time.time()
|
||||
|
||||
torrent_ids = ws.proxy.get_session_state() #Syc-api.
|
||||
torrent_ids = proxy.get_session_state() #Syc-api.
|
||||
torrent_dict = {}
|
||||
for id in torrent_ids:
|
||||
async_proxy.get_torrent_status(dict_cb(id,torrent_dict), id, TORRENT_KEYS )
|
||||
|
@ -98,9 +94,9 @@ if False:
|
|||
print torrent_dict[torrent_ids[0]]
|
||||
|
||||
if False:
|
||||
print ws.proxy.get_config_value('download_location')
|
||||
print proxy.get_config_value('download_location')
|
||||
|
||||
if True:
|
||||
torrent_id = ws.proxy.get_session_state()[0]
|
||||
torrent_id = proxy.get_session_state()[0]
|
||||
print torrent_id
|
||||
ws.proxy.move_torrent([torrent_id],"/media/sdb1/test")
|
||||
proxy.move_torrent([torrent_id],"/media/sdb1/test")
|
|
@ -6,7 +6,7 @@ unittest the right way feels so unpythonic :(
|
|||
"""
|
||||
import unittest
|
||||
import cookielib, urllib2 , urllib
|
||||
from WebUi.webserver_common import ws,TORRENT_KEYS
|
||||
from WebUi.webserver_common import ws,TORRENT_KEYS, proxy
|
||||
import operator
|
||||
|
||||
ws.init_06()
|
||||
|
@ -17,7 +17,7 @@ BASE_URL = 'http://localhost:8112'
|
|||
PWD = 'deluge'
|
||||
|
||||
def get_status(id):
|
||||
return ws.proxy.get_torrent_status(id,TORRENT_KEYS)
|
||||
return proxy.get_torrent_status(id,TORRENT_KEYS)
|
||||
|
||||
#BASE:
|
||||
#303 = see other
|
||||
|
@ -94,7 +94,7 @@ class TestWebUiBase(unittest.TestCase):
|
|||
else:
|
||||
pass
|
||||
|
||||
first_torrent_id = property(lambda self: ws.proxy.get_session_state()[0])
|
||||
first_torrent_id = property(lambda self: proxy.get_session_state()[0])
|
||||
first_torrent = property(lambda self: get_status(self.first_torrent_id))
|
||||
|
||||
|
||||
|
@ -200,17 +200,17 @@ class TestIntegration(TestWebUiBase):
|
|||
'http://torrents.aelitis.com:88/torrents/azautoseeder_0.1.1.jar.torrent'
|
||||
])
|
||||
|
||||
torrent_ids = ws.proxy.get_session_state()
|
||||
torrent_ids = proxy.get_session_state()
|
||||
|
||||
#avoid hammering, investigate current torrent-list and do not re-add.
|
||||
#correct means : 3 torrent's in list (for now)
|
||||
if len(torrent_ids) <> 3:
|
||||
#delete all, nice use case for refactoring delete..
|
||||
torrent_ids = ws.proxy.get_session_state()
|
||||
torrent_ids = proxy.get_session_state()
|
||||
for torrent in torrent_ids:
|
||||
ws.proxy.remove_torrent([torrent], False, False)
|
||||
proxy.remove_torrent([torrent], False, False)
|
||||
|
||||
torrent_ids = ws.proxy.get_session_state()
|
||||
torrent_ids = proxy.get_session_state()
|
||||
self.assertEqual(torrent_ids, [])
|
||||
|
||||
#add 3 using url.
|
||||
|
@ -218,7 +218,7 @@ class TestIntegration(TestWebUiBase):
|
|||
self.assert_303('/torrent/add','/index',{'url':url,'torrent':None})
|
||||
|
||||
#added?
|
||||
self.torrent_ids = ws.proxy.get_session_state()
|
||||
self.torrent_ids = proxy.get_session_state()
|
||||
self.assertEqual(len(self.torrent_ids), 3)
|
||||
|
||||
else:
|
||||
|
@ -231,14 +231,14 @@ class TestIntegration(TestWebUiBase):
|
|||
#pause all
|
||||
self.assert_303('/pause_all','/index', post=1)
|
||||
#pause worked?
|
||||
pause_status = [get_status(id)["user_paused"] for id in ws.proxy.get_session_state()]
|
||||
pause_status = [get_status(id)["user_paused"] for id in proxy.get_session_state()]
|
||||
for paused in pause_status:
|
||||
self.assertEqual(paused, True)
|
||||
|
||||
#resume all
|
||||
self.assert_303('/resume_all','/index', post=1)
|
||||
#resume worked?
|
||||
pause_status = [get_status(id)["user_paused"] for id in ws.proxy.get_session_state()]
|
||||
pause_status = [get_status(id)["user_paused"] for id in proxy.get_session_state()]
|
||||
for paused in pause_status:
|
||||
self.assertEqual(paused,False)
|
||||
#pause again.
|
||||
|
@ -254,7 +254,7 @@ class TestIntegration(TestWebUiBase):
|
|||
|
||||
def testQueue(self):
|
||||
#find last:
|
||||
torrent_id = [id for id in ws.proxy.get_session_state()
|
||||
torrent_id = [id for id in proxy.get_session_state()
|
||||
if (get_status(id)['queue_pos'] ==3 )][0]
|
||||
|
||||
#queue
|
||||
|
@ -285,7 +285,7 @@ class TestIntegration(TestWebUiBase):
|
|||
|
||||
def testMeta(self):
|
||||
#info available?
|
||||
for torrent_id in ws.proxy.get_session_state():
|
||||
for torrent_id in proxy.get_session_state():
|
||||
self.assert_exists('/torrent/info/%s' % torrent_id)
|
||||
self.assert_exists('/torrent/delete/%s' % torrent_id)
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
# this exception statement from your version. If you delete this exception
|
||||
# statement from all source files in the program, then also delete it here.
|
||||
#
|
||||
from webserver_common import ws
|
||||
from webserver_common import ws, log, proxy
|
||||
import utils
|
||||
from render import render, error_page
|
||||
import page_decorators as deco
|
||||
|
@ -55,8 +55,8 @@ class OptionsForm(forms.Form):
|
|||
default_private = forms.CheckBox(_('Set Private Flag'))
|
||||
|
||||
def initial_data(self):
|
||||
data = ws.proxy.get_config()
|
||||
ws.log.debug("add:Init options with:%s" % data)
|
||||
data = proxy.get_config()
|
||||
log.debug("add:Init options with:%s" % data)
|
||||
return data
|
||||
|
||||
class AddForm(forms.Form):
|
||||
|
@ -73,7 +73,7 @@ class torrent_add:
|
|||
|
||||
def add_page(self,error = None):
|
||||
#form_data = utils.get_newforms_data(AddForm)
|
||||
ws.log.debug("add-page")
|
||||
log.debug("add-page")
|
||||
#TODO: CLEANUP!!!
|
||||
vars = web.input(url = None)
|
||||
form_data = {'url':vars.url}
|
||||
|
@ -81,7 +81,7 @@ class torrent_add:
|
|||
options_data = None
|
||||
if error:
|
||||
options_data = utils.get_newforms_data(OptionsForm)
|
||||
ws.log.debug("add:(error-state):Init options with:%s" % options_data)
|
||||
log.debug("add:(error-state):Init options with:%s" % options_data)
|
||||
return render.torrent_add(AddForm(form_data),OptionsForm(options_data), error)
|
||||
|
||||
@deco.deluge_page
|
||||
|
@ -116,14 +116,14 @@ class torrent_add:
|
|||
print self.add_page(error = _("Choose an url or a torrent, not both."))
|
||||
return
|
||||
if vars.url:
|
||||
ws.proxy.add_torrent_url(vars.url,options)
|
||||
ws.log.debug("add-url:options :%s" % options)
|
||||
proxy.add_torrent_url(vars.url,options)
|
||||
log.debug("add-url:options :%s" % options)
|
||||
utils.do_redirect()
|
||||
elif torrent_name:
|
||||
data_b64 = base64.b64encode(torrent_data)
|
||||
#b64 because of strange bug-reports related to binary data
|
||||
ws.proxy.add_torrent_filecontent(vars.torrent.filename, data_b64, options)
|
||||
ws.log.debug("add-file:options :%s" % options)
|
||||
proxy.add_torrent_filecontent(vars.torrent.filename, data_b64, options)
|
||||
log.debug("add-file:options :%s" % options)
|
||||
utils.do_redirect()
|
||||
else:
|
||||
print self.add_page(error = _("No data"))
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
# statement from all source files in the program, then also delete it here.
|
||||
#
|
||||
|
||||
from webserver_common import ws
|
||||
from webserver_common import ws, proxy
|
||||
import utils
|
||||
from render import render
|
||||
import page_decorators as deco
|
||||
|
@ -42,7 +42,7 @@ import lib.webpy022 as web
|
|||
class MoveForm(forms.Form):
|
||||
save_path = forms.ServerFolder(_("Move To"))
|
||||
def initial_data(self):
|
||||
return {'save_path':ws.proxy.get_config_value('download_location')}
|
||||
return {'save_path':proxy.get_config_value('download_location')}
|
||||
|
||||
class torrent_move:
|
||||
|
||||
|
@ -70,5 +70,5 @@ class torrent_move:
|
|||
print self.move_page(name, error = _("Error in Path."))
|
||||
return
|
||||
save_path = form.clean_data["save_path"]
|
||||
ws.proxy.move_torrent(torrent_ids, save_path)
|
||||
proxy.move_torrent(torrent_ids, save_path)
|
||||
utils.do_redirect()
|
||||
|
|
|
@ -47,7 +47,7 @@ import pickle
|
|||
from urlparse import urlparse
|
||||
|
||||
from webserver_common import REVNO, VERSION, TORRENT_KEYS, STATE_MESSAGES
|
||||
from webserver_common import ws
|
||||
from webserver_common import ws, proxy, async_proxy, log
|
||||
|
||||
debug_unicode = False
|
||||
|
||||
|
@ -64,7 +64,7 @@ def setcookie(key, val):
|
|||
|
||||
#really simple sessions, to bad i had to implement them myself.
|
||||
def start_session():
|
||||
ws.log.debug('start session')
|
||||
log.debug('start session')
|
||||
session_id = str(random.random())
|
||||
ws.SESSIONS.append(session_id)
|
||||
#if len(ws.SESSIONS) > 20: #save max 20 sessions?
|
||||
|
@ -113,21 +113,21 @@ def getcookie(key, default = None):
|
|||
def get_stats():
|
||||
stats = Storage()
|
||||
|
||||
ws.async_proxy.get_download_rate(dict_cb('download_rate',stats))
|
||||
ws.async_proxy.get_upload_rate(dict_cb('upload_rate',stats))
|
||||
ws.async_proxy.get_config_value(dict_cb('max_download',stats)
|
||||
async_proxy.get_download_rate(dict_cb('download_rate',stats))
|
||||
async_proxy.get_upload_rate(dict_cb('upload_rate',stats))
|
||||
async_proxy.get_config_value(dict_cb('max_download',stats)
|
||||
,"max_download_speed")
|
||||
ws.async_proxy.get_config_value(dict_cb('max_upload',stats)
|
||||
async_proxy.get_config_value(dict_cb('max_upload',stats)
|
||||
,"max_upload_speed")
|
||||
ws.async_proxy.get_num_connections(dict_cb("num_connections",stats))
|
||||
ws.async_proxy.get_config_value(dict_cb('max_num_connections',stats)
|
||||
async_proxy.get_num_connections(dict_cb("num_connections",stats))
|
||||
async_proxy.get_config_value(dict_cb('max_num_connections',stats)
|
||||
,"max_connections_global")
|
||||
ws.async_proxy.get_dht_nodes(dict_cb('dht_nodes',stats))
|
||||
async_proxy.get_dht_nodes(dict_cb('dht_nodes',stats))
|
||||
|
||||
|
||||
ws.async_proxy.force_call(block=True)
|
||||
async_proxy.force_call(block=True)
|
||||
|
||||
#ws.log.debug(str(stats))
|
||||
#log.debug(str(stats))
|
||||
|
||||
stats.download_rate = fspeed(stats.download_rate)
|
||||
stats.upload_rate = fspeed(stats.upload_rate)
|
||||
|
@ -157,10 +157,10 @@ def enhance_torrent_status(torrent_id,status):
|
|||
for key in TORRENT_KEYS:
|
||||
if not key in status:
|
||||
status[key] = 0
|
||||
#ws.log.warning('torrent_status:empty key in status:%s' % key)
|
||||
#log.warning('torrent_status:empty key in status:%s' % key)
|
||||
elif status[key] == None:
|
||||
status[key] = 0
|
||||
#ws.log.warning('torrent_status:None key in status:%s' % key)
|
||||
#log.warning('torrent_status:None key in status:%s' % key)
|
||||
|
||||
|
||||
if status.tracker == 0:
|
||||
|
@ -222,9 +222,9 @@ def enhance_torrent_status(torrent_id,status):
|
|||
def get_torrent_status(torrent_id):
|
||||
"""
|
||||
helper method.
|
||||
enhance ws.proxy.get_torrent_status with some extra data
|
||||
enhance proxy.get_torrent_status with some extra data
|
||||
"""
|
||||
status = ws.proxy.get_torrent_status(torrent_id,TORRENT_KEYS)
|
||||
status = proxy.get_torrent_status(torrent_id,TORRENT_KEYS)
|
||||
|
||||
return enhance_torrent_status(torrent_id, status)
|
||||
|
||||
|
@ -234,12 +234,12 @@ def get_torrent_list():
|
|||
"""
|
||||
uses async.
|
||||
"""
|
||||
torrent_ids = ws.proxy.get_session_state() #Syc-api.
|
||||
torrent_ids = proxy.get_session_state() #Syc-api.
|
||||
torrent_dict = {}
|
||||
for id in torrent_ids:
|
||||
ws.async_proxy.get_torrent_status(dict_cb(id,torrent_dict), id,
|
||||
async_proxy.get_torrent_status(dict_cb(id,torrent_dict), id,
|
||||
TORRENT_KEYS)
|
||||
ws.async_proxy.force_call(block=True)
|
||||
async_proxy.force_call(block=True)
|
||||
return [enhance_torrent_status(id, status)
|
||||
for id, status in torrent_dict.iteritems()]
|
||||
|
||||
|
@ -307,7 +307,7 @@ def get_newforms_data(form_class):
|
|||
vars = web.input()
|
||||
for field in fields:
|
||||
form_data[field] = vars.get(field)
|
||||
#ws.log.debug("form-field:%s=%s" % (field, form_data[field]))
|
||||
#log.debug("form-field:%s=%s" % (field, form_data[field]))
|
||||
#DIRTY HACK: (for multiple-select)
|
||||
if isinstance(form_class.base_fields[field],
|
||||
forms.MultipleChoiceField):
|
||||
|
|
|
@ -43,6 +43,8 @@ import sys
|
|||
import base64
|
||||
from md5 import md5
|
||||
import inspect
|
||||
from deluge.ui import client
|
||||
from deluge.log import LOG as log
|
||||
|
||||
random.seed()
|
||||
|
||||
|
@ -80,12 +82,6 @@ TORRENT_KEYS = ['name', 'total_size', 'num_files', 'num_pieces', 'piece_length',
|
|||
"user_paused"
|
||||
|
||||
]
|
||||
"""
|
||||
NOT:is_seed,total_download,total_upload,uploaded_memory,queue_pos,user_paused
|
||||
"""
|
||||
|
||||
|
||||
|
||||
|
||||
STATE_MESSAGES = [
|
||||
"Allocating",
|
||||
|
@ -111,29 +107,28 @@ CONFIG_DEFAULTS = {
|
|||
|
||||
#/constants
|
||||
|
||||
|
||||
class SyncProxyFunction:
|
||||
#some magic to transform the async-proxy back to sync:
|
||||
class SyncProxyMethod:
|
||||
"""
|
||||
helper class for SyncProxy
|
||||
"""
|
||||
def __init__(self,client, func_name):
|
||||
def __init__(self, func_name):
|
||||
self.func_name = func_name
|
||||
self.client = client
|
||||
|
||||
def __call__(self,*args,**kwargs):
|
||||
func = getattr(self.client,self.func_name)
|
||||
func = getattr(client,self.func_name)
|
||||
|
||||
if self.has_callback(func):
|
||||
#(ab)using list.append as a builtin callback method
|
||||
sync_result = []
|
||||
func(sync_result.append,*args, **kwargs)
|
||||
self.client.force_call(block=True)
|
||||
client.force_call(block=True)
|
||||
if not sync_result:
|
||||
return None
|
||||
return sync_result[0]
|
||||
else:
|
||||
ws.log.debug('no-cb: %s' % self.func_name)
|
||||
func(*args, **kwargs)
|
||||
self.client.force_call(block=True)
|
||||
client.force_call(block=True)
|
||||
return
|
||||
|
||||
@staticmethod
|
||||
|
@ -142,11 +137,14 @@ class SyncProxyFunction:
|
|||
|
||||
class SyncProxy(object):
|
||||
"""acts like the old synchonous proxy"""
|
||||
def __init__(self, client):
|
||||
self.client = client
|
||||
def __getattr__(self, attr):
|
||||
return SyncProxyMethod(attr)
|
||||
|
||||
def __getattr__(self, attr,*args,**kwargs):
|
||||
return SyncProxyFunction(self.client, attr)
|
||||
#moving stuff from WS to module
|
||||
#goal: eliminate WS, because the 05 compatiblilty is not needed anymore
|
||||
proxy = SyncProxy()
|
||||
async_proxy = client
|
||||
#log is already imported.
|
||||
|
||||
|
||||
class Ws:
|
||||
|
@ -182,37 +180,31 @@ class Ws:
|
|||
self.config = pickle.load(open(self.config_file))
|
||||
|
||||
def init_06(self, uri = 'http://localhost:58846'):
|
||||
import deluge.ui.client as async_proxy
|
||||
from deluge.log import LOG as log
|
||||
self.log = log
|
||||
async_proxy.set_core_uri(uri)
|
||||
self.async_proxy = async_proxy
|
||||
|
||||
self.proxy = SyncProxy(self.async_proxy)
|
||||
|
||||
client.set_core_uri(uri)
|
||||
self.async_proxy = client
|
||||
|
||||
|
||||
#MONKEY PATCH, TODO->REMOVE!!!
|
||||
def add_torrent_filecontent(name , data_b64, options):
|
||||
self.log.debug('monkeypatched add_torrent_filecontent:%s,len(data:%s))' %
|
||||
log.debug('monkeypatched add_torrent_filecontent:%s,len(data:%s))' %
|
||||
(name , len(data_b64)))
|
||||
|
||||
name = name.replace('\\','/')
|
||||
name = 'deluge06_' + str(random.random()) + '_' + name.split('/')[-1]
|
||||
filename = os.path.join('/tmp', name)
|
||||
|
||||
self.log.debug('write: %s' % filename)
|
||||
log.debug('write: %s' % filename)
|
||||
f = open(filename,"wb")
|
||||
f.write(base64.b64decode(data_b64))
|
||||
f.close()
|
||||
self.log.debug("options:%s" % options)
|
||||
log.debug("options:%s" % options)
|
||||
self.proxy.add_torrent_file([filename] , [options])
|
||||
|
||||
self.proxy.add_torrent_filecontent = add_torrent_filecontent
|
||||
self.log.debug('cfg-file %s' % self.config_file)
|
||||
proxy.add_torrent_filecontent = add_torrent_filecontent
|
||||
log.debug('cfg-file %s' % self.config_file)
|
||||
|
||||
if not os.path.exists(self.config_file):
|
||||
self.log.debug('create cfg file %s' % self.config_file)
|
||||
log.debug('create cfg file %s' % self.config_file)
|
||||
#load&save defaults.
|
||||
f = file(self.config_file,'wb')
|
||||
pickle.dump(CONFIG_DEFAULTS,f)
|
||||
|
@ -221,34 +213,6 @@ class Ws:
|
|||
self.init_process()
|
||||
self.env = '0.6'
|
||||
|
||||
def init_05(self):
|
||||
import dbus
|
||||
self.init_process()
|
||||
bus = dbus.SessionBus()
|
||||
self.proxy = bus.get_object("org.deluge_torrent.dbusplugin"
|
||||
, "/org/deluge_torrent/DelugeDbusPlugin")
|
||||
|
||||
self.env = '0.5_process'
|
||||
self.init_logger()
|
||||
|
||||
def init_gtk_05(self):
|
||||
#appy possibly changed config-vars, only called in when runing inside gtk.
|
||||
#new bug ws.render will not update!!!!
|
||||
#other bug: must warn if blocklist plugin is active!
|
||||
from dbus_interface import get_dbus_manager
|
||||
self.proxy = get_dbus_manager()
|
||||
self.config = deluge.pref.Preferences(self.config_file, False)
|
||||
self.env = '0.5_gtk'
|
||||
self.init_logger()
|
||||
|
||||
def init_logger(self):
|
||||
#only for 0.5..
|
||||
import logging
|
||||
logging.basicConfig(level=logging.DEBUG,
|
||||
format="[%(levelname)s] %(message)s")
|
||||
self.log = logging
|
||||
|
||||
|
||||
#utils for config:
|
||||
def get_templates(self):
|
||||
template_path = os.path.join(os.path.dirname(__file__), 'templates')
|
||||
|
@ -258,7 +222,7 @@ class Ws:
|
|||
and not dirname.startswith('.')]
|
||||
|
||||
def save_config(self):
|
||||
self.log.debug('Save Webui Config')
|
||||
log.debug('Save Webui Config')
|
||||
data = pickle.dumps(self.config)
|
||||
f = open(self.config_file,'wb')
|
||||
f.write(data)
|
||||
|
|
Loading…
Reference in New Issue