lokses fcaf8b85c8 nextcloud: публичные RO-ссылки на документы аптек; аптеки больше не на Group Folders.
Нужен внешний (без входа в ACORE) read-only доступ к документам аптеки —
для сторон вроде поставщиков/проверяющих. Для сотрудников внутренний доступ
уже был (access.can_access_pharmacy_docs через виджет портала), это отдельный,
внешний путь.

- NextcloudSharingService — клиент OCS Files Sharing API (публичные ссылки,
  идемпотентно: сначала проверяет существующую шару на путь, не плодит дубли).
- webdav_service.ensure_dir() — идемпотентный MKCOL (в отличие от mkdir(),
  который должен падать на дубликате — так и оставлен для UI).
- PharmacyPublicLink — аптека ↔ URL + share_id (для последующего отзыва/
  обновления).
- sync_service.sync_pharmacy(): больше не использует Group Folders (аптечные
  сотрудники учёток Nextcloud не имеют — ACL по AD-группам тут не нужен,
  это была подготовка под LDAP, которая пока не горит). Теперь — обычная
  WebDAV-папка под сервисным аккаунтом + публичная RO-ссылка. Попутно чинит
  сегодняшний блокер: --pharmacies-only больше не зависит от сломанного (404)
  Group Folders API — клиенты в NextcloudSyncService стали ленивыми.
- Отделы (sync_department) не тронуты — Group Folders/LDAP остаётся
  архитектурным заделом на будущее, не нужно прямо сейчас.

Тесты: SharingServiceTests, SyncPharmacyPublicLinkTests (идемпотентность,
обновление URL, обработка ошибок WebDAV, dry-run). 326 тестов в затронутых
приложениях — зелёные.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-11-02 23:13:58 +02:00
…
S
Description
No description provided
7.8 MiB
Languages
Python 63.8%
HTML 27.5%
JavaScript 6.1%
CSS 2.5%