style = { 'units' : 'mm', 'width' : 100, 'height' : 70, 'year-color' : '#666666', 'year-padding-top' : 5, 'year-font-family' : 'Consolas', 'year-font-size' : 5, 'month-width' : 24, 'month-height' : 21, 'day-width' : 23.0/7.0, 'day-height' : 12.0/5.0, 'month-margin-x' : 100, 'month-margin-y' : 100, 'month-font-family' : 'Consolas', 'month-font-size' : 3, 'month-color' : '#FF9525', 'month-padding-top' : 3, 'month-offset-top' : 5, 'week-padding-top' : 6, 'week-font-family' : 'Consolas', 'week-font-size' : 1.5, 'day-padding-top' : 6, 'day-font-family' : 'Consolas', 'day-font-size' : 2.5, 'day-color' : '#000000', 'day-holiday-color' : '#79B1D4', 'week-color' : '#999', 'week-holiday-color' : '#79B1D4', } month_names = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '0A', '0B', '0C'] days_count = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] month_beginning = [4, 7, 7, 3, 5, 1, 3, 6, 2, 4, 7, 2] holidays = [ (1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (3, 8), (3,9), (5, 1), (5,11), (6,12), (11,4) ] not_holidays = [ (1,11) ] # days_names = ['01', '02', '03', '04', '05', '06', '07'] days_names = ['001', '010', '011', '100', '101', '110', '111'] def is_holiday (month, day, day_of_week): global holidays, not_holidays if day_of_week > 5: return (month, day) not in not_holidays return (month, day) in holidays def day (x, y, month, day, day_of_week): global style if is_holiday (month, day, day_of_week): color = style ['day-holiday-color'] else: color = style ['day-color'] print ''% (x + 0.5*style['day-width'], y, style['day-font-family'], style['day-font-size'], color) print '%02x' % day print '' def week (x,y): global style, days_names print '' for i in range (7): if i < 5: color = style['week-color'] else: color = style['week-holiday-color'] print ''% (x + (i +0.5)* style['day-width'],y, style['week-font-family'], style['week-font-size'], color) print '%s' % (days_names [i]) print '' print '' def month (x,y, no): global style, month_names, month_beginning print '' print ''% (x + style['month-width']/2,y+style['month-padding-top'], style['month-font-family'], style['month-font-size'], style['month-color']) print '%s' % (month_names [no-1]) print '' week (x, y+style['week-padding-top']) for i in range(days_count[no-1]): day_of_week = (month_beginning[no-1] + i) % 7 if day_of_week == 0: day_of_week = 7 xx = x + style['day-width'] * (day_of_week - 1) week_no = ((month_beginning[no-1] + i) / 7 + 1) if day_of_week == 7: week_no = week_no - 1 yy = y + style['day-padding-top'] + week_no * style['day-height'] day (xx, yy, no, i+1, day_of_week) print '' def year (x, y, no): global style print '' print ''% (x + style['width']/2,y+style['year-padding-top'], style['year-font-family'], style['year-font-size'], style['year-color']) print '7D9' print '' for i in range (12): xx = i % 4 yy = i / 4 month (x+ xx*style['month-width'], y + style['month-offset-top']+ yy*style['month-height'], i+1) print '' print '' print 'Calendar 2009' % (style['width'], style['height']) print '' % (style['width'], style['height']) year (2, 0, 2009) print ''