PROPFIND / returns 500: `type object 'Collection' has no attribute 'user'` (Storage.discover)
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 65/100
Research direction
Start in etesync_dav/radicale/storage.py and read Storage.discover() around the reported line 555, then trace how verify() sets the collection's user attribute. Reproduce with the authenticated depth-1 PROPFIND / request in the issue. Done when the request returns 207 and current-user-principal resolution works.
Written by the indexing model from the issue text.
Description
Description
After adding a user with etesync-dav manage add, every authenticated depth-1 PROPFIND / returns HTTP 500. This breaks account verification in macOS Calendar.app ("Unable to verify account details").
Environment
- etesync-dav 0.35.1 — both the prebuilt macOS binary and a source install from the v0.35.1 tag
- macOS 26.6.2, Apple Silicon (source install run under Rosetta x86_64, Python 3.9.6)
- Radicale 3.2.0 (the version etesync-dav pins)
- Server: hosted etesync.com account (api.etebase.com)
Log
[ERROR] An exception occurred during PROPFIND request on '/': type object 'Collection' has no attribute 'user'
Cause
etesync_dav/radicale/storage.py, in Storage.discover() (line 555 in 0.35.1):
yield cls(self, posixpath.join(path, cls.user))
user is only ever set as an instance attribute (per collection, in verify()), never on the class, so cls.user raises AttributeError. One-line fix:
yield cls(self, posixpath.join(path, self.user))
With that change, the root depth-1 PROPFIND / returns 207 and current-user-principal resolution works (I have this patch running locally).
Repro
curl -u user:pass -X PROPFIND -H 'Depth: 1' http://localhost:37358/ # 500
Also present on current master.
(With this fixed, a second 500 follows on the user-home PROPFIND — see my other issue: https://github.com/etesync/etesync-dav/issues/372 )
- Dominant language
- Python
- Stars
- 332
- Forks
- 61
- PR merge metrics
- No merged PRs in 30d
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from etesync/etesync-dav
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
etesync/etesync-dav#376 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
etesync/etesync-dav#355 · 2 comments ·
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
etesync/etesync-dav#375 · 1 reaction ·
-
PROPFIND on user home returns 500: `ValueError` in radicale `xmlutils.make_clark` (meta keys without `prefix:tag` form)Possibly taken @vitlav claimed this 36 days ago. Open
Difficulty 3/5 1-2 days Newbie friendliness 30/100
etesync/etesync-dav#372 ·
-
*systemd-shutdown[1]: Waiting for process: N (etesync-dav)* lasts ~80 seconds when shutting downOpen
Difficulty 3/5 1-2 days Newbie friendliness 45/100
etesync/etesync-dav#367 ·
All issues in etesync/etesync-dav
Similar issues
-
fuzz fuzz-unconfirmed
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Switch to ruffOpen
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Qiskit/qiskit-aer#2533 ·
Maintainers usually reply within 1 day
-
crate-drift
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
po4yka/rust-skills#33 ·
Maintainers usually reply within 1 day