Публикация новостных лент в Джанго - PullRequest
3 голосов
/ 20 июля 2010

Я пытаюсь опубликовать канал 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 по какой-то причине не нравится мой веб-сервер.сводит меня с ума, я не могу понять, почему.

1 Ответ

4 голосов
/ 05 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...