Change to Python3 coding style
This commit is contained in:
parent
fc0fe0557b
commit
b0b9a4d33c
137 changed files with 910 additions and 913 deletions
|
@ -3,7 +3,8 @@ import re
|
|||
import os
|
||||
import mimetypes
|
||||
import json
|
||||
import cgi
|
||||
import html
|
||||
import urllib
|
||||
|
||||
import gevent
|
||||
|
||||
|
@ -157,7 +158,8 @@ class UiRequest(object):
|
|||
if func:
|
||||
return func()
|
||||
else:
|
||||
return self.error404(path)
|
||||
ret = self.error404(path)
|
||||
return ret
|
||||
|
||||
# The request is proxied by chrome extension or a transparent proxy
|
||||
def isProxyRequest(self):
|
||||
|
@ -190,7 +192,7 @@ class UiRequest(object):
|
|||
# Return: <dict> Posted variables
|
||||
def getPosted(self):
|
||||
if self.env['REQUEST_METHOD'] == "POST":
|
||||
return dict(cgi.parse_qsl(
|
||||
return dict(urllib.parse.parse_qsl(
|
||||
self.env['wsgi.input'].readline().decode()
|
||||
))
|
||||
else:
|
||||
|
@ -200,7 +202,7 @@ class UiRequest(object):
|
|||
def getCookies(self):
|
||||
raw_cookies = self.env.get('HTTP_COOKIE')
|
||||
if raw_cookies:
|
||||
cookies = cgi.parse_qsl(raw_cookies)
|
||||
cookies = urllib.parse.parse_qsl(raw_cookies)
|
||||
return {key.strip(): val for key, val in cookies}
|
||||
else:
|
||||
return {}
|
||||
|
@ -282,12 +284,12 @@ class UiRequest(object):
|
|||
headers["Cache-Control"] = "no-cache, no-store, private, must-revalidate, max-age=0" # No caching at all
|
||||
headers["Content-Type"] = content_type
|
||||
headers.update(extra_headers)
|
||||
return self.start_response(status_texts[status], headers.items())
|
||||
return self.start_response(status_texts[status], list(headers.items()))
|
||||
|
||||
# Renders a template
|
||||
def render(self, template_path, *args, **kwargs):
|
||||
template = open(template_path).read()
|
||||
for key, val in kwargs.items():
|
||||
for key, val in list(kwargs.items()):
|
||||
template = template.replace("{%s}" % key, "%s" % val)
|
||||
return template.encode("utf8")
|
||||
|
||||
|
@ -296,7 +298,7 @@ class UiRequest(object):
|
|||
# Redirect to an url
|
||||
def actionRedirect(self, url):
|
||||
self.start_response('301 Redirect', [('Location', str(url))])
|
||||
yield "Location changed: %s" % url
|
||||
yield b"Location changed: %s" % url.encode("utf8")
|
||||
|
||||
def actionIndex(self):
|
||||
return self.actionRedirect("/" + config.homepage)
|
||||
|
@ -447,11 +449,11 @@ class UiRequest(object):
|
|||
content = site.content_manager.contents["content.json"]
|
||||
if content.get("background-color"):
|
||||
background_color = content.get("background-color-%s" % theme, content["background-color"])
|
||||
body_style += "background-color: %s;" % cgi.escape(background_color, True)
|
||||
body_style += "background-color: %s;" % html.escape(background_color)
|
||||
if content.get("viewport"):
|
||||
meta_tags += '<meta name="viewport" id="viewport" content="%s">' % cgi.escape(content["viewport"], True)
|
||||
meta_tags += '<meta name="viewport" id="viewport" content="%s">' % html.escape(content["viewport"])
|
||||
if content.get("favicon"):
|
||||
meta_tags += '<link rel="icon" href="%s%s">' % (root_url, cgi.escape(content["favicon"], True))
|
||||
meta_tags += '<link rel="icon" href="%s%s">' % (root_url, html.escape(content["favicon"]))
|
||||
if content.get("postmessage_nonce_security"):
|
||||
postmessage_nonce_security = "true"
|
||||
|
||||
|
@ -470,7 +472,7 @@ class UiRequest(object):
|
|||
file_url=re.escape(file_url),
|
||||
file_inner_path=re.escape(file_inner_path),
|
||||
address=site.address,
|
||||
title=cgi.escape(title, True),
|
||||
title=html.escape(title),
|
||||
body_style=body_style,
|
||||
meta_tags=meta_tags,
|
||||
query_string=re.escape(inner_query_string),
|
||||
|
@ -612,7 +614,7 @@ class UiRequest(object):
|
|||
return self.error400()
|
||||
|
||||
def actionSiteAdd(self):
|
||||
post = dict(cgi.parse_qsl(self.env["wsgi.input"].read()))
|
||||
post = dict(urllib.parse.parse_qsl(self.env["wsgi.input"].read()))
|
||||
if post["add_nonce"] not in self.server.add_nonces:
|
||||
return self.error403("Add nonce error.")
|
||||
self.server.add_nonces.remove(post["add_nonce"])
|
||||
|
@ -626,7 +628,7 @@ class UiRequest(object):
|
|||
|
||||
self.sendHeader(200, "text/html", noscript=True)
|
||||
template = open("src/Ui/template/site_add.html").read()
|
||||
template = template.replace("{url}", cgi.escape(self.env["PATH_INFO"], True))
|
||||
template = template.replace("{url}", html.escape(self.env["PATH_INFO"]))
|
||||
template = template.replace("{address}", path_parts["address"])
|
||||
template = template.replace("{add_nonce}", self.getAddNonce())
|
||||
return template
|
||||
|
@ -634,7 +636,7 @@ class UiRequest(object):
|
|||
def replaceHtmlVariables(self, block, path_parts):
|
||||
user = self.getCurrentUser()
|
||||
themeclass = "theme-%-6s" % re.sub("[^a-z]", "", user.settings.get("theme", "light"))
|
||||
block = block.replace("{themeclass}", themeclass.encode("utf8"))
|
||||
block = block.replace(b"{themeclass}", themeclass.encode("utf8"))
|
||||
|
||||
if path_parts:
|
||||
site = self.server.sites.get(path_parts.get("address"))
|
||||
|
@ -642,7 +644,7 @@ class UiRequest(object):
|
|||
modified = int(time.time())
|
||||
else:
|
||||
modified = int(site.content_manager.contents["content.json"]["modified"])
|
||||
block = block.replace("{site_modified}", str(modified))
|
||||
block = block.replace(b"{site_modified}", str(modified).encode("utf8"))
|
||||
|
||||
return block
|
||||
|
||||
|
@ -708,14 +710,14 @@ class UiRequest(object):
|
|||
wrapper_key = self.get["wrapper_key"]
|
||||
# Find site by wrapper_key
|
||||
site = None
|
||||
for site_check in self.server.sites.values():
|
||||
for site_check in list(self.server.sites.values()):
|
||||
if site_check.settings["wrapper_key"] == wrapper_key:
|
||||
site = site_check
|
||||
|
||||
if site: # Correct wrapper key
|
||||
try:
|
||||
user = self.getCurrentUser()
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
self.log.error("Error in data/user.json: %s" % err)
|
||||
return self.error500()
|
||||
if not user:
|
||||
|
@ -726,7 +728,7 @@ class UiRequest(object):
|
|||
self.server.websockets.append(ui_websocket)
|
||||
ui_websocket.start()
|
||||
self.server.websockets.remove(ui_websocket)
|
||||
for site_check in self.server.sites.values():
|
||||
for site_check in list(self.server.sites.values()):
|
||||
# Remove websocket from every site (admin sites allowed to join other sites event channels)
|
||||
if ui_websocket in site_check.websockets:
|
||||
site_check.websockets.remove(ui_websocket)
|
||||
|
@ -744,10 +746,10 @@ class UiRequest(object):
|
|||
import sys
|
||||
last_error = sys.modules["main"].DebugHook.last_error
|
||||
if last_error:
|
||||
raise last_error[0], last_error[1], last_error[2]
|
||||
raise last_error[0](last_error[1]).with_traceback(last_error[2])
|
||||
else:
|
||||
self.sendHeader()
|
||||
return "No error! :)"
|
||||
return [b"No error! :)"]
|
||||
|
||||
# Just raise an error to get console
|
||||
def actionConsole(self):
|
||||
|
@ -793,19 +795,19 @@ class UiRequest(object):
|
|||
# Send file not found error
|
||||
def error404(self, path=""):
|
||||
self.sendHeader(404)
|
||||
return self.formatError("Not Found", cgi.escape(path.encode("utf8")), details=False)
|
||||
return self.formatError("Not Found", html.escape(path), details=False)
|
||||
|
||||
# Internal server error
|
||||
def error500(self, message=":("):
|
||||
self.sendHeader(500)
|
||||
return self.formatError("Server error", cgi.escape(message))
|
||||
return self.formatError("Server error", html.escape(message))
|
||||
|
||||
def formatError(self, title, message, details=True):
|
||||
import sys
|
||||
import gevent
|
||||
|
||||
if details:
|
||||
details = {key: val for key, val in self.env.items() if hasattr(val, "endswith") and "COOKIE" not in key}
|
||||
details = {key: val for key, val in list(self.env.items()) if hasattr(val, "endswith") and "COOKIE" not in key}
|
||||
details["version_zeronet"] = "%s r%s" % (config.version, config.rev)
|
||||
details["version_python"] = sys.version
|
||||
details["version_gevent"] = gevent.__version__
|
||||
|
|
|
@ -7,12 +7,13 @@ import gevent
|
|||
|
||||
from gevent.pywsgi import WSGIServer
|
||||
from gevent.pywsgi import WSGIHandler
|
||||
from lib.geventwebsocket.handler import WebSocketHandler
|
||||
from geventwebsocket.handler import WebSocketHandler
|
||||
|
||||
from UiRequest import UiRequest
|
||||
from .UiRequest import UiRequest
|
||||
from Site import SiteManager
|
||||
from Config import config
|
||||
from Debug import Debug
|
||||
import importlib
|
||||
|
||||
|
||||
# Skip websocket handler if not necessary
|
||||
|
@ -30,7 +31,7 @@ class UiWSGIHandler(WSGIHandler):
|
|||
ws_handler = WebSocketHandler(*self.args, **self.kwargs)
|
||||
ws_handler.__dict__ = self.__dict__ # Match class variables
|
||||
ws_handler.run_application()
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
logging.error("UiWSGIHandler websocket error: %s" % Debug.formatException(err))
|
||||
if config.debug: # Allow websocket errors to appear on /Debug
|
||||
import sys
|
||||
|
@ -38,7 +39,7 @@ class UiWSGIHandler(WSGIHandler):
|
|||
else: # Standard HTTP request
|
||||
try:
|
||||
super(UiWSGIHandler, self).run_application()
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
logging.error("UiWSGIHandler error: %s" % Debug.formatException(err))
|
||||
if config.debug: # Allow websocket errors to appear on /Debug
|
||||
import sys
|
||||
|
@ -101,7 +102,7 @@ class UiServer:
|
|||
else: # Catch and display the error
|
||||
try:
|
||||
return ui_request.route(path)
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
logging.debug("UiRequest error: %s" % Debug.formatException(err))
|
||||
return ui_request.error500("Err: %s" % Debug.formatException(err))
|
||||
|
||||
|
@ -110,8 +111,8 @@ class UiServer:
|
|||
global UiRequest
|
||||
import imp
|
||||
import sys
|
||||
reload(sys.modules["User.UserManager"])
|
||||
reload(sys.modules["Ui.UiWebsocket"])
|
||||
importlib.reload(sys.modules["User.UserManager"])
|
||||
importlib.reload(sys.modules["Ui.UiWebsocket"])
|
||||
UiRequest = imp.load_source("UiRequest", "src/Ui/UiRequest.py").UiRequest
|
||||
# UiRequest.reload()
|
||||
|
||||
|
@ -128,7 +129,7 @@ class UiServer:
|
|||
try:
|
||||
from werkzeug.debug import DebuggedApplication
|
||||
handler = DebuggedApplication(self.handleRequest, evalex=True)
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
self.log.info("%s: For debugging please download Werkzeug (http://werkzeug.pocoo.org/)" % err)
|
||||
from Debug import DebugReloader
|
||||
self.log.write = lambda msg: self.log.debug(msg.strip()) # For Wsgi access.log
|
||||
|
@ -147,14 +148,14 @@ class UiServer:
|
|||
url = "http://%s:%s/%s" % (config.ui_ip if config.ui_ip != "*" else "127.0.0.1", config.ui_port, config.homepage)
|
||||
gevent.spawn_later(0.3, browser.open, url, new=2)
|
||||
except Exception as err:
|
||||
print "Error starting browser: %s" % err
|
||||
print("Error starting browser: %s" % err)
|
||||
|
||||
self.server = WSGIServer((self.ip, self.port), handler, handler_class=UiWSGIHandler, log=self.log)
|
||||
self.server.sockets = {}
|
||||
self.afterStarted()
|
||||
try:
|
||||
self.server.serve_forever()
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
self.log.error("Web interface bind error, must be running already, exiting.... %s" % err)
|
||||
sys.modules["main"].file_server.stop()
|
||||
self.log.debug("Stopped.")
|
||||
|
@ -163,18 +164,18 @@ class UiServer:
|
|||
self.log.debug("Stopping...")
|
||||
# Close WS sockets
|
||||
if "clients" in dir(self.server):
|
||||
for client in self.server.clients.values():
|
||||
for client in list(self.server.clients.values()):
|
||||
client.ws.close()
|
||||
# Close http sockets
|
||||
sock_closed = 0
|
||||
for sock in self.server.sockets.values():
|
||||
for sock in list(self.server.sockets.values()):
|
||||
try:
|
||||
sock.send("bye")
|
||||
sock.send(b"bye")
|
||||
sock.shutdown(socket.SHUT_RDWR)
|
||||
# sock._sock.close()
|
||||
# sock.close()
|
||||
sock_closed += 1
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
self.log.debug("Http connection close error: %s" % err)
|
||||
self.log.debug("Socket closed: %s" % sock_closed)
|
||||
time.sleep(0.1)
|
||||
|
|
|
@ -55,7 +55,7 @@ class UiWebsocket(object):
|
|||
else:
|
||||
try:
|
||||
self.addHomepageNotifications()
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
self.log.error("Uncaught Exception: " + Debug.formatException(err))
|
||||
|
||||
for notification in self.site.notifications: # Send pending notification messages
|
||||
|
@ -73,7 +73,7 @@ class UiWebsocket(object):
|
|||
break
|
||||
else:
|
||||
message = ws.receive()
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
self.log.error("WebSocket receive error: %s" % Debug.formatException(err))
|
||||
break
|
||||
|
||||
|
@ -81,7 +81,7 @@ class UiWebsocket(object):
|
|||
try:
|
||||
req = json.loads(message)
|
||||
self.handleRequest(req)
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
if config.debug: # Allow websocket errors to appear on /Debug
|
||||
sys.modules["main"].DebugHook.handleError()
|
||||
self.log.error("WebSocket handleRequest error: %s \n %s" % (Debug.formatException(err), message))
|
||||
|
@ -99,7 +99,7 @@ class UiWebsocket(object):
|
|||
if ("0.0.0.0" == bind_ip or "*" == bind_ip) and (not whitelist):
|
||||
self.site.notifications.append([
|
||||
"error",
|
||||
_(u"You are not going to set up a public gateway. However, <b>your Web UI is<br>" +
|
||||
_("You are not going to set up a public gateway. However, <b>your Web UI is<br>" +
|
||||
"open to the whole Internet.</b> " +
|
||||
"Please check your configuration.")
|
||||
])
|
||||
|
@ -114,7 +114,7 @@ class UiWebsocket(object):
|
|||
elif config.tor == "always" and file_server.tor_manager.start_onions:
|
||||
self.site.notifications.append([
|
||||
"done",
|
||||
_(u"""
|
||||
_("""
|
||||
{_[Tor mode active, every connection using Onion route.]}<br>
|
||||
{_[Successfully started Tor onion hidden services.]}
|
||||
"""),
|
||||
|
@ -123,7 +123,7 @@ class UiWebsocket(object):
|
|||
elif config.tor == "always" and file_server.tor_manager.start_onions is not False:
|
||||
self.site.notifications.append([
|
||||
"error",
|
||||
_(u"""
|
||||
_("""
|
||||
{_[Tor mode active, every connection using Onion route.]}<br>
|
||||
{_[Unable to start hidden services, please check your config.]}
|
||||
"""),
|
||||
|
@ -132,7 +132,7 @@ class UiWebsocket(object):
|
|||
elif file_server.tor_manager.start_onions:
|
||||
self.site.notifications.append([
|
||||
"done",
|
||||
_(u"""
|
||||
_("""
|
||||
{_[Successfully started Tor onion hidden services.]}<br>
|
||||
{_[For faster connections open <b>{0}</b> port on your router.]}
|
||||
""").format(config.fileserver_port),
|
||||
|
@ -141,7 +141,7 @@ class UiWebsocket(object):
|
|||
else:
|
||||
self.site.notifications.append([
|
||||
"error",
|
||||
_(u"""
|
||||
_("""
|
||||
{_[Your connection is restricted. Please, open <b>{0}</b> port on your router]}<br>
|
||||
{_[or configure Tor to become a full member of the ZeroNet network.]}
|
||||
""").format(config.fileserver_port),
|
||||
|
@ -213,7 +213,7 @@ class UiWebsocket(object):
|
|||
message = self.send_queue.pop(0)
|
||||
self.ws.send(json.dumps(message))
|
||||
self.state["sending"] = False
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
self.log.debug("Websocket send error: %s" % Debug.formatException(err))
|
||||
self.state["sending"] = False
|
||||
|
||||
|
@ -230,7 +230,7 @@ class UiWebsocket(object):
|
|||
result = func(*args, **kwargs)
|
||||
if result is not None:
|
||||
self.response(args[0], result)
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
if config.debug: # Allow websocket errors to appear on /Debug
|
||||
sys.modules["main"].DebugHook.handleError()
|
||||
self.log.error("WebSocket handleRequest error: %s" % Debug.formatException(err))
|
||||
|
@ -403,14 +403,14 @@ class UiWebsocket(object):
|
|||
def actionAnnouncerStats(self, to):
|
||||
back = {}
|
||||
trackers = self.site.announcer.getTrackers()
|
||||
for site in self.server.sites.values():
|
||||
for tracker, stats in site.announcer.stats.iteritems():
|
||||
for site in list(self.server.sites.values()):
|
||||
for tracker, stats in site.announcer.stats.items():
|
||||
if tracker not in trackers:
|
||||
continue
|
||||
if tracker not in back:
|
||||
back[tracker] = {}
|
||||
is_latest_data = bool(stats["time_request"] > back[tracker].get("time_request", 0) and stats["status"])
|
||||
for key, val in stats.iteritems():
|
||||
for key, val in stats.items():
|
||||
if key.startswith("num_"):
|
||||
back[tracker][key] = back[tracker].get(key, 0) + val
|
||||
elif is_latest_data:
|
||||
|
@ -548,7 +548,7 @@ class UiWebsocket(object):
|
|||
if notification:
|
||||
self.cmd("notification", [
|
||||
"info",
|
||||
_(u"""{_[Your network connection is restricted. Please, open <b>{0}</b> port]}<br>
|
||||
_("""{_[Your network connection is restricted. Please, open <b>{0}</b> port]}<br>
|
||||
{_[on your router to make your site accessible for everyone.]}""").format(config.fileserver_port)
|
||||
])
|
||||
if callback:
|
||||
|
@ -580,7 +580,7 @@ class UiWebsocket(object):
|
|||
self.cmd(
|
||||
"confirm",
|
||||
[_["This file still in sync, if you write it now, then the previous content may be lost."], _["Write content anyway"]],
|
||||
lambda (res): self.actionFileWrite(to, inner_path, content_base64, ignore_bad_files=True)
|
||||
lambda res: self.actionFileWrite(to, inner_path, content_base64, ignore_bad_files=True)
|
||||
)
|
||||
return False
|
||||
|
||||
|
@ -601,7 +601,7 @@ class UiWebsocket(object):
|
|||
shutil.copyfileobj(f_old, f_new)
|
||||
|
||||
self.site.storage.write(inner_path, content)
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
self.log.error("File write error: %s" % Debug.formatException(err))
|
||||
return self.response(to, {"error": "Write error: %s" % Debug.formatException(err)})
|
||||
|
||||
|
@ -636,7 +636,7 @@ class UiWebsocket(object):
|
|||
if need_delete:
|
||||
try:
|
||||
self.site.storage.delete(inner_path)
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
self.log.error("File delete error: %s" % err)
|
||||
return self.response(to, {"error": "Delete error: %s" % err})
|
||||
|
||||
|
@ -676,7 +676,7 @@ class UiWebsocket(object):
|
|||
rows = []
|
||||
try:
|
||||
res = self.site.storage.query(query, params)
|
||||
except Exception, err: # Response the error to client
|
||||
except Exception as err: # Response the error to client
|
||||
self.log.error("DbQuery error: %s" % err)
|
||||
return self.response(to, {"error": str(err)})
|
||||
# Convert result to dict
|
||||
|
@ -693,7 +693,7 @@ class UiWebsocket(object):
|
|||
with gevent.Timeout(timeout):
|
||||
self.site.needFile(inner_path, priority=6)
|
||||
body = self.site.storage.read(inner_path, "rb")
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
self.log.error("%s fileGet error: %s" % (inner_path, err))
|
||||
body = None
|
||||
if body and format == "base64":
|
||||
|
@ -705,7 +705,7 @@ class UiWebsocket(object):
|
|||
try:
|
||||
with gevent.Timeout(timeout):
|
||||
self.site.needFile(inner_path, priority=6)
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
return self.response(to, {"error": str(err)})
|
||||
return self.response(to, "ok")
|
||||
|
||||
|
@ -725,7 +725,7 @@ class UiWebsocket(object):
|
|||
rules = self.site.content_manager.getRules(inner_path, content)
|
||||
if inner_path.endswith("content.json") and rules:
|
||||
if content:
|
||||
rules["current_size"] = len(json.dumps(content)) + sum([file["size"] for file in content.get("files", {}).values()])
|
||||
rules["current_size"] = len(json.dumps(content)) + sum([file["size"] for file in list(content.get("files", {}).values())])
|
||||
else:
|
||||
rules["current_size"] = 0
|
||||
return self.response(to, rules)
|
||||
|
@ -749,11 +749,11 @@ class UiWebsocket(object):
|
|||
self.cmd(
|
||||
"confirm",
|
||||
[body, _("Change it to {auth_type}/{auth_user_name}@{domain}")],
|
||||
lambda (res): self.cbCertAddConfirm(to, domain, auth_type, auth_user_name, cert)
|
||||
lambda res: self.cbCertAddConfirm(to, domain, auth_type, auth_user_name, cert)
|
||||
)
|
||||
else:
|
||||
self.response(to, "Not changed")
|
||||
except Exception, err:
|
||||
except Exception as err:
|
||||
self.log.error("CertAdd error: Exception - %s (%s)" % (err.message, Debug.formatException(err)))
|
||||
self.response(to, {"error": err.message})
|
||||
|
||||
|
@ -781,7 +781,7 @@ class UiWebsocket(object):
|
|||
if not accepted_domains and not accepted_pattern: # Accept any if no filter defined
|
||||
accept_any = True
|
||||
|
||||
for domain, cert in self.user.certs.items():
|
||||
for domain, cert in list(self.user.certs.items()):
|
||||
if auth_address == cert["auth_address"] and domain == site_data.get("cert"):
|
||||
active = domain
|
||||
title = cert["auth_user_name"] + "@" + domain
|
||||
|
@ -797,7 +797,7 @@ class UiWebsocket(object):
|
|||
for domain, account, css_class in accounts:
|
||||
if domain == active:
|
||||
css_class += " active" # Currently selected option
|
||||
title = _(u"<b>%s</b> <small>({_[currently selected]})</small>") % account
|
||||
title = _("<b>%s</b> <small>({_[currently selected]})</small>") % account
|
||||
else:
|
||||
title = "<b>%s</b>" % account
|
||||
body += "<a href='#Select+account' class='select select-close cert %s' title='%s'>%s</a>" % (css_class, domain, title)
|
||||
|
@ -807,7 +807,7 @@ class UiWebsocket(object):
|
|||
# body+= "<small style='margin-top: 10px; display: block'>Accepted authorization providers by the site:</small>"
|
||||
body += "<div style='background-color: #F7F7F7; margin-right: -30px'>"
|
||||
for domain in more_domains:
|
||||
body += _(u"""
|
||||
body += _("""
|
||||
<a href='/{domain}' target='_top' class='select'>
|
||||
<small style='float: right; margin-right: 40px; margin-top: -1px'>{_[Register]} »</small>{domain}
|
||||
</a>
|
||||
|
@ -858,7 +858,7 @@ class UiWebsocket(object):
|
|||
def actionCertList(self, to):
|
||||
back = []
|
||||
auth_address = self.user.getAuthAddress(self.site.address)
|
||||
for domain, cert in self.user.certs.items():
|
||||
for domain, cert in list(self.user.certs.items()):
|
||||
back.append({
|
||||
"auth_address": cert["auth_address"],
|
||||
"auth_type": cert["auth_type"],
|
||||
|
@ -872,7 +872,7 @@ class UiWebsocket(object):
|
|||
def actionSiteList(self, to, connecting_sites=False):
|
||||
ret = []
|
||||
SiteManager.site_manager.load() # Reload sites
|
||||
for site in self.server.sites.values():
|
||||
for site in list(self.server.sites.values()):
|
||||
if not site.content_manager.contents.get("content.json") and not connecting_sites:
|
||||
continue # Incomplete site
|
||||
ret.append(self.formatSiteInfo(site, create_user=False)) # Dont generate the auth_address on listing
|
||||
|
@ -883,7 +883,7 @@ class UiWebsocket(object):
|
|||
if channel not in self.channels: # Add channel to channels
|
||||
self.channels.append(channel)
|
||||
|
||||
for site in self.server.sites.values(): # Add websocket to every channel
|
||||
for site in list(self.server.sites.values()): # Add websocket to every channel
|
||||
if self not in site.websockets:
|
||||
site.websockets.append(self)
|
||||
|
||||
|
@ -970,7 +970,7 @@ class UiWebsocket(object):
|
|||
|
||||
site = self.server.sites.get(address)
|
||||
if site.bad_files:
|
||||
for bad_inner_path in site.bad_files.keys():
|
||||
for bad_inner_path in list(site.bad_files.keys()):
|
||||
is_user_file = "cert_signers" in site.content_manager.getRules(bad_inner_path)
|
||||
if not is_user_file:
|
||||
self.cmd("notification", ["error", _["Clone error: Site still in sync"]])
|
||||
|
@ -982,7 +982,7 @@ class UiWebsocket(object):
|
|||
self.cmd(
|
||||
"confirm",
|
||||
[_["Clone site <b>%s</b>?"] % address, _["Clone"]],
|
||||
lambda (res): self.cbSiteClone(to, address, root_inner_path, target_address)
|
||||
lambda res: self.cbSiteClone(to, address, root_inner_path, target_address)
|
||||
)
|
||||
|
||||
def actionSiteSetLimit(self, to, size_limit):
|
||||
|
@ -1013,7 +1013,7 @@ class UiWebsocket(object):
|
|||
min_mtime = self.site.settings["cache"].get("time_modified_files_check")
|
||||
modified_files = self.site.settings["cache"].get("modified_files", [])
|
||||
|
||||
inner_paths = [content_inner_path] + content.get("includes", {}).keys() + content.get("files", {}).keys()
|
||||
inner_paths = [content_inner_path] + list(content.get("includes", {}).keys()) + list(content.get("files", {}).keys())
|
||||
|
||||
for relative_inner_path in inner_paths:
|
||||
inner_path = helper.getDirname(content_inner_path) + relative_inner_path
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
from UiServer import UiServer
|
||||
from UiRequest import UiRequest
|
||||
from UiWebsocket import UiWebsocket
|
||||
from .UiServer import UiServer
|
||||
from .UiRequest import UiRequest
|
||||
from .UiWebsocket import UiWebsocket
|
Loading…
Add table
Add a link
Reference in a new issue