def get_bio_data(birthday_dt, period): ''' получить данные для графиков birthday_dt - дата рождения period - период, в которым интересны данные [0] - дата начала прериода, [1] - дата окончания периода ''' return [ { 'day': yyyy_mm_dd( date_shift( *(birthday_dt + [t,]) ) ), 'fiz': int(bio(t, PHYSICAL_PERIOD)), 'emo': int(bio(t, EMOTIONAL_PERIOD)), 'smart': int(bio(t, BRAIN_PERIOD)), } for t in xrange( date_diff(period[0], birthday_dt), date_diff(period[1], birthday_dt)+1 ) ]
def git_important_days(birthday_dt, period): ''' получаем список особых дней за указанный период birthday_dt - дата рождения period - период, в который нужно получить особые даты [0] - дата начала прериода, [1] - дата окончания периода ''' days = {} _day = period[0] while date_compare( *(_day+period[1]) ) != -1: time_diff = date_diff(_day, birthday_dt) critical = get_critical_preiods(_day, time_diff) peak = get_peak_preiods(_day, time_diff) day = yyyy_mm_dd(_day) if (peak or critical): days.setdefault( day, { 'biorythms': day_bio(time_diff), 'day': yyyy_mm_dd(_day) } ) if peak: days[day].update(peak) if critical: days[day].update(critical) _day = date_shift(*(_day + (1,))) return collections.OrderedDict(sorted(days.items()))
def get_period(date1, date2): list_d = [date1] current_date = date1 while date.date_compare(*current_date + date2) == 1: current_date = date.date_shift(*current_date + (1,)) list_d.append(current_date) return list_d
def snct_minc(date, diff): diff = int(diff) _date = date_to_dict(date) sign = diff/abs(diff) sift = 0 for i in xrange(min(0, diff), max(0, diff)): sift += num_days_in_month(_date[1], _date[2]) _date = date_shift( *(_date + [sign*sift]) ) return yyyy_mm_dd(_date)
def formatmonthname(self, theyear, themonth, withyear=True): with calendar.TimeEncoding(self.locale) as encoding: s = calendar.month_name[themonth] if encoding is not None: s = s.decode(encoding) if withyear and theyear != self.today.year: s = '%s, %s' % (s, theyear) prev_month_day = yyyy_mm_dd( date_shift(1, themonth, theyear, -1) ) next_month_day = yyyy_mm_dd( date_shift( num_days_in_month(themonth,theyear), themonth, theyear, 1 ) ) return ( '<tr><th colspan="7" class="month">' '<a href="#" day="%s" class="get_bio_data">←</a> ' '%s' ' <a href="#" day="%s" class="get_bio_data">→</a>' '</th></tr>' )% (prev_month_day, s, next_month_day)
def snct_dinc(date, diff): return yyyy_mm_dd( date_shift( *(date_to_dict(date) + [int(diff)]) ) )