Пример #1
0
    def testFromHumaneString(self):
        testData = [
            ("daily 10:00", RecurrenceRule(rrule.DAILY, byhour=10)),
            ("weekly FR 23:00", RecurrenceRule(rrule.WEEKLY, byweekday=4, byhour=23)),
            ("none", RecurrenceRule()),
            ("weekly fr 23:00", RecurrenceRule(rrule.WEEKLY, byweekday=4, byhour=23)),
            ("weekly Fr 23:00", RecurrenceRule(rrule.WEEKLY, byweekday=4, byhour=23)),
            ("weekly Friday 23:00", RecurrenceRule(rrule.WEEKLY, byweekday=4, byhour=23)),
            ("monthly 3 13:00", RecurrenceRule(rrule.MONTHLY, bymonthday=3, byhour=13)),
            ("monthly second friday 13:00", RecurrenceRule(rrule.MONTHLY,
                                                           byweekday=RecurrenceRule.createWeekDay(weekday=4, pos=2),
                                                           byhour=13)),
            ("yearly 3/07 11:20", RecurrenceRule(rrule.YEARLY, bymonth=7, bymonthday=3, byhour=11, byminute=20)),
            ("quarterly 14 11:20", RecurrenceRule(rrule.YEARLY, bymonth=(1, 4, 7, 10), bymonthday=14, byhour=11,
                                                  byminute=20)),
            ("quarterly first monday 23:20", RecurrenceRule(rrule.YEARLY, bymonth=(1, 4, 7, 10),
                                                            byweekday=RecurrenceRule.createWeekDay(weekday=0, pos=1),
                                                            byhour=23, byminute=20)),
        ] + [(x.text, x.rule) for x in TEST_DATA]

        for text, expected in testData:
            with self.subTest(text=text):
                output = RecurrenceRule.fromHumaneString(text)
                self.assertEqual(output, expected,
                                 '\ninput:    {}\noutput:   {}\nexpected: {}'.format(text, output, expected))
Пример #2
0
 def do_t_recurs(self, line):
     """Make a task recurs
     t_recurs <id> yearly <dd/mm> <HH:MM>
     t_recurs <id> monthly <dd> <HH:MM>
     t_recurs <id> monthly <first/second/third/last> <mo, tu, we, th, fr, sa, su> <hh:mm>
     t_recurs <id> quarterly <dd> <HH:MM>
     t_recurs <id> quarterly <first/second/third/last> <mo, tu, we, th, fr, sa, su> <hh:mm>
     t_recurs <id> weekly <mo, tu, we, th, fr, sa, su> <hh:mm>
     t_recurs <id> daily <HH:MM>
     t_recurs <id> none (remove recurrence)"""
     tokens = parseutils.simplifySpaces(line).split(" ", 1)
     if len(tokens) < 2:
         raise YokadiException("You should give at least two arguments: <task id> <recurrence>")
     task = self.getTaskFromId(tokens[0])
     rule = RecurrenceRule.fromHumaneString(tokens[1])
     task.setRecurrenceRule(rule)
     self.session.commit()
Пример #3
0
    def testFromHumaneString(self):
        testData = [
            ("daily 10:00", RecurrenceRule(rrule.DAILY, byhour=10)),
            ("weekly FR 23:00",
             RecurrenceRule(rrule.WEEKLY, byweekday=4, byhour=23)),
            ("none", RecurrenceRule()),
            ("weekly fr 23:00",
             RecurrenceRule(rrule.WEEKLY, byweekday=4, byhour=23)),
            ("weekly Fr 23:00",
             RecurrenceRule(rrule.WEEKLY, byweekday=4, byhour=23)),
            ("weekly Friday 23:00",
             RecurrenceRule(rrule.WEEKLY, byweekday=4, byhour=23)),
            ("monthly 3 13:00",
             RecurrenceRule(rrule.MONTHLY, bymonthday=3, byhour=13)),
            ("monthly second friday 13:00",
             RecurrenceRule(rrule.MONTHLY,
                            byweekday=RecurrenceRule.createWeekDay(weekday=4,
                                                                   pos=2),
                            byhour=13)),
            ("yearly 3/07 11:20",
             RecurrenceRule(
                 rrule.YEARLY, bymonth=7, bymonthday=3, byhour=11,
                 byminute=20)),
            ("quarterly 14 11:20",
             RecurrenceRule(rrule.YEARLY,
                            bymonth=(1, 4, 7, 10),
                            bymonthday=14,
                            byhour=11,
                            byminute=20)),
            ("quarterly first monday 23:20",
             RecurrenceRule(rrule.YEARLY,
                            bymonth=(1, 4, 7, 10),
                            byweekday=RecurrenceRule.createWeekDay(weekday=0,
                                                                   pos=1),
                            byhour=23,
                            byminute=20)),
        ] + [(x.text, x.rule) for x in TEST_DATA]

        for text, expected in testData:
            with self.subTest(text=text):
                output = RecurrenceRule.fromHumaneString(text)
                self.assertEqual(
                    output, expected,
                    '\ninput:    {}\noutput:   {}\nexpected: {}'.format(
                        text, output, expected))
Пример #4
0
 def do_t_recurs(self, line):
     """Make a task recurs
     t_recurs <id> yearly <dd/mm> <HH:MM>
     t_recurs <id> monthly <dd> <HH:MM>
     t_recurs <id> monthly <first/second/third/last> <mo, tu, we, th, fr, sa, su> <hh:mm>
     t_recurs <id> quarterly <dd> <HH:MM>
     t_recurs <id> quarterly <first/second/third/last> <mo, tu, we, th, fr, sa, su> <hh:mm>
     t_recurs <id> weekly <mo, tu, we, th, fr, sa, su> <hh:mm>
     t_recurs <id> daily <HH:MM>
     t_recurs <id> none (remove recurrence)"""
     tokens = parseutils.simplifySpaces(line).split(" ", 1)
     if len(tokens) < 2:
         raise YokadiException(
             "You should give at least two arguments: <task id> <recurrence>"
         )
     task = self.getTaskFromId(tokens[0])
     rule = RecurrenceRule.fromHumaneString(tokens[1])
     task.setRecurrenceRule(rule)
     self.session.commit()