Esempio n. 1
0
    def _next6(self):
        # TODO: This is a repeat of _run for the most part.
        dtstart = datetime.datetime.today()

        out('Loading state....')

        state = phil.util.load_state(self.config.datadir)

        out('Parsing ics file "{0}"....'.format(self.config.icsfile))

        events = parse_ics(self.config.icsfile)
        for event in events:
            out('Looking at event "{0}"....'.format(event.summary))
            next_date = dtstart

            for i in range(6):
                next_date = get_next_date(next_date, event.rrule)
                previous_remind = state.get(event.event_id)
                if (previous_remind
                        and previous_remind == str(next_date.date())):
                    out('* {0} (sent reminder already)'.format(
                        next_date.strftime('%c')))

                else:
                    out('* {0}'.format(next_date.strftime('%c')))

                next_date = next_date + datetime.timedelta(1)
Esempio n. 2
0
File: check.py Progetto: B-Rich/phil
    def _next6(self):
        # TODO: This is a repeat of _run for the most part.
        dtstart = datetime.datetime.today()

        out('Loading state....')

        state = phil.util.load_state(self.config.datadir)

        out('Parsing ics file "{0}"....'.format(self.config.icsfile))

        events = parse_ics(self.config.icsfile)
        for event in events:
            out('Looking at event "{0}"....'.format(event.summary))
            next_date = dtstart

            for i in range(6):
                next_date = get_next_date(next_date, event.rrule)
                previous_remind = state.get(event.event_id)
                if (previous_remind
                        and previous_remind == str(next_date.date())):
                    out('* {0} (sent reminder already)'.format(
                        next_date.strftime('%c')))

                else:
                    out('* {0}'.format(next_date.strftime('%c')))

                next_date = next_date + datetime.timedelta(1)
Esempio n. 3
0
def test_parse_ics():
    test1 = os.path.join(get_test_data_dir(), 'test1.ics')
    events = parse_ics(test1)

    eq_(len(events), 1)

    ev = events[0]
    eq_(ev.event_id, u'2011-11-18 12:00:00+00:00::bi-weekly conference call::')
    eq_(ev.summary, u'bi-weekly conference call')
    eq_(ev.description, u'conference call')
Esempio n. 4
0
def test_parse_ics():
    test1 = os.path.join(get_test_data_dir(), 'test1.ics')
    events = parse_ics(test1)

    eq_(len(events), 1)

    ev = events[0]
    eq_(ev.event_id, u'2011-11-18 12:00:00+00:00::bi-weekly conference call::')
    eq_(ev.summary, u'bi-weekly conference call')
    eq_(ev.description, u'conference call')
Esempio n. 5
0
def test_ics_description_expansion():
    test2 = os.path.join(get_test_data_dir(), 'test2.ics')
    events = parse_ics(test2)

    eq_(len(events), 1)

    ev = events[0]
    eq_(ev.description,
        u'Weekly conference call\nLocation: IRC\nMeeting agenda and notes: '
        'http://example.com/notes/%(Y)s-%(m)s-%(d)s\n\nBe there or be '
        'square!')
Esempio n. 6
0
def test_ics_description_expansion():
    test2 = os.path.join(get_test_data_dir(), 'test2.ics')
    events = parse_ics(test2)

    eq_(len(events), 1)

    ev = events[0]
    eq_(
        ev.description,
        u'Weekly conference call\nLocation: IRC\nMeeting agenda and notes: '
        'http://example.com/notes/%(Y)s-%(m)s-%(d)s\n\nBe there or be '
        'square!')
Esempio n. 7
0
    def _run(self):
        dtstart = datetime.datetime.today()

        if not self.quiet:
            out('Loading state....')

        state = phil.util.load_state(self.config.datadir)

        if not self.quiet:
            out('Parsing ics file "{0}"....'.format(self.config.icsfile))

        events = parse_ics(self.config.icsfile)
        for event in events:
            if not self.quiet:
                out('Looking at event "{0}"....'.format(event.summary))

            next_date = get_next_date(dtstart, event.rrule)
            previous_remind = state.get(event.event_id)
            if previous_remind and previous_remind == str(next_date.date()):
                if not self.quiet:
                    out('Already sent a reminder for this meeting.')
                continue

            if should_remind(dtstart, next_date, self.config.remind):
                if not self.quiet:
                    out('Sending reminder....')
                summary = '{0} ({1})'.format(event.summary,
                                             format_date(next_date))
                description = event.description % generate_date_bits(next_date)

                if self.debug:
                    out('From:', self.config.sender)
                    out('To:', self.config.to_list)
                    out('Subject:', summary)
                    out('Body:')
                    out(description, indent='    ', wrap=False)
                else:
                    phil.util.send_mail_smtp(self.config.sender,
                                             self.config.to_list, summary,
                                             description, self.config.host,
                                             self.config.port)

                    state[event.event_id] = str(next_date.date())
            elif not self.quiet:
                out('Next reminder should get sent on {0}.'.format(
                    next_date.date() - datetime.timedelta(self.config.remind)))

        phil.util.save_state(self.config.datadir, state)
Esempio n. 8
0
File: check.py Progetto: B-Rich/phil
    def _run(self):
        dtstart = datetime.datetime.today()

        if not self.quiet:
            out('Loading state....')

        state = phil.util.load_state(self.config.datadir)

        if not self.quiet:
            out('Parsing ics file "{0}"....'.format(self.config.icsfile))

        events = parse_ics(self.config.icsfile)
        for event in events:
            if not self.quiet:
                out('Looking at event "{0}"....'.format(event.summary))

            next_date = get_next_date(dtstart, event.rrule)
            previous_remind = state.get(event.event_id)
            if previous_remind and previous_remind == str(next_date.date()):
                if not self.quiet:
                    out('Already sent a reminder for this meeting.')
                continue

            if should_remind(dtstart, next_date, self.config.remind):
                if not self.quiet:
                    out('Sending reminder....')
                summary = '{0} ({1})'.format(
                    event.summary, format_date(next_date))
                description = event.description % generate_date_bits(next_date)

                if self.debug:
                    out('From:', self.config.sender)
                    out('To:', self.config.to_list)
                    out('Subject:', summary)
                    out('Body:')
                    out(description, indent='    ', wrap=False)
                else:
                    phil.util.send_mail_smtp(
                        self.config.sender, self.config.to_list, summary,
                        description, self.config.host, self.config.port)

                    state[event.event_id] = str(next_date.date())
            elif not self.quiet:
                out('Next reminder should get sent on {0}.'.format(
                    next_date.date() - datetime.timedelta(self.config.remind)))

        phil.util.save_state(self.config.datadir, state)