basic reconnect

This commit is contained in:
Martijn Voncken 2008-02-24 12:59:36 +00:00
parent 8f039eb0fa
commit fb85b87580
3 changed files with 54 additions and 10 deletions

View file

@ -3,7 +3,7 @@ decorators for html-pages.
"""
#relative imports
from render import render
from webserver_common import ws, log
from webserver_common import ws, log, proxy
from utils import *
#/relative
@ -35,7 +35,7 @@ def check_session(func):
vars = web.input(redir_after_login = None)
ck = cookies()
if ck.has_key("session_id") and ck["session_id"] in ws.SESSIONS:
return func(self, name) #ok, continue..
return func(self, name) #check_session:ok
elif vars.redir_after_login:
seeother(url("/login",redir=self_url()))
else:
@ -43,9 +43,26 @@ def check_session(func):
deco.__name__ = func.__name__
return deco
def check_connected(func):
def deco(self, name = None):
connected = False
try:
proxy.ping()
connected = True
except:
pass
if connected:
return func(self, name) #check_connected:ok
else:
seeother("/connect")
deco.__name__ = func.__name__
return deco
def deluge_page(func):
"deluge_page_noauth+check_session"
return check_session(deluge_page_noauth(func))
"deluge_page_noauth+check_session+check connected"
return check_session(check_connected(deluge_page_noauth(func)))
#combi-deco's:
#decorators to use in combination with the ones above.

View file

@ -319,12 +319,13 @@ class logout:
seeother('/login')
class connect:
@deco.deluge_page
@deco.check_session
@deco.deluge_page_noauth
def GET(self, name):
#if proxy.connected():
# error = _("Not Connected to a daemon")
#else:
error = None
if proxy.connected():
error = _("Not Connected to a daemon")
else:
error = None
connect_list = ["http://localhost:58846"]
return render.connect(connect_list, error)
@ -338,7 +339,7 @@ class connect:
else:
uri = vars.uri
#TODO: more error-handling
ws.init_06(uri)
proxy.set_core_uri(uri)
do_redirect()

View file

@ -0,0 +1,26 @@
$def with (connect_list, error)
$:render.header(_("Connect to Daemon"))
<div class="panel" align="left">
$if error:
<div class="error">$error</div>
<form method="POST">
$for i, uri in enumerate(connect_list):
<p><input type="radio" name="uri" value="$uri"
$if i == 0:
checked
>$uri</p>
<p>
<input type="radio" name="uri" value="other">$_("Other"):
<input type="text" name="other_uri">
</p>
<input type="submit" name="submit" value="$_('Connect')">
</li>
</form>
<br>
</div>
$:render.footer()