annotate wall_calendar.py @ 49:2991c1166852

start calsync in go. Calendar list seems to sync
author drewp@bigasterisk.com
date Mon, 19 Aug 2024 13:25:03 -0700
parents ab54c9f65f76
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
41
ab54c9f65f76 project updates; rdflib 7.0.0
drewp@bigasterisk.com
parents: 40
diff changeset
1 """
ab54c9f65f76 project updates; rdflib 7.0.0
drewp@bigasterisk.com
parents: 40
diff changeset
2 also see https://madebyevan.com/calendar/app/
ab54c9f65f76 project updates; rdflib 7.0.0
drewp@bigasterisk.com
parents: 40
diff changeset
3 https://ui.toast.com/tui-calendar
ab54c9f65f76 project updates; rdflib 7.0.0
drewp@bigasterisk.com
parents: 40
diff changeset
4 """
40
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
5 import calendar
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
6 import datetime
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
7 import itertools
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
8 import sys
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
9
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
10 from htmlgenerator import BODY, H1, HEAD, HTML, SPAN, STYLE, TABLE, TBODY, TD, TH, TR, mark_safe, render
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
11
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
12 c = calendar.TextCalendar(firstweekday=6)
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
13
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
14 start = datetime.date.today()
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
15 start = start - datetime.timedelta(days=start.weekday() + 1)
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
16 offset = itertools.count()
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
17 currentMonth = -1
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
18
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
19
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
20 def nextDayLabel():
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
21 global currentMonth
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
22 thisDay = start + datetime.timedelta(days=next(offset))
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
23 month = ''
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
24 if thisDay.month != currentMonth:
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
25 month = f'{calendar.month_name[thisDay.month]} '
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
26 currentMonth = thisDay.month
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
27 return f'{month}{thisDay.day}'
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
28
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
29
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
30 def weekdayLabels():
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
31 row = [TH(c.formatweekday(i, width=100)) for i in c.iterweekdays()]
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
32 return TR(*row)
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
33
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
34
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
35 def nextWeekDays():
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
36 return TR(*[TD(SPAN(nextDayLabel(), class_="day")) for wd in c.iterweekdays()])
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
37
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
38
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
39 sys.stdout.write(
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
40 render(
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
41 HTML( #
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
42 HEAD(STYLE(mark_safe(open('wall_calendar.css').read()))), #
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
43 BODY(H1("todo"), TABLE(*weekdayLabels(), TBODY(*[nextWeekDays() for week in range(8)])))),
c4e8d697326b wall calendar html generator
drewp@bigasterisk.com
parents:
diff changeset
44 {}))