2010-09-21 4 views
3

Я пытаюсь получить доступ к ядру iCal-Server на Mac OS X Snow Leopard Server через Python. Сервер запущен и работает с ним через приложение iCal. Теперь мне нужно получить доступ к этому серверу через Python, чтобы использовать его в качестве бэкэнда для планирования ресурсов. Я уже посмотрел на CalDav-модуль (http://packages.python.org/caldav/index.html), но предоставленный там образец не нашел никакого календаря, хотя правильный URL-адрес правильный.Как получить доступ к Яблоку iCal-Server через Python

Так как я могу просматривать события в пределах временного диапазона из календаря пользователя с помощью python?

+0

Можете ли вы предоставить основной URL-адрес, который вы используете. Модуль, который вы упомянули, полностью игнорирует значение ответа при попытке вернуть объект календаря. – pyfunc

ответ

1

[Не решение, но для отладки]

Из примера, приведенного в документации модуля CalDAV:

from datetime import datetime 
import caldav 
from caldav.elements import dav, cdav 

# Principal url 
url = "https://user:[email protected]/user/Calendar" 

client = caldav.DAVClient(url) 
principal = caldav.Principal(client, url) 
calendars = principal.calendars() 

Вопросы

  1. Пример URL не основной URL-адрес для сервера ical
  2. если yo u посмотрите на код для календарей = main.calendars(), он игнорирует ответ.
  3. Если ваш основной URL-адрес неверен, то без каких-либо ошибок он вернет только пустой набор календарей.

Debugging помощь:

в файле objects.py, есть метод для DAVObject называют детей. Вы можете изменить код, чтобы включить некоторую отладочную информацию. Если вы можете вставить следующее, а также вставить свою информацию в вопрос.

response = self.client.propfind(self.url.path, body, depth) 
    print response, self.url.path #provide additional info 
    print response.raw #provide additional info 
    for r in response.tree.findall(dav.Response.tag): 
+0

Большое спасибо за ответ, это было очень полезно при отладке. На самом деле я установил версию caldav 0.1.4, для которой была написана документация. После загрузки источника 0.1.6 и добавления команд печати он неожиданно сработал. Поэтому я думаю, что есть что-то исправленное, что помешало подключить 0.1.4 к календарному серверу. – Hive

+0

@Hive: Было бы неплохо, если бы вы могли разместить свой главный url здесь. – pyfunc

+0

Я пробовал этот URL: http: // admin: [email protected]: 8008/principals/__ uids __/admin/который я нашел в качестве основного URL-адреса при обращении к адресу в моем браузере. Но, используя его, календари не найдены. Он работал с этим URL-адресом: http: // admin: [email protected]: 8008/calendar/users/admin/поэтому у меня есть все календари для пользователя admin (2 * caldav.objects.Calendar), но на самом деле все такие операции, как date_search и т. д. на каждом из этих календарей, приводят к httplib.CannotSendRequest и свойствам, как имя, являются None. – Hive

Смежные вопросы