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))
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()
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))
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()