2010-09-21 43 views
3

我想通過Python在Mac OS X Snow Leopard Server上訪問Apples iCal-Server。服務器已啓動並正在運行,通過iCal-Application進行工作就可以了。 現在,我需要通過Python訪問此服務器,以將其用作資源計劃的後端。我已經查看了CalDav-Module(http://packages.python.org/caldav/index.html),但在那裏提供的示例沒有找到任何日曆,但Principal-URL正確。如何通過Python訪問Apples iCal-Server

那麼我怎樣才能從用戶的日曆使用Python讀取時間範圍內的事件?

+0

您能否提供您正在使用的主要網址。您提到的模塊在嘗試返回日曆對象時完全忽略了響應值。 – pyfunc 2010-10-18 23:03:51

回答

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. 的網址示例不是ical服務器的主要網址
  2. if yo你看看calendars = principal.calendars()的代碼,它會忽略響應。
  3. 如果您的主體網址不正確,則不會發出任何錯誤,它將只返回空的一組日曆。

調試幫助

文件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 2010-10-21 14:36:05

+0

@Hive:如果您可以將您的主要網址放在此處,那將會很好。 – pyfunc 2010-10-21 16:38:42

+0

我試過這個URL:http:// admin:[email protected]:8008/principals/__ uids __/admin /這是我在瀏覽器中訪問地址時發現的主要URL。但是使用它,沒有找到日曆。這種類型的工作與此URL:http://管理員:[email protected]:8008 /日曆/用戶/管理員/所以我得到了所有用戶管理日曆(2 * caldav.objects.Calendar),但實際上所有日曆搜索等操作會在每個日曆中產生一個httplib.CannotSendRequest,並且名稱等屬性爲None。 – Hive 2010-10-22 08:10:05