sharing: improve backmapping
This commit is contained in:
@@ -129,7 +129,8 @@ def xml_propfind_response(
|
||||
|
||||
if share:
|
||||
# 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("/"):
|
||||
uri = uri.rstrip(".vcf") + ".ics"
|
||||
|
||||
@@ -217,7 +218,8 @@ def xml_propfind_response(
|
||||
child_element.text = xmlutils.make_href(base_prefix, path)
|
||||
if share:
|
||||
# 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:
|
||||
child_element.text = child_element.text.rstrip(".vcf") + ".ics"
|
||||
element.append(child_element)
|
||||
@@ -256,13 +258,15 @@ def xml_propfind_response(
|
||||
elif tag == xmlutils.make_clark("D:current-user-principal"):
|
||||
if user:
|
||||
child_element = ET.Element(xmlutils.make_clark("D:href"))
|
||||
child_element.text = xmlutils.make_href(
|
||||
base_prefix, "/%s/" % user)
|
||||
if share:
|
||||
# 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:
|
||||
child_element.text = child_element.text.rstrip(".vcf") + ".ics"
|
||||
else:
|
||||
child_element.text = xmlutils.make_href(
|
||||
base_prefix, "/%s/" % user)
|
||||
element.append(child_element)
|
||||
else:
|
||||
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)
|
||||
if share:
|
||||
# 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:
|
||||
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)
|
||||
|
||||
if found_item:
|
||||
@@ -790,12 +793,17 @@ def retrieve_items(
|
||||
gets set to ``True``."""
|
||||
nonlocal collection_requested
|
||||
for hreference in hreferences:
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/REPORT/xml_report: hreference=%r", hreference)
|
||||
if share:
|
||||
# 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 not hreference.endswith('/'):
|
||||
hreference = hreference.rstrip(".ics") + ".vcf"
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/REPORT/xml_report: hreference=%r (backmapped)", hreference)
|
||||
try:
|
||||
name = pathutils.name_from_path(hreference, collection)
|
||||
except ValueError as e:
|
||||
|
||||
Reference in New Issue
Block a user