Beispiel #1
0
 def test_timedeltaToString(self):
     """
     Test timedelta strings
     """
     self.assertEqual(timedeltaToString(two_hours), 'PT2H')
     self.assertEqual(timedeltaToString(datetime.timedelta(minutes=20)),
                      'PT20M')
Beispiel #2
0
 def test_timedeltaToString(self):
     self.assertEqual(
         timedeltaToString(twoHours),
         'PT2H'
     )
     self.assertEqual(
         timedeltaToString(datetime.timedelta(minutes=20)),
         'PT20M'
     )
Beispiel #3
0
 def test_timedeltaToString(self):
     """
     Test timedelta strings
     """
     self.assertEqual(
         timedeltaToString(two_hours),
         'PT2H'
     )
     self.assertEqual(
         timedeltaToString(datetime.timedelta(minutes=20)),
         'PT20M'
     )
Beispiel #4
0
    def export_event(self, event):

        event_mask = SharingMask(event)
        transparency = to_transparency(event_mask.base_transparency)

        if all_empty(event_mask, 'base_start', 'all_day', 'base_any_time',
                     'tzinfo'):
            start = eim.Inherit
        else:
            start = toICalendarDateTime(event.start, event.all_day,
                                        event.any_time)
        if all_empty(event_mask, 'base_duration', 'all_day', 'base_any_time'):
            duration = eim.Inherit
        else:
            duration = timedeltaToString(event.duration)

#         lastPast = eim.NoChange
#         if event.occurrenceFor is None and event.rruleset is not None:
#             rruleset = event.createDateUtilFromRule()
#             lastPast = rruleset.before(getNow(TimeZone.default))
#             if lastPast is not None:
#                 # convert to UTC if not floating
#                 if lastPast.tzinfo != TimeZone.floating:
#                     lastPast = lastPast.astimezone(TimeZone.utc)
#                 lastPast = toICalendarDateTime(lastPast, event.allDay,
#                                                event.anyTime)

        rrule, exrule, rdates, exdates = getRecurrenceFields(event)

        yield model.EventRecord(
            event,  # uuid
            start,  # dtstart
            duration,  # duration
            self.obfuscate(event.location),  # location
            rrule,  # rrule
            exrule,  # exrule
            rdates,  # rdate
            exdates,  # exdate
            transparency,  # status
            eim.NoChange,  # lastPastOccurrence
        )
Beispiel #5
0
    def export_event(self, event):

        event_mask = SharingMask(event)
        transparency = to_transparency(event_mask.base_transparency)

        if all_empty(event_mask, 'base_start', 'all_day', 'base_any_time', 'tzinfo'):
            start = eim.Inherit
        else:
            start = toICalendarDateTime(event.start, event.all_day, event.any_time)
        if all_empty(event_mask, 'base_duration', 'all_day', 'base_any_time'):
            duration = eim.Inherit
        else:
            duration = timedeltaToString(event.duration)

#         lastPast = eim.NoChange
#         if event.occurrenceFor is None and event.rruleset is not None:
#             rruleset = event.createDateUtilFromRule()
#             lastPast = rruleset.before(getNow(TimeZone.default))
#             if lastPast is not None:
#                 # convert to UTC if not floating
#                 if lastPast.tzinfo != TimeZone.floating:
#                     lastPast = lastPast.astimezone(TimeZone.utc)
#                 lastPast = toICalendarDateTime(lastPast, event.allDay,
#                                                event.anyTime)

        rrule, exrule, rdates, exdates = getRecurrenceFields(event)

        yield model.EventRecord(
            event,                            # uuid
            start,                            # dtstart
            duration,                         # duration
            self.obfuscate(event.location),   # location
            rrule,                            # rrule
            exrule,                           # exrule
            rdates,                           # rdate
            exdates,                          # exdate
            transparency,                     # status
            eim.NoChange,                     # lastPastOccurrence
        )
