예제 #1
0
    def testThisModification(self):
        self.event.displayName = "Master Event"  #no rruleset, so no modification
        self.event.rruleset = self._createRuleSetItem('weekly')
        self.assertEqual(self.event.modifies, None)

        calmod = self.event.getNextOccurrence()
        self.assertEqual(self.event.modifications, None)

        calmod.changeThis('displayName', 'Modified occurrence')

        self.assertEqual(calmod.modificationFor, self.event)
        self.assertEqual(calmod.modifies, 'this')
        self.assertEqual(calmod.getFirstInRule(), self.event)

        self.assertEqual(list(self.event.modifications), [calmod])

        evtaskmod = calmod.getNextOccurrence()

        evtaskmod.StampKind('add', TaskMixin.getKind(self.rep.view))

        # changes to an event should, by default, create a THIS modification
        self.assertEqual(evtaskmod.modificationFor, self.event)
        self.assertEqual(evtaskmod.modifies, 'this')
        self.assertEqual(evtaskmod.getFirstInRule(), self.event)

        for modOrMaster in [calmod, evtaskmod, self.event]:
            self.assertEqual(modOrMaster.getMaster(), self.event)

        self.event.displayName = "Modification to master"
        self.assertEqual(self.event.modifies, 'this')
        self.assertNotEqual(None, self.event.occurrenceFor)
        self.assertNotEqual(self.event, self.event.occurrenceFor)
예제 #2
0
    def testThisModification(self):
        self.event.displayName = "Master Event" #no rruleset, so no modification
        self.event.rruleset = self._createRuleSetItem('weekly')
        self.assertEqual(self.event.modifies, None)
        
        calmod = self.event.getNextOccurrence()
        self.assertEqual(self.event.modifications, None)
        
        calmod.changeThis('displayName', 'Modified occurrence')

        self.assertEqual(calmod.modificationFor, self.event)
        self.assertEqual(calmod.modifies, 'this')
        self.assertEqual(calmod.getFirstInRule(), self.event)
            
        self.assertEqual(list(self.event.modifications), [calmod])

        evtaskmod = calmod.getNextOccurrence()
        
        evtaskmod.StampKind('add', TaskMixin.getKind(self.rep.view))
        
        # changes to an event should, by default, create a THIS modification
        self.assertEqual(evtaskmod.modificationFor, self.event)
        self.assertEqual(evtaskmod.modifies, 'this')
        self.assertEqual(evtaskmod.getFirstInRule(), self.event)

        for modOrMaster in [calmod, evtaskmod, self.event]:
            self.assertEqual(modOrMaster.getMaster(), self.event)
            
        self.event.displayName = "Modification to master"
        self.assertEqual(self.event.modifies, 'this')
        self.assertNotEqual(None, self.event.occurrenceFor)
        self.assertNotEqual(self.event, self.event.occurrenceFor)
예제 #3
0
    def testStamping(self):
        # Make sure the contentModel is loaded.
        self.loadParcel("parcel:osaf.pim")
        # @@@ Also make sure the default imap account is loaded, in order to
        # have a "me" EmailAddress
        view = self.rep.view
        
        # Get the stamp kinds
        taskMixin = TaskMixin.getKind(view)
        eventMixin = Calendar.CalendarEventMixin.getKind(view)
        add = 'add'
        remove = 'remove'

        # Create a Task, and do all kinds of stamping on it
        aTask = Task("aTask", view=view)

        aTask.StampKind(add, eventMixin)
        aTask.StampKind(remove, taskMixin)
예제 #4
0
    def testStamping(self):
        # Make sure the contentModel is loaded.
        self.loadParcel("parcel:osaf.pim")
        # @@@ Also make sure the default imap account is loaded, in order to
        # have a "me" EmailAddress
        view = self.rep.view

        # Get the stamp kinds
        taskMixin = TaskMixin.getKind(view)
        eventMixin = Calendar.CalendarEventMixin.getKind(view)
        add = 'add'
        remove = 'remove'

        # Create a Task, and do all kinds of stamping on it
        aTask = Task("aTask", view=view)

        aTask.StampKind(add, eventMixin)
        aTask.StampKind(remove, taskMixin)
