Я пытаюсь опубликовать канал ICS, используя django + vobject.В качестве тестового прогона у меня определено следующее представление:
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 ,mimetype = текст / календарь.Пока все хорошо.
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
PRODID:-//PYVOBJECT//NONSGML Version 1//EN
BEGIN:VEVENT
UID:20100720T073356Z-26389@Rafiki
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, похоже, он тоже работает нормально.Но вот убийца: Календарь Google просто не будет работать как подписка.Если вы пытаетесь добавить его по URL к goocal, он просто говорит «Импортировать календарь из URL» на вечность, иногда генерируя сообщение об ошибке (в конце концов).
Еще больше расстраивает, если я просто беру это имя файла.ics и поместите его в какое-то статическое место для хранения файлов (например, http://rosters.davidmck.com/site_media/filename.ics), оно все еще не работает .
Насколько я могу судить, оба местоположения(статические и сгенерированные) доступны извне. Я также пытался просто загрузить ics на другой веб-сервер и , который на самом деле, казалось, работал , поэтому я подозреваю, что Goocal по какой-то причине не нравится мой веб-сервер.сводит меня с ума, я не могу понять, почему.