Beispiel #6
0
    def export_item(self, item):
        mask = SharingMask(item)

        triage = Triage(item)
        recurring = Recurrence.installed_on(item) and Recurrence(item).rruleset
        if recurring:
            encoded_triage = eim.NoChange
        elif triage.manual and triage.manual_timestamp:
            code = normalize_triage_code(triage.manual)
            manual_timestamp = -1 * triage.manual_timestamp
            encoded_triage = "%s %.2f 0" % (code, manual_timestamp)
        else:
            encoded_triage = eim.Inherit

        yield model.ItemRecord(
            item,                                        # uuid
            self.obfuscate(mask.title),                  # title
            encoded_triage,                              # triage
            with_nochange(mask.created, decimal_int),    # createdOn
            eim.NoChange,                                # hasBeenSent
            eim.NoChange,                                # needsReply
            eim.NoChange,                                # read
        )

        eim_wrapped = eim.EIM(item)

        yield model.NoteRecord(
            item,                                        # uuid
            self.obfuscate(mask.body),                   # body
            empty_as_inherit(eim_wrapped, 'ical_uid'),   # icalUid
            eim.Inherit,                                 # icalendarProperties
            eim.Inherit,                                 # icalendarParameters
            empty_as_inherit(eim_wrapped, 'ical_extra')  # icalendarExtra
        )


        if not ReminderList(item).reminders:
            description = None
            trigger = None
            duration = None
            repeat = None

        elif not getattr(item, 'recurrence_id', False):
            reminder = ReminderList(item).reminders[0]
            trigger = None
            if reminder.delta:
                trigger = timedeltaToString(reminder.delta)
            elif reminder.fixed_trigger:
                fixed = reminder.fixed_trigger.astimezone(TimeZone.utc)
                trigger = toICalendarDateTime(fixed, False)

            duration = eim.NoChange
            repeat = eim.NoChange
            description = getattr(reminder, 'description', None)
            if not description:
                description = "Event Reminder"

        else: # we've inherited this reminder
            description = eim.Inherit
            trigger = eim.Inherit
            duration = eim.Inherit
            repeat = eim.Inherit

        yield model.DisplayAlarmRecord(
            item,
            description,
            trigger,
            duration,
            repeat,
        )
Beispiel #7
0
 def test_timedeltaToString(self):
     self.assertEqual(timedeltaToString(twoHours), 'PT2H')
     self.assertEqual(timedeltaToString(datetime.timedelta(minutes=20)),
                      'PT20M')
Beispiel #8
0
    def export_item(self, item):
        mask = SharingMask(item)

        triage = Triage(item)
        recurring = Recurrence.installed_on(item) and Recurrence(item).rruleset
        if recurring:
            encoded_triage = eim.NoChange
        elif triage.manual and triage.manual_timestamp:
            code = normalize_triage_code(triage.manual)
            manual_timestamp = -1 * triage.manual_timestamp
            encoded_triage = "%s %.2f 0" % (code, manual_timestamp)
        else:
            encoded_triage = eim.Inherit

        yield model.ItemRecord(
            item,  # uuid
            self.obfuscate(mask.title),  # title
            encoded_triage,  # triage
            with_nochange(mask.created, decimal_int),  # createdOn
            eim.NoChange,  # hasBeenSent
            eim.NoChange,  # needsReply
            eim.NoChange,  # read
        )

        eim_wrapped = eim.EIM(item)

        yield model.NoteRecord(
            item,  # uuid
            self.obfuscate(mask.body),  # body
            empty_as_inherit(eim_wrapped, 'ical_uid'),  # icalUid
            eim.Inherit,  # icalendarProperties
            eim.Inherit,  # icalendarParameters
            empty_as_inherit(eim_wrapped, 'ical_extra')  # icalendarExtra
        )

        if not ReminderList(item).reminders:
            description = None
            trigger = None
            duration = None
            repeat = None

        elif not getattr(item, 'recurrence_id', False):
            reminder = ReminderList(item).reminders[0]
            trigger = None
            if reminder.delta:
                trigger = timedeltaToString(reminder.delta)
            elif reminder.fixed_trigger:
                fixed = reminder.fixed_trigger.astimezone(TimeZone.utc)
                trigger = toICalendarDateTime(fixed, False)

            duration = eim.NoChange
            repeat = eim.NoChange
            description = getattr(reminder, 'description', None)
            if not description:
                description = "Event Reminder"

        else:  # we've inherited this reminder
            description = eim.Inherit
            trigger = eim.Inherit
            duration = eim.Inherit
            repeat = eim.Inherit

        yield model.DisplayAlarmRecord(
            item,
            description,
            trigger,
            duration,
            repeat,
        )