sharing: improve backmapping
This commit is contained in:
@@ -129,7 +129,8 @@ def xml_propfind_response(
|
|||||||
|
|
||||||
if share:
|
if share:
|
||||||
# backmap
|
# backmap
|
||||||
uri = uri.replace(share['PathMapped'], share['PathOrToken'])
|
if uri.startswith(share['PathMapped']):
|
||||||
|
uri = share['PathOrToken'] + uri.removeprefix(share['PathMapped'])
|
||||||
if share_bday_automap and not uri.endswith("/"):
|
if share_bday_automap and not uri.endswith("/"):
|
||||||
uri = uri.rstrip(".vcf") + ".ics"
|
uri = uri.rstrip(".vcf") + ".ics"
|
||||||
|
|
||||||
@@ -217,7 +218,8 @@ def xml_propfind_response(
|
|||||||
child_element.text = xmlutils.make_href(base_prefix, path)
|
child_element.text = xmlutils.make_href(base_prefix, path)
|
||||||
if share:
|
if share:
|
||||||
# backmap
|
# backmap
|
||||||
child_element.text = child_element.text.replace(share['PathMapped'], share['PathOrToken'])
|
if child_element.text.startswith(share['PathMapped']):
|
||||||
|
child_element.text = share['PathOrToken'] + child_element.text.removeprefix(share['PathMapped'])
|
||||||
if share_bday_automap:
|
if share_bday_automap:
|
||||||
child_element.text = child_element.text.rstrip(".vcf") + ".ics"
|
child_element.text = child_element.text.rstrip(".vcf") + ".ics"
|
||||||
element.append(child_element)
|
element.append(child_element)
|
||||||
@@ -256,13 +258,15 @@ def xml_propfind_response(
|
|||||||
elif tag == xmlutils.make_clark("D:current-user-principal"):
|
elif tag == xmlutils.make_clark("D:current-user-principal"):
|
||||||
if user:
|
if user:
|
||||||
child_element = ET.Element(xmlutils.make_clark("D:href"))
|
child_element = ET.Element(xmlutils.make_clark("D:href"))
|
||||||
child_element.text = xmlutils.make_href(
|
|
||||||
base_prefix, "/%s/" % user)
|
|
||||||
if share:
|
if share:
|
||||||
# backmap
|
# backmap
|
||||||
child_element.text = child_element.text.replace(share['Owner'], share['User'])
|
child_element.text = xmlutils.make_href(
|
||||||
|
base_prefix, "/%s/" % share['User'])
|
||||||
if share_bday_automap:
|
if share_bday_automap:
|
||||||
child_element.text = child_element.text.rstrip(".vcf") + ".ics"
|
child_element.text = child_element.text.rstrip(".vcf") + ".ics"
|
||||||
|
else:
|
||||||
|
child_element.text = xmlutils.make_href(
|
||||||
|
base_prefix, "/%s/" % user)
|
||||||
element.append(child_element)
|
element.append(child_element)
|
||||||
else:
|
else:
|
||||||
element.append(ET.Element(
|
element.append(ET.Element(
|
||||||
|
|||||||
@@ -749,9 +749,12 @@ def xml_item_response(base_prefix: str, href: str,
|
|||||||
logger.debug("TRACE/REPORT/xml_report: href=%r", href_element.text)
|
logger.debug("TRACE/REPORT/xml_report: href=%r", href_element.text)
|
||||||
if share:
|
if share:
|
||||||
# backmap
|
# backmap
|
||||||
href_element.text = href_element.text.replace(share['PathMapped'], share['PathOrToken'])
|
if href_element.text.startswith(share['PathMapped']):
|
||||||
|
href_element.text = share['PathOrToken'] + href_element.text.removeprefix(share['PathMapped'])
|
||||||
if share_bday_automap:
|
if share_bday_automap:
|
||||||
href_element.text = href_element.text.rstrip(".vcf") + ".ics"
|
href_element.text = href_element.text.rstrip(".vcf") + ".ics"
|
||||||
|
if logger.isEnabledFor(logging.DEBUG):
|
||||||
|
logger.debug("TRACE/REPORT/xml_report: href=%r (backmapped)", href_element.text)
|
||||||
response.append(href_element)
|
response.append(href_element)
|
||||||
|
|
||||||
if found_item:
|
if found_item:
|
||||||
@@ -790,12 +793,17 @@ def retrieve_items(
|
|||||||
gets set to ``True``."""
|
gets set to ``True``."""
|
||||||
nonlocal collection_requested
|
nonlocal collection_requested
|
||||||
for hreference in hreferences:
|
for hreference in hreferences:
|
||||||
|
if logger.isEnabledFor(logging.DEBUG):
|
||||||
|
logger.debug("TRACE/REPORT/xml_report: hreference=%r", hreference)
|
||||||
if share:
|
if share:
|
||||||
# map back to owner
|
# map back to owner
|
||||||
hreference = hreference.replace(share['PathOrToken'], share['PathMapped'])
|
if hreference.startswith(share['PathOrToken']):
|
||||||
|
hreference = share['PathMapped'] + hreference.removeprefix(share['PathOrToken'])
|
||||||
if share['Conversion'] == "bday":
|
if share['Conversion'] == "bday":
|
||||||
if not hreference.endswith('/'):
|
if not hreference.endswith('/'):
|
||||||
hreference = hreference.rstrip(".ics") + ".vcf"
|
hreference = hreference.rstrip(".ics") + ".vcf"
|
||||||
|
if logger.isEnabledFor(logging.DEBUG):
|
||||||
|
logger.debug("TRACE/REPORT/xml_report: hreference=%r (backmapped)", hreference)
|
||||||
try:
|
try:
|
||||||
name = pathutils.name_from_path(hreference, collection)
|
name = pathutils.name_from_path(hreference, collection)
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
|
|||||||
Reference in New Issue
Block a user