2010-07-20 3 views
3

Я пытаюсь опубликовать канал ICS с помощью django + vobject. В качестве теста, у меня есть следующий вид: определенныйПубликация ics в Django

def ical(request, user_id=None): 
    cal = vobject.iCalendar() 
    cal.add('method').value = 'PUBLISH' 
    cal.add('calscale').value = 'GREGORIAN' 
    cal.add('x-wr-calname').value = 'TestCal28' 
    cal.add('x-wr-timezone').value = 'Australia/Sydney' 
    cal.add('x-wr-caldesc').value = '' 
    vevent = cal.add('vevent') 
    vevent.add('dtstart').value = datetime.now() 
    vevent.add('dtend').value = datetime(2010, 7, 22) 
    vevent.add('dtstamp').value = datetime.now() 
    vevent.add('summary').value = "Test event" 
    icalstream = cal.serialize() 
    response = HttpResponse(icalstream, mimetype='text/calendar') 
    response['Filename'] = 'filename.ics' 
    response['Content-Disposition'] = 'attachment; filename=filename.ics' 

так что если вы заботитесь, чтобы перейти к rosters.davidmck.com/ical/ вы должны получить служил filename.ics, тип_mime = текст/календаря. Все идет нормально.

BEGIN:VCALENDAR 
VERSION:2.0 
CALSCALE:GREGORIAN 
METHOD:PUBLISH 
PRODID:-//PYVOBJECT//NONSGML Version 1//EN 
BEGIN:VEVENT 
UID:[email protected] 
DTSTART:20100720T173356 
DTEND:20100722T000000 
DTSTAMP:20100720T173356 
SUMMARY:Test event 
END:VEVENT 
X-WR-CALDESC: 
X-WR-CALNAME:TestCal28 
X-WR-TIMEZONE:Australia/Sydney 
END:VCALENDAR 

Это, кажется, более или менее хорошо сформирован файл ICS: он будет импортировать любые и все каландрирования приложение, которое я пробовал, в том числе ручной загрузки в календаре Google. Если вы подписываетесь на него по URL-адресу с помощью Yahoo, то, похоже, тоже работает A-OK. Но вот убийца: Google Calendar просто не будет работать как подписка. Если вы попытаетесь добавить его по URL-адресу goocal, он просто говорит «Импорт календаря с URL-адреса» на вечность, иногда генерируя сообщение об ошибке (в конечном итоге).

Больше расстраивает, если я просто принять, что filename.ics и поместить его в какой-то статический файл служит место (например, http://rosters.davidmck.com/site_media/filename.ics), она до сих пор не работает.

Насколько я могу судить, оба места (статические и сгенерированные) доступны извне. Я также попробовал просто загружать ics на другой веб-сервер и , что на самом деле показалось мне полезным, поэтому я подозреваю, что Goocal по какой-то причине не любит мой веб-сервер. Это сводит меня с ума, я не могу понять, почему.

ответ

4

Я сомневаюсь, что это решит вашу проблему (звучит как проблема с конфигурацией сервера), но я бы предложил проверить django-cal для генерации вашего канала. Он работает так же, как структура подачи синдикации django.contrib (читайте: красиво)

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