Merge commit 'refs/merge-requests/9' of git://gitorious.org/radicale/radicale into merge-requests/9
This commit is contained in:
commit
7e1815cbeb
@ -81,10 +81,10 @@ for option in parser.option_list:
|
|||||||
if key:
|
if key:
|
||||||
section = "logging" if key == "debug" else "server"
|
section = "logging" if key == "debug" else "server"
|
||||||
value = getattr(options, key)
|
value = getattr(options, key)
|
||||||
radicale.config.set(section, key, value)
|
radicale.config.set(section, key, str(value))
|
||||||
|
|
||||||
# Start logging
|
# Start logging
|
||||||
radicale.log.start(options.debug)
|
radicale.log.start()
|
||||||
|
|
||||||
# Fork if Radicale is launched as daemon
|
# Fork if Radicale is launched as daemon
|
||||||
if options.daemon:
|
if options.daemon:
|
||||||
|
@ -190,7 +190,11 @@ class Application(object):
|
|||||||
|
|
||||||
# Set content length
|
# Set content length
|
||||||
if answer:
|
if answer:
|
||||||
log.LOGGER.debug("Response content:\n%s" % answer)
|
# decoding the answer for logging purposes on Python 3
|
||||||
|
log_answer = answer
|
||||||
|
if not isinstance(log_answer, str):
|
||||||
|
log_answer = log_answer.decode(config.get("encoding", "request"))
|
||||||
|
log.LOGGER.debug("Response content:\n%s" % log_answer)
|
||||||
headers["Content-Length"] = "%i" % len(answer)
|
headers["Content-Length"] = "%i" % len(answer)
|
||||||
|
|
||||||
# Start response
|
# Start response
|
||||||
|
@ -65,5 +65,5 @@ def has_right(owner, user, password):
|
|||||||
if line.strip():
|
if line.strip():
|
||||||
login, hash_value = line.strip().split(":")
|
login, hash_value = line.strip().split(":")
|
||||||
if login == user and (not PERSONAL or user == owner):
|
if login == user and (not PERSONAL or user == owner):
|
||||||
return locals()["_%s" % ENCRYPTION](hash_value, password)
|
return globals()["_%s" % ENCRYPTION](hash_value, password)
|
||||||
return False
|
return False
|
||||||
|
@ -35,10 +35,8 @@ from radicale import config
|
|||||||
LOGGER = logging.getLogger()
|
LOGGER = logging.getLogger()
|
||||||
FILENAME = os.path.expanduser(config.get("logging", "config"))
|
FILENAME = os.path.expanduser(config.get("logging", "config"))
|
||||||
|
|
||||||
def start(debug=False):
|
def start():
|
||||||
"""Start the logging according to the configuration."""
|
"""Start the logging according to the configuration."""
|
||||||
if debug:
|
|
||||||
LOGGER.setLevel(logging.DEBUG)
|
|
||||||
|
|
||||||
if os.path.exists(FILENAME):
|
if os.path.exists(FILENAME):
|
||||||
# Configuration taken from file
|
# Configuration taken from file
|
||||||
@ -48,3 +46,8 @@ def start(debug=False):
|
|||||||
handler = logging.StreamHandler(sys.stdout)
|
handler = logging.StreamHandler(sys.stdout)
|
||||||
handler.setFormatter(logging.Formatter("%(message)s"))
|
handler.setFormatter(logging.Formatter("%(message)s"))
|
||||||
LOGGER.addHandler(handler)
|
LOGGER.addHandler(handler)
|
||||||
|
|
||||||
|
if config.getboolean("logging", "debug"):
|
||||||
|
LOGGER.setLevel(logging.DEBUG)
|
||||||
|
for handler in LOGGER.handlers:
|
||||||
|
handler.setLevel(logging.DEBUG)
|
||||||
|
@ -38,6 +38,26 @@ NAMESPACES = {
|
|||||||
"CS": "http://calendarserver.org/ns/"}
|
"CS": "http://calendarserver.org/ns/"}
|
||||||
|
|
||||||
|
|
||||||
|
for short, url in NAMESPACES.items():
|
||||||
|
ET._namespace_map[url] = short
|
||||||
|
|
||||||
|
|
||||||
|
def _et_indent(elem, level=0):
|
||||||
|
i = "\n" + level * " "
|
||||||
|
if len(elem):
|
||||||
|
if not elem.text or not elem.text.strip():
|
||||||
|
elem.text = i + " "
|
||||||
|
if not elem.tail or not elem.tail.strip():
|
||||||
|
elem.tail = i
|
||||||
|
for elem in elem:
|
||||||
|
_et_indent(elem, level+1)
|
||||||
|
if not elem.tail or not elem.tail.strip():
|
||||||
|
elem.tail = i
|
||||||
|
else:
|
||||||
|
if level and (not elem.tail or not elem.tail.strip()):
|
||||||
|
elem.tail = i
|
||||||
|
|
||||||
|
|
||||||
def _tag(short_name, local):
|
def _tag(short_name, local):
|
||||||
"""Get XML Clark notation {uri(``short_name``)}``local``."""
|
"""Get XML Clark notation {uri(``short_name``)}``local``."""
|
||||||
return "{%s}%s" % (NAMESPACES[short_name], local)
|
return "{%s}%s" % (NAMESPACES[short_name], local)
|
||||||
@ -77,6 +97,9 @@ def delete(path, calendar):
|
|||||||
status.text = _response(200)
|
status.text = _response(200)
|
||||||
response.append(status)
|
response.append(status)
|
||||||
|
|
||||||
|
if config.getboolean("logging", "debug"):
|
||||||
|
_et_indent(multistatus)
|
||||||
|
|
||||||
return ET.tostring(multistatus, config.get("encoding", "request"))
|
return ET.tostring(multistatus, config.get("encoding", "request"))
|
||||||
|
|
||||||
|
|
||||||
@ -90,8 +113,7 @@ def propfind(path, xml_request, calendar, depth):
|
|||||||
root = ET.fromstring(xml_request)
|
root = ET.fromstring(xml_request)
|
||||||
|
|
||||||
prop_element = root.find(_tag("D", "prop"))
|
prop_element = root.find(_tag("D", "prop"))
|
||||||
prop_list = prop_element.getchildren()
|
props = [prop.tag for prop in prop_element]
|
||||||
props = [prop.tag for prop in prop_list]
|
|
||||||
|
|
||||||
# Writing answer
|
# Writing answer
|
||||||
multistatus = ET.Element(_tag("D", "multistatus"))
|
multistatus = ET.Element(_tag("D", "multistatus"))
|
||||||
@ -179,6 +201,9 @@ def propfind(path, xml_request, calendar, depth):
|
|||||||
status.text = _response(200)
|
status.text = _response(200)
|
||||||
propstat.append(status)
|
propstat.append(status)
|
||||||
|
|
||||||
|
if config.getboolean("logging", "debug"):
|
||||||
|
_et_indent(multistatus)
|
||||||
|
|
||||||
return ET.tostring(multistatus, config.get("encoding", "request"))
|
return ET.tostring(multistatus, config.get("encoding", "request"))
|
||||||
|
|
||||||
|
|
||||||
@ -194,10 +219,9 @@ def proppatch(path, xml_request, calendar):
|
|||||||
|
|
||||||
for action in ("set", "remove"):
|
for action in ("set", "remove"):
|
||||||
action_element = root.find(_tag("D", action))
|
action_element = root.find(_tag("D", action))
|
||||||
if action_element:
|
if action_element is not None:
|
||||||
prop_element = action_element.find(_tag("D", "prop"))
|
prop_element = action_element.find(_tag("D", "prop"))
|
||||||
prop_list = prop_element.getchildren()
|
props.extend(prop.tag for prop in prop_element)
|
||||||
props.extend(prop.tag for prop in prop_list)
|
|
||||||
|
|
||||||
# Writing answer
|
# Writing answer
|
||||||
multistatus = ET.Element(_tag("D", "multistatus"))
|
multistatus = ET.Element(_tag("D", "multistatus"))
|
||||||
@ -223,6 +247,9 @@ def proppatch(path, xml_request, calendar):
|
|||||||
status.text = _response(200)
|
status.text = _response(200)
|
||||||
propstat.append(status)
|
propstat.append(status)
|
||||||
|
|
||||||
|
if config.getboolean("logging", "debug"):
|
||||||
|
_et_indent(multistatus)
|
||||||
|
|
||||||
return ET.tostring(multistatus, config.get("encoding", "request"))
|
return ET.tostring(multistatus, config.get("encoding", "request"))
|
||||||
|
|
||||||
|
|
||||||
@ -247,8 +274,7 @@ def report(path, xml_request, calendar):
|
|||||||
root = ET.fromstring(xml_request)
|
root = ET.fromstring(xml_request)
|
||||||
|
|
||||||
prop_element = root.find(_tag("D", "prop"))
|
prop_element = root.find(_tag("D", "prop"))
|
||||||
prop_list = prop_element.getchildren()
|
props = [prop.tag for prop in prop_element]
|
||||||
props = [prop.tag for prop in prop_list]
|
|
||||||
|
|
||||||
if calendar:
|
if calendar:
|
||||||
if root.tag == _tag("C", "calendar-multiget"):
|
if root.tag == _tag("C", "calendar-multiget"):
|
||||||
@ -303,4 +329,7 @@ def report(path, xml_request, calendar):
|
|||||||
status.text = _response(200)
|
status.text = _response(200)
|
||||||
propstat.append(status)
|
propstat.append(status)
|
||||||
|
|
||||||
|
if config.getboolean("logging", "debug"):
|
||||||
|
_et_indent(multistatus)
|
||||||
|
|
||||||
return ET.tostring(multistatus, config.get("encoding", "request"))
|
return ET.tostring(multistatus, config.get("encoding", "request"))
|
||||||
|
Loading…
Reference in New Issue
Block a user