@@ -85,7 +85,7 @@ def xml_propfind_response(
85
85
86
86
if isinstance (item , storage .BaseCollection ):
87
87
is_collection = True
88
- is_leaf = item .tag in ("VADDRESSBOOK" , "VCALENDAR" )
88
+ is_leaf = item .tag in ("VADDRESSBOOK" , "VCALENDAR" , "VSUBSCRIBED" )
89
89
collection = item
90
90
# Some clients expect collections to end with `/`
91
91
uri = pathutils .unstrip_path (item .path , True )
@@ -259,6 +259,10 @@ def xml_propfind_response(
259
259
child_element = ET .Element (
260
260
xmlutils .make_clark ("C:calendar" ))
261
261
element .append (child_element )
262
+ elif item .get_meta ("tag" ) == "VSUBSCRIBED" :
263
+ child_element = ET .Element (
264
+ xmlutils .make_clark ("CS:subscribed" ))
265
+ element .append (child_element )
262
266
child_element = ET .Element (xmlutils .make_clark ("D:collection" ))
263
267
element .append (child_element )
264
268
elif tag == xmlutils .make_clark ("RADICALE:displayname" ):
@@ -286,6 +290,13 @@ def xml_propfind_response(
286
290
element .text , _ = collection .sync ()
287
291
else :
288
292
is404 = True
293
+ elif tag == xmlutils .make_clark ("CS:source" ):
294
+ if is_leaf :
295
+ child_element = ET .Element (xmlutils .make_clark ("D:href" ))
296
+ child_element .text = item .get_meta ('CS:source' )
297
+ element .append (child_element )
298
+ else :
299
+ is404 = True
289
300
else :
290
301
human_tag = xmlutils .make_human_tag (tag )
291
302
tag_text = collection .get_meta (human_tag )
0 commit comments