2010-07-20 10 views
3

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.

Répondre

4

Je doute que cela résoudra votre problème (cela ressemble à un problème de configuration du serveur), mais je suggère de vérifier django-cal pour votre génération de flux. Il fonctionne de la même manière que le framework de flux de syndication de django.contrib (lire: joliment)