예제 #5
0
def GenerateMailMessage(view, mainView, args):
    """ Generate one Mail message item """
    
    message  = Mail.MailMessage(view=view)

    # subject
    if args[0]=='*': # semi-random data
        message.subject = random.choice(TITLES)
    elif not args[0]=='':
        message.subject = args[0]
    else: #default value
        message.subject = 'untitled' 

    # dateSent (date + time)
    message.dateSent = ReturnCompleteDatetime(args[2],args[3])
    
    # fromAdress
    message.fromAddress = GenerateCalendarParticipant(view, args[4])
    
    # toAddress
    if args[5]=='*':
        for num in range(random.randint(1,3)):
            message.toAddress.append(GenerateCalendarParticipant(view, args[5]))
    elif not args[5]=='':
        addressList = string.split(args[5],';')
        for add in addressList:
            message.toAddress.append(GenerateCalendarParticipant(view, add))
    else: #default value
        message.toAddress.append(GenerateCalendarParticipant(view, '*****@*****.**'))

    
    # outbound
    smtpAccount = Mail.getCurrentSMTPAccount(view)[0]
    mailAccount = Mail.getCurrentMailAccount(view)
    if args[6]=='*':
        outbound = random.randint(0, 1)
        if outbound:
            message.outgoingMessage(smtpAccount)
            """Make the Message appear as if it has already been sent"""
            message.deliveryExtension.sendSucceeded()
        else:
            message.incomingMessage(mailAccount)
    elif args[6]=='TRUE':
        message.outgoingMessage(smtpAccount)
        """Make the Message appear as if it has already been sent"""
        message.deliveryExtension.sendSucceeded()
    else: # default value "incoming"
        message.incomingMessage(mailAccount)

    # Stamp Event
    if args[7]=='*':
        type = random.randint(0, 1)
        if type:
            message.StampKind('add', Calendar.CalendarEventMixin.getKind(message.itsView))
    elif args[7]=='TRUE':
        message.StampKind('add', Calendar.CalendarEventMixin.getKind(message.itsView))

    # Stamp Task
    if args[8]=='*':
        type = random.randint(0, 1)
        if type:
            message.StampKind('add', TaskMixin.getKind(message.itsView))
    elif args[8]=='TRUE':
        message.StampKind('add', TaskMixin.getKind(message.itsView))

    # body
    if args[9]=='*':
        message.body = message.getAttributeAspect('body', 'type').makeValue(M_TEXT)
    elif not args[9]=='':
        message.body = message.getAttributeAspect('body', 'type').makeValue(args[9])
    else: # default value
        message.body = message.getAttributeAspect('body', 'type').makeValue(M_TEXT)
        
    #collection
    if args[1]=='*': # semi-random data
        collectionsDict.values()[random.randint(0,len(collectionsDict)-1)].add(message)
    elif not args[1]=='':
        collectionNames = string.split(args[1], ';') 
        for name in collectionNames:
            if collectionsDict.has_key(name):
                collectionsDict[name].add(message)
            else:
                GenerateCollection(view, mainView, [name])
                collectionsDict[name].add(message)

    return message
예제 #6
0
def GenerateEventTask(view, mainView, args):
    """ Generate one Task/Event stamped item """
    event = GenerateCalendarEvent(view, mainView, args)
    event.StampKind('add', TaskMixin.getKind(event.itsView))
    return event
예제 #7
0
def GenerateMailMessage(view, mainView, args):
    """ Generate one Mail message item """

    message = Mail.MailMessage(view=view)

    # subject
    if args[0] == '*':  # semi-random data
        message.subject = random.choice(TITLES)
    elif not args[0] == '':
        message.subject = args[0]
    else:  #default value
        message.subject = 'untitled'

    # dateSent (date + time)
    message.dateSent = ReturnCompleteDatetime(args[2], args[3])

    # fromAdress
    message.fromAddress = GenerateCalendarParticipant(view, args[4])

    # toAddress
    if args[5] == '*':
        for num in range(random.randint(1, 3)):
            message.toAddress.append(GenerateCalendarParticipant(
                view, args[5]))
    elif not args[5] == '':
        addressList = string.split(args[5], ';')
        for add in addressList:
            message.toAddress.append(GenerateCalendarParticipant(view, add))
    else:  #default value
        message.toAddress.append(
            GenerateCalendarParticipant(view, '*****@*****.**'))

    # outbound
    smtpAccount = Mail.getCurrentSMTPAccount(view)[0]
    mailAccount = Mail.getCurrentMailAccount(view)
    if args[6] == '*':
        outbound = random.randint(0, 1)
        if outbound:
            message.outgoingMessage(smtpAccount)
            """Make the Message appear as if it has already been sent"""
            message.deliveryExtension.sendSucceeded()
        else:
            message.incomingMessage(mailAccount)
    elif args[6] == 'TRUE':
        message.outgoingMessage(smtpAccount)
        """Make the Message appear as if it has already been sent"""
        message.deliveryExtension.sendSucceeded()
    else:  # default value "incoming"
        message.incomingMessage(mailAccount)

    # Stamp Event
    if args[7] == '*':
        type = random.randint(0, 1)
        if type:
            message.StampKind(
                'add', Calendar.CalendarEventMixin.getKind(message.itsView))
    elif args[7] == 'TRUE':
        message.StampKind('add',
                          Calendar.CalendarEventMixin.getKind(message.itsView))

    # Stamp Task
    if args[8] == '*':
        type = random.randint(0, 1)
        if type:
            message.StampKind('add', TaskMixin.getKind(message.itsView))
    elif args[8] == 'TRUE':
        message.StampKind('add', TaskMixin.getKind(message.itsView))

    # body
    if args[9] == '*':
        message.body = message.getAttributeAspect('body',
                                                  'type').makeValue(M_TEXT)
    elif not args[9] == '':
        message.body = message.getAttributeAspect('body',
                                                  'type').makeValue(args[9])
    else:  # default value
        message.body = message.getAttributeAspect('body',
                                                  'type').makeValue(M_TEXT)

    #collection
    if args[1] == '*':  # semi-random data
        collectionsDict.values()[random.randint(0,
                                                len(collectionsDict) -
                                                1)].add(message)
    elif not args[1] == '':
        collectionNames = string.split(args[1], ';')
        for name in collectionNames:
            if collectionsDict.has_key(name):
                collectionsDict[name].add(message)
            else:
                GenerateCollection(view, mainView, [name])
                collectionsDict[name].add(message)

    return message
예제 #8
0
def GenerateEventTask(view, mainView, args):
    """ Generate one Task/Event stamped item """
    event = GenerateCalendarEvent(view, mainView, args)
    event.StampKind('add', TaskMixin.getKind(event.itsView))
    return event