def apply_rule(self, filename, id_): values = self.ui.get_values() sdays = values['selected_weekdays'] rstart = values['start_relative_time'] rstartH = values['start_hour'] rstartM = values['start_minute'] endtype = values['end_type'] rend = values['end_relative_time'] fend = values['end_next_day'] rendn = values['end_relative_number'] rendu = values['end_relative_unit'] rendH = values['end_hour'] rendM = values['end_minute'] alarmtype = values['alarm_type'] ralarm = values['alarm_relative_time'] palarm = values['alarm_previous_day'] ralarmn = values['alarm_relative_number'] ralarmu = values['alarm_relative_unit'] ralarmH = values['alarm_hour'] ralarmM = values['alarm_minute'] standard = values['time_standard'] rstarts = [(d - sdays[0]) * 86400 for d in sdays] refstart = (int(_time.time()) // 604800 * 7 + 3 + sdays[0]) * 86400 + \ rstart try: if standard == 'UTC': ruled = organism_basicrules_api.make_occur_regularly_group_rule_UTC( refstart, 604800, rstarts, rend, ralarm, ('sw', endtype, alarmtype)) else: ruled = organism_basicrules_api.make_occur_regularly_group_rule_local( refstart, 604800, rstarts, rend, ralarm, ('sw', endtype, alarmtype)) except organism_basicrules_api.BadRuleError: msgboxes.warn_bad_rule(msgboxes.generic).ShowModal() else: label = self._make_label(sdays, rstartH, rstartM, rendH, rendM, ralarmH, ralarmM, rendn, rendu, ralarmn, ralarmu, endtype, alarmtype, fend, palarm, standard) wxscheduler_api.apply_rule(filename, id_, ruled, label)
def create_random_rule(): start = int((random.gauss(_time.time(), 15000))) // 60 * 60 swd = _datetime.datetime.utcfromtimestamp(start).weekday() rdays = [ 0, ] rdays.extend(random.sample(range(1, 7), random.randint(0, 6))) # The lowest weekday must go first rrdays = [d + swd - 7 if d + swd > 6 else d + swd for d in rdays] rrdays.sort() rrdays0 = rrdays[0] rday = swd - rrdays0 refstart = start - 86400 * rday rstarts = [(d - rrdays0) * 86400 for d in rrdays] endtype = random.randint(0, 2) if endtype == 0: rend = None else: rend = random.randint(1, 360) * 60 alarmtype = random.randint(0, 2) if alarmtype == 0: ralarm = None else: ralarm = random.randint(0, 360) * 60 stdn = random.randint(0, 1) if stdn == 0: return organism_basicrules_api.make_occur_regularly_group_rule_local( refstart, 604800, rstarts, rend, ralarm, ('sw', endtype, alarmtype)) else: return organism_basicrules_api.make_occur_regularly_group_rule_UTC( refstart, 604800, rstarts, rend, ralarm, ('sw', endtype, alarmtype))
def create_random_rule(): start = int((random.gauss(_time.time(), 15000))) // 60 * 60 swd = _datetime.datetime.utcfromtimestamp(start).weekday() rdays = [0, ] rdays.extend(random.sample(range(1, 7), random.randint(0, 6))) # The lowest weekday must go first rrdays = [d + swd - 7 if d + swd > 6 else d + swd for d in rdays] rrdays.sort() rrdays0 = rrdays[0] rday = swd - rrdays0 refstart = start - 86400 * rday rstarts = [(d - rrdays0) * 86400 for d in rrdays] endtype = random.randint(0, 2) if endtype == 0: rend = None else: rend = random.randint(1, 360) * 60 alarmtype = random.randint(0, 2) if alarmtype == 0: ralarm = None else: ralarm = random.randint(0, 360) * 60 stdn = random.randint(0, 1) if stdn == 0: return organism_basicrules_api.make_occur_regularly_group_rule_local( refstart, 604800, rstarts, rend, ralarm, ('sw', endtype, alarmtype)) else: return organism_basicrules_api.make_occur_regularly_group_rule_UTC( refstart, 604800, rstarts, rend, ralarm, ('sw', endtype, alarmtype))