Add CardDAV supported-address-data, update vCards to 4.0 (#1948)
* Add CardDAV supported-address-data, update vCards to 4.0 - radicale/app/propfind.py: Add CS:getctag and CR:supported-address-data properties to VADDRESSBOOK collections in allprop responses; implement CR:supported-address-data handler that advertises vCard 4.0 as preferred format with 3.0 fallback per RFC 6352 section 6.2.2 - radicale/tests/static/contact1.vcf: Update from vCard 3.0 to 4.0 format - radicale/tests/static/contact_multiple.vcf: Update both contact entries from vCard 3.0 to 4.0 format - radicale/tests/static/contact_photo_with_data_uri.vcf: Update from vCard 3.0 to 4.0 format; change PHOTO property from 3.0 syntax with ENCODING=b and TYPE parameters to 4.0 data URI syntax * Conditionally offer vCard 4.0 based on vobject version - Add vobject_supports_vcard4() helper function in utils.py - Modify propfind.py to only advertise vCard 4.0 if vobject >= 1.0.0 - Add vCard 3.0 static test files for fallback testing - Add tests for both vCard 3.0 and 4.0 contacts (v4 tests skipped if vobject < 1.0.0) - Add propfind tests for CR:supported-address-data property 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Default vCard fixtures to v3.0, add explicit v4 files - contact1.vcf: Change VERSION from 4.0 to 3.0 to make vCard 3.0 the default test fixture format, since vCard 3.0 is more widely supported - contact1_v3.vcf: Delete file as contact1.vcf now serves as the v3.0 fixture - contact1_v4.vcf: Add new file with VERSION 4.0 for explicit vCard 4.0 testing with vobject >= 1.0.0 - contact_multiple.vcf: Change VERSION from 4.0 to 3.0 for both contacts to align with new default - contact_multiple_v3.vcf: Delete file as contact_multiple.vcf now serves as the v3.0 fixture - contact_multiple_v4.vcf: Add new file with VERSION 4.0 for both contacts - contact_photo_with_data_uri.vcf: Change VERSION from 4.0 to 3.0 and update PHOTO property to use v3.0 format with ENCODING=b;TYPE=png parameters - contact_photo_with_data_uri_v3.vcf: Delete file as contact_photo_with_data_uri.vcf now serves as the v3.0 fixture - contact_photo_with_data_uri_v4.vcf: Add new file with VERSION 4.0 and v4.0 PHOTO data URI format - test_base.py: Update test methods to use renamed fixture files, with v3.0 tests using default fixtures and v4.0 tests using explicit _v4.vcf files --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -88,6 +88,17 @@ def package_version(name):
|
||||
return metadata.version(name)
|
||||
|
||||
|
||||
def vobject_supports_vcard4() -> bool:
|
||||
"""Check if vobject supports vCard 4.0 (requires version >= 1.0.0)."""
|
||||
try:
|
||||
version = package_version("vobject")
|
||||
parts = version.split(".")
|
||||
major = int(parts[0])
|
||||
return major >= 1
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
|
||||
def packages_version():
|
||||
versions = []
|
||||
versions.append("python=%s.%s.%s" % (sys.version_info[0], sys.version_info[1], sys.version_info[2]))
|
||||
|
||||
Reference in New Issue
Block a user