Je tente de publier un flux ICS à l'aide de django + vobject. Comme un essai, j'ai la vue suivante définie:Publication de flux RSS dans 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'
donc si vous vous souciez d'aller vous rosters.davidmck.com/ical/ devriez vous servir filename.ics, mimetype = text/calendar. Jusqu'ici tout va bien.
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
Cela semble être un plus ou moins bien formé fichier ICS: il importera à toute demande calandrer que je l'ai essayé, y compris le téléchargement manuel au calendrier Google. Si vous vous y abonnez via l'URL en utilisant Yahoo, cela semble aussi fonctionner. Mais voici le tueur: Google Agenda ne fonctionne tout simplement pas comme un abonnement. Si vous tentez de l'ajouter par URL à goocal, il vous suffit de dire «Importation d'un calendrier à partir d'une URL» pour une éternité, générant parfois un message d'échec (éventuellement).
Plus frustrant, si je prends juste que filename.ics et le mettre dans un certain fichier statique au service emplacement (comme http://rosters.davidmck.com/site_media/filename.ics), il encore ne fonctionne pas. Pour autant que je sache, les deux emplacements (statique et généré) sont disponibles en externe. J'ai également essayé de télécharger les ics sur un serveur web différent et qui semblait fonctionner donc je suppose que Goocal n'aime pas mon serveur web pour une raison quelconque. Ça me rend fou, je ne sais pas pourquoi.