Changeset 47661
- Timestamp:
- 07/31/06 16:10:38 (2 years ago)
- Files:
-
- Zope2/CalZope/trunk/CHANGES (modified) (1 diff)
- Zope2/CalZope/trunk/tests/test_icalendar.py (modified) (3 diffs)
- Zope2/CalZope/trunk/zopecal.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
Zope2/CalZope/trunk/CHANGES
r47550 r47661 11 11 - the DivDateWidget actually generate datetime.date instances instead of 12 12 datetime.datetime instance as previously (fixes a 'until' TypeError) 13 - #1718: When exporting as reader, private events was exported in full. 13 14 New internal features: 14 15 ~~~~~~~~~~~~~~~~~~~~~~ Zope2/CalZope/trunk/tests/test_icalendar.py
r47592 r47661 25 25 # but hard to reuse doctests in Zope 2 context.. 26 26 import unittest 27 from datetime import datetime 27 from datetime import datetime, timedelta 28 28 from cStringIO import StringIO 29 29 30 30 from zope.app import zapi 31 from AccessControl import Unauthorized 31 32 32 33 from calendartest import CalendarTestCase … … 107 108 calendar = self.folder.martijn_cal 108 109 calendar.addAttendee(source.getAttendee('martijn')) 110 self.login('martijn') 109 111 110 112 def makeRequestAndView(self, string, calendar): … … 224 226 self.failUnlessEqual(result, []) 225 227 226 228 def test_export_private(self): 229 # Create some events: 230 calendar = self.folder.martijn_cal 231 calendar.import_(icalsimple) 232 calendar.import_(icalcomplex) 233 calendar.import_(icalunicode) 234 235 calendar.getMainAttendee().createEvent( 236 dtstart=datetime(2005, 4, 10, 16, 00), 237 duration=timedelta(minutes=60), 238 status='TENTATIVE', 239 access='PRIVATE', 240 title="Private Event", 241 description="Private Event Description", 242 categories=['Private','Event','Categories']) 243 244 # New user Lennart: 245 self.folder.acl_users._doAddUser('lennart', 'lennart', [''], []) 246 self.login('lennart') 247 248 # Lennart has no rights on Martijns calendar, and can not export it 249 self.assertRaises(Unauthorized, calendar.restrictedTraverse, 250 'calendar.ics') 251 252 # Give Lennart view rights on the calendar: 253 calendar.manage_addLocalRoles('lennart', ['AttendeeReader']) 254 255 # iCalendar export should not include the data of the private event. 256 export = calendar.restrictedTraverse('calendar.ics')() 257 self.failIf(export.find('Private')!=-1, 258 "Private data visible on export") 259 260 # Give Lennart manager rights on the calendar: 261 calendar.manage_addLocalRoles('lennart', ['AttendeeManager']) 262 263 # iCalendar export should now include the data of the private event. 264 export = calendar.restrictedTraverse('calendar.ics')() 265 self.failIf(export.find('Private')==-1, 266 "Private data not visible on export") 227 267 228 268 Zope2/CalZope/trunk/zopecal.py
r45718 r47661 24 24 from random import randrange 25 25 from datetime import datetime, timedelta, date 26 import calendar 26 import calendar, icalendar 27 27 28 28 # zope … … 237 237 def _getAttendeeSource(self): 238 238 return zapi.getUtility(IAttendeeSource, context=self) 239 240 def export(self, period=(None, None), search_criteria=None): 241 """Export calendar data in ICalendar format. 242 """ 243 ical = icalendar.Calendar() 244 ical.add('prodid', '-//CPS Shared Calendar//nuxeo.com//') 245 ical.add('version', '1.0') 246 247 security = getSecurityManager() 248 for event in self.getEvents(period, search_criteria): 249 private = not security.checkPermission('View event', event.__of__(self)) 250 e = event.export(private) 251 ical.add_component(e) 252 ical_text = ical.as_string() 253 self._logger.debug('export generated ical text: \n\n%s\n\n' % ical_text) 254 return ical_text 239 255 240 256
