Reviewers: ,
Please review this at http://codereview.tryton.org/90003/
Affected files:
M calendar.py
M setup.py
A tests/scenario_calendar_scheduling.py
Index: calendar.py
===================================================================
--- a/calendar.py
+++ b/calendar.py
@@ -723,7 +723,7 @@
@staticmethod
def organiser_to_notify(attendee):
event = attendee.event
- organizer = event.organizer or event.parent.organizer
+ organizer = event.organizer or event.parent and
event.parent.organizer
if not organizer:
return None
if event.organizer_schedule_agent \
Index: setup.py
===================================================================
--- a/setup.py
+++ b/setup.py
@@ -57,6 +57,9 @@
],
license='GPL-3',
install_requires=requires,
+ extras_require={
+ 'test': ['caldav'],
+ },
zip_safe=False,
entry_points="""
[trytond.modules]
Index: tests/scenario_calendar_scheduling.py
===================================================================
new file mode 100644
--- /dev/null
+++ b/tests/scenario_calendar_scheduling.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+#This file is part of Tryton. The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+from optparse import OptionParser
+from urlparse import urlparse
+import unittest
+import sys
+import datetime
+
+from dateutil.relativedelta import relativedelta
+import caldav
+import vobject
+from proteus import config, Model, Wizard
+from trytond.modules.calendar.tests.scenario_calendar import (
+ install_module, configure_user, create_calendar)
+
+
+class TestCase(unittest.TestCase):
+
+ def setUp(self):
+ self.client = caldav.DAVClient(URL)
+ self.principal = caldav.Principal(self.client, URL)
+ self.calendar, = [x for x in self.principal.calendars()
+ if x.url.path.endswith(user)]
+
+ def test0010create_event_external(self):
+ 'Create event with external attendee'
+ ical = vobject.iCalendar()
+ vevent = ical.add('vevent')
+ vevent.add('summary')
+ vevent.summary.value = 'Test event with external attendee'
+ vevent.add('dtstart')
+ vevent.dtstart.value = datetime.datetime.now() +
relativedelta(days=10)
+ vevent.add('dtend')
+ vevent.dtend.value = datetime.datetime.now() +
relativedelta(days=10,
+ hours=4)
+ vevent.add('organizer')
+ vevent.organizer.value = '[email protected]'
+ attendee = vobject.base.ContentLine('ATTENDEE', [], '')
+ attendee.partstat_param = 'TENTATIVE'
+ attendee.value = 'MAILTO:[email protected]'
+ vevent.attendee_list = [attendee]
+ caldav.Event(self.client, data=ical.serialize(),
+ parent=self.calendar).save()
+
+ def test0020create_event_ext_int(self):
+ 'Create event with external and internal attendees'
+ ical = vobject.iCalendar()
+ vevent = ical.add('vevent')
+ vevent.add('summary')
+ vevent.summary.value = 'Test event with ext/int attendees'
+ vevent.add('dtstart')
+ vevent.dtstart.value = datetime.datetime.now() +
relativedelta(days=5)
+ vevent.add('dtend')
+ vevent.dtend.value = datetime.datetime.now() +
relativedelta(days=5,
+ hours=8)
+ vevent.add('organizer')
+ vevent.organizer.value = '[email protected]'
+ attendees = []
+ for email in ('foo@example', '[email protected]'):
+ attendee = vobject.base.ContentLine('ATTENDEE', [], '')
+ attendee.partstat_param = 'TENTATIVE'
+ attendee.value = 'MAILTO:%s' % email
+ attendees.append(attendee)
+ vevent.attendee_list = attendees
+ caldav.Event(self.client, data=ical.serialize(),
+ parent=self.calendar).save()
+
+if __name__ == '__main__':
+ parser = OptionParser()
+ parser.add_option('--xmlrpc', dest='xmlrpc', metavar='URL',
+ help='use trytond XML-RPC at URL')
+ parser.add_option('--url', dest='url', metavar='URL',
+ help='use calendar at URL')
+ (options, args) = parser.parse_args()
+ config = config.set_xmlrpc(options.xmlrpc)
+ xmlrpc_user = urlparse(options.xmlrpc).username
+ user = urlparse(options.url).username
+ assert xmlrpc_user == user
+ assert user != 'foo'
+ install_module('calendar_scheduling', config)
+ configure_user(user, config)
+ configure_user('foo', config)
+ create_calendar(user, user, config)
+ create_calendar('foo', user, config)
+ URL = options.url
+ unittest.main(argv=sys.argv[:1])
--
[email protected] mailing list