2010-07-20 4 views
3

django + vobject를 사용하여 ICS 피드를 게시하려고합니다. 테스트 실행, 나는 정의는 다음 뷰를 가지고 :출판물이 장고에 있습니다.

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' 

그래서 당신은 당신이 filename.ics, 마임 = 텍스트/달력을 제공받을해야 rosters.davidmck.com/ical/로 이동 신경합니다. 여태까지는 그런대로 잘됐다.

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 파일로 보인다는 일체의 나는 구글 캘린더를 수동으로 업로드를 포함하여, 시도했습니다의 일정 응용 프로그램에 가져옵니다. 야후를 사용하여 URL을 통해 구독하는 경우 A-OK도 작동하는 것으로 보입니다. 그러나 킬러가 있습니다. Google 캘린더는 가입으로 작동하지 않습니다. Goocal에 URL로 추가하려고하면 "URL에서 캘린더 가져 오기"라는 메시지가 영원히 보일뿐 아니라 때로는 실패 메시지가 생성됩니다. 난 그냥 그 filename.ics을 일부 정적 파일 제공 위치 (같은 http://rosters.davidmck.com/site_media/filename.ics)에 넣어 경우

더 실망, 여전히 작동하지 않습니다.

내가 알 수있는 한 두 위치 (정적 및 생성 된)는 외부에서 사용할 수 있습니다. 나는 또한 ics를 다른 웹 서버에 업로드하려고 시도했다. 은 실제로을 작동시키는 것처럼 보였으므로 Goocal은 내 웹 서버가 왠지 마음에 들지 않는다고 생각한다. 그것은 나를 미치게합니다. 나는 왜 그런지 생각할 수 없습니다.

답변

4

문제가 서버 구성 문제와 유사하다고 생각되지만, 피드 생성을 위해 django-cal을 확인하시기 바랍니다. django.contrib의 신디케이션 피드 프레임 워크와 똑같은 방식으로 작동합니다 (읽기 : 멋지게)