Ronnie has proposed merging lp:~ronnie.vd.c/loco-directory/623288 into 
lp:loco-directory.

Requested reviews:
  loco-directory-dev (loco-directory-dev)
Related bugs:
  #623288 importing ical gives an error 
  https://bugs.launchpad.net/bugs/623288


Calendar suppport is now trough the python-vobject library
-- 
https://code.launchpad.net/~ronnie.vd.c/loco-directory/623288/+merge/44127
Your team loco-directory-dev is requested to review the proposed merge of 
lp:~ronnie.vd.c/loco-directory/623288 into lp:loco-directory.
=== modified file 'INSTALL'
--- INSTALL	2010-11-27 03:36:17 +0000
+++ INSTALL	2010-12-18 12:43:53 +0000
@@ -8,7 +8,7 @@
  - sudo -u postgres createdb -O postgres loco_directory
 
 Generally:
- - sudo apt-get install python-django python-launchpadlib libjs-jquery-ui python-django-openid-auth python-django-south iso-codes gettext python-tz
+ - sudo apt-get install python-django python-launchpadlib libjs-jquery-ui python-django-openid-auth python-django-south iso-codes gettext python-tz python-vobject
  - cd loco_directory
  - cp local_settings.py.sample local_settings.py
 # edit local_settings.py and set DATABASE_USER, DATABASE_PASSWORD, SECRET_KEY

=== modified file 'loco_directory/events/models.py'
--- loco_directory/events/models.py	2010-11-27 03:56:49 +0000
+++ loco_directory/events/models.py	2010-12-18 12:43:53 +0000
@@ -27,21 +27,17 @@
     def __unicode__(self):
         return self.name
     
-    def as_ical(self):
+    def as_ical(self, cal):
         """
         return a event as ical
         """
-        dtstart = str(self.date_begin).replace(' ','T', 1).replace(':','',2).replace('-','',2)
-        dtend = str(self.date_end).replace(' ','T', 1).replace(':','',2).replace('-','',2)
-        return '''BEGIN:VEVENT
-UID:%(id)s
-DTSTART:%(dtstart)sZ
-DTEND:%(dtend)sZ
-CATEGORIES:Ubuntu Loco Team Event
-SUMMARY:%(eventname)s
-DESCRIPTION:%(description)s
-END:VEVENT
-''' % {'id':self.id, 'dtstart':dtstart, 'dtend':dtend, 'eventname':self.name, 'description': self.description}
+        event = cal.add('vevent')
+        event.add('uid').value = str(self.id)
+        event.add('dtstart').value = self.date_begin
+        event.add('dtend').value = self.date_end
+        event.add('categories').value = ['Ubuntu Loco Team Event']
+        event.add('summary').value = self.name
+        event.add('description').value = self.description
 
     def is_past(self):
         return self.date_end > datetime.datetime.today()

=== modified file 'loco_directory/events/views.py'
--- loco_directory/events/views.py	2010-11-20 17:40:31 +0000
+++ loco_directory/events/views.py	2010-12-18 12:43:53 +0000
@@ -20,6 +20,7 @@
 from common import launchpad
 
 import datetime
+import vobject
 
 def event_list(request):
     """
@@ -41,18 +42,17 @@
     filename = "%s.ics" % name.replace(' ', '-').lower()
     response = HttpResponse(mimetype='text/calendar')
     response['Content-Disposition'] = 'attachment; filename=%s' % filename.encode('ascii', 'replace')
-    response.write('''BEGIN:VCALENDAR
-PRODID:-//loco.ubuntu.com//EN
-VERSION:2.0
-CALSCALE:GREGORIAN
-METHOD:PUBLISH
-X-WR-TIMEZONE:UTC
-''')
-    response.write('X-WR-CALNAME:%s\n' % name)
-    response.write('X-WR-CALDESC:%s\n' % name)
+    calendar = vobject.iCalendar()
+    calendar.add('prodid').value = '-//loco.ubuntu.com//EN'
+    calendar.add('calscale').value = 'GREGORIAN'
+    calendar.add('method').value = 'PUBLISH'
+    calendar.add('x-wr-timezone').value = 'UTC'
+    calendar.add('x-wr-calname').value = name
+    calendar.add('x-wr-caldesc').value = name
     for event in events:
-        response.write(event.as_ical())
-    response.write('''END:VCALENDAR''')
+        event.as_ical(calendar)
+    response.write(calendar.serialize())
+    
     return response
 
 def event_ical(request, team_event_id):

_______________________________________________
Mailing list: https://launchpad.net/~loco-directory-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~loco-directory-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to