def _make_label(rstartn, rstartA, rstartH, rstartM, rendH, rendM, ralarmH, ralarmM, rendn, rendu, ralarmn, ralarmu, endtype, alarmtype, fend, palarm, standard): label = 'Occur on the {} {} of every month at {}:{} ({})'.format( MonthWeekdayHourCtrl.compute_weekday_number_label( rstartn), rstartA, str(rstartH).zfill(2), str(rstartM).zfill(2), standard) if endtype == 1: label += ' for {} {}'.format(rendn, rendu) elif endtype == 2: label += ' until {}:{}'.format(str(rendH).zfill(2), str(rendM).zfill(2)) if fend: label += ' of the following day' if alarmtype == 1: label += ', activate alarm {} {} before'.format(ralarmn, ralarmu) elif alarmtype == 2: label += ', activate alarm at {}:{}'.format( str(ralarmH).zfill(2), str(ralarmM).zfill(2)) if palarm: label += ' of the previous day' return label
def _make_label(smonths, rstartn, rstartA, rstartH, rstartM, rendH, rendM, ralarmH, ralarmM, rendn, rendu, ralarmn, ralarmu, endtype, alarmtype, fend, palarm, standard): label = 'Occur on the {} {} of {} at {}:{} ({})'.format( MonthWeekdayHourCtrl.compute_weekday_number_label(rstartn), rstartA, ', '.join([MonthsCtrl.compute_month_name(m) for m in smonths]), str(rstartH).zfill(2), str(rstartM).zfill(2), standard) if endtype == 1: label += ' for {} {}'.format(rendn, rendu) elif endtype == 2: label += ' until {}:{}'.format( str(rendH).zfill(2), str(rendM).zfill(2)) if fend: label += ' of the following day' if alarmtype == 1: label += ', activate alarm {} {} before'.format(ralarmn, ralarmu) elif alarmtype == 2: label += ', activate alarm at {}:{}'.format( str(ralarmH).zfill(2), str(ralarmM).zfill(2)) if palarm: label += ' of the previous day' return label
def _compute_values(cls, standard, rule): # Remember to support also time zones that differ from UTC by not # exact hours (e.g. Australia/Adelaide) if not rule: nh = _datetime.datetime.now() + _datetime.timedelta(hours=1) wn = (nh.day - 1) // 7 + 1 values = { 'start_weekday_raw': nh.weekday(), 'start_hour': nh.hour, 'start_minute': 0, 'end_relative_time': 3600, 'alarm_relative_time': 0, 'end_type': 0, 'alarm_type': 0, 'time_standard': standard, } else: values = { 'selected_months_raw': rule[0], 'start_weekday_raw': rule[1], 'start_weekday_number_raw': rule[2], 'max_overlap': rule[3], 'start_hour': rule[4], 'start_minute': rule[5], 'end_relative_time': rule[6] if rule[6] is not None else 3600, 'alarm_relative_time': rule[7] if rule[7] is not None else 0, 'end_type': rule[8][1], 'alarm_type': rule[8][2], 'time_standard': standard, } wn = values['start_weekday_number_raw'] + 1 values['end_relative_number'], values['end_relative_unit'] = \ TimeSpanCtrl.compute_widget_values( values['end_relative_time']) # ralarm could be negative values['alarm_relative_number'], values['alarm_relative_unit'] = \ TimeSpanCtrl.compute_widget_values( max((0, values['alarm_relative_time']))) rrstart = values['start_hour'] * 3600 + values['start_minute'] * 60 rrend = rrstart + values['end_relative_time'] values['end_next_day'] = False # End time could be set after 23:59 of the start day if rrend > 86399: rrend = rrend % 86400 values['end_next_day'] = True rralarm = rrstart - values['alarm_relative_time'] values['alarm_previous_day'] = False # Alarm time could be set before 00:00 of the start day if rralarm < 0: rralarm = 86400 - abs(rralarm) % 86400 values['alarm_previous_day'] = True values.update({ 'start_weekday_number': wn, 'start_weekday': MonthWeekdayHourCtrl.compute_widget_weekday( values['start_weekday_raw']), 'end_hour': rrend // 3600, 'end_minute': rrend % 3600 // 60, 'alarm_hour': rralarm // 3600, 'alarm_minute': rralarm % 3600 // 60, }) return values
def _compute_values(cls, standard, rule): # Remember to support also time zones that differ from UTC by not # exact hours (e.g. Australia/Adelaide) if not rule: nh = _datetime.datetime.now() + _datetime.timedelta(hours=1) wn = (nh.day - 1) // 7 + 1 values = { 'selected_months': range(1, 13), 'start_weekday_raw': nh.weekday(), 'start_hour': nh.hour, 'start_minute': 0, 'end_relative_time': 3600, 'alarm_relative_time': 0, 'end_type': 0, 'alarm_type': 0, 'time_standard': standard, } else: values = { 'selected_months_raw': rule[0], 'start_weekday_raw': rule[1], 'start_weekday_number_raw': rule[2], 'max_overlap': rule[3], 'start_hour': rule[4], 'start_minute': rule[5], 'end_relative_time': rule[6] if rule[6] is not None else 3600, 'alarm_relative_time': rule[7] if rule[7] is not None else 0, 'end_type': rule[8][1], 'alarm_type': rule[8][2], 'time_standard': standard, } values['selected_months'] = list(set( values['selected_months_raw'])) values['selected_months'].sort() wn = values['start_weekday_number_raw'] + 1 values['end_relative_number'], values['end_relative_unit'] = \ TimeSpanCtrl.compute_widget_values( values['end_relative_time']) # ralarm could be negative values['alarm_relative_number'], values['alarm_relative_unit'] = \ TimeSpanCtrl.compute_widget_values( max((0, values['alarm_relative_time']))) rrstart = values['start_hour'] * 3600 + values['start_minute'] * 60 rrend = rrstart + values['end_relative_time'] values['end_next_day'] = False # End time could be set after 23:59 of the start day if rrend > 86399: rrend = rrend % 86400 values['end_next_day'] = True rralarm = rrstart - values['alarm_relative_time'] values['alarm_previous_day'] = False # Alarm time could be set before 00:00 of the start day if rralarm < 0: rralarm = 86400 - abs(rralarm) % 86400 values['alarm_previous_day'] = True values.update({ 'start_weekday_number': wn, 'start_weekday': MonthWeekdayHourCtrl.compute_widget_weekday( values['start_weekday_raw']), 'end_hour': rrend // 3600, 'end_minute': rrend % 3600 // 60, 'alarm_hour': rralarm // 3600, 'alarm_minute': rralarm % 3600 // 60, }) return values