Итак, из того, что я собрал, я вижу, что ваш сервер caldav использует какой-то сервер Twisted Caldav (никогда не использовал его, никогда даже не использовал встроенный сервер MacOS caldav). Я нашел это архивное хранилище того, что, по-видимому, является реализацией для этого сервера Caldav. В этом репо я нашел Exception
, который вы предоставили, здесь :
except TimeRangeLowerLimit, e:
raise HTTPError(ErrorResponse(
responsecode.FORBIDDEN,
caldavxml.MinDateTime(),
"Time-range value too far in the past. Must be on or after %s." % (str(e.limit),)(str(e.limit),)
Глядя на реализацию TimeRangeLowerLimit Exception
здесь :
class TimeRangeLowerLimit(Exception):
"""
A request for time-range information too far in the past cannot be satisfied.
"""
def __init__(self, lowerLimit):
self.limit = lowerLimit
Кажется, что на самом деле установлен лимит. Копаем глубже до MinDateTime
класс здесь :
class MinDateTime (CalDAVTextElement):
"""
Specifies restrictions on a calendar collection.
(CalDAV-access, RFC 4791 section 5.2.6)
"""
name = "min-date-time"
hidden = True
protected = True
Указывает на секцию 5.2.6 в РФ C 4791 , которая гласит:
Имя: min-date-time
Пространство имен: urn: ietf: params: xml: ns: caldav
Назначение: Предоставляет значение DATE-TIME, указывающее самые ранние дата и время (в UT C), которые сервер готов принять для любого значения DATE или DATE-TIME в ресурсе объекта календаря, хранящемся в коллекции календаря.
Я всегда думал об этом как о пределе ввода, а не о поиске (отчете), что меня сильно смущает. Возвращаясь к реализации, исключение выдается из здесь :
# Determine if the start date is too early for the restricted range we
# are applying. If it is today or later we don't need to worry about truncation
# in the past.
minDate, _ignore_isEndDate = filter.getmintimerange()
if minDate >= today:
minDate = None
if minDate is not None and config.FreeBusyIndexLowerLimitDays:
truncateLowerLimit = today - Duration(days=config.FreeBusyIndexLowerLimitDays)
if minDate < truncateLowerLimit:
raise TimeRangeLowerLimit(truncateLowerLimit)
Глядя на условие if minDate is not None and config.FreeBusyIndexLowerLimitDays:
, как вы хотите использовать minDate
(иначе начало time-range
), похоже, что единственное возможное решение - установить в конфигурации другое значение FreeBusyIndexLowerLimitDays
.
Я никогда не видел этой проблемы с другими реализациями caldav (я в основном использую Sabre), поэтому я к сожалению, больше не могу вам помочь.