basic reconnect

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

View file

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

View file

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