@@ -45,7 +45,7 @@ def build_planner(pages, j2_env: j2.Environment):
4545 return j2_env .get_template ('full_planner.html.j2' ) \
4646 .render (pages = pages )
4747
48- def build_daily_pages (start : date , end : date , start_t : datetime , end_t : datetime , j2_env : j2 .Environment ):
48+ def build_daily_pages (start : date , end : date , start_t : datetime , end_t : datetime , goals , j2_env : j2 .Environment ):
4949 def build_daily_page (inp_date , j2_template : j2 .Template , times ):
5050 mini_cal = mini_calendar_dates (inp_date .month , inp_date .year )
5151 return j2_template .render (date = inp_date , times = times , mini_cal = mini_cal )
@@ -58,17 +58,24 @@ def build_daily_page(inp_date, j2_template: j2.Template, times):
5858
5959 times = [(start_t + timedelta (hours = i )).strftime ('%-I %p' ).lower () for i in range (num_hours )]
6060
61+ journal_link = False
62+
6163 for i in range (num_days + 1 ):
6264 cur_date = start + timedelta (days = i )
65+
66+ if goals ['journal' ] > 0 :
67+ journal_link = cur_date .strftime ('%Y-%m-%d-journal' )
68+
6369 content = build_daily_page (cur_date , daily_template , times )
6470 day_templates [cur_date .strftime ('%Y-%m-%d' )] = frame_template .render (
6571 content = content ,
66- id = cur_date .strftime ('%Y-%m-%d' )
72+ id = cur_date .strftime ('%Y-%m-%d' ),
73+ journal_link = journal_link
6774 )
6875
6976 return day_templates
7077
71- def build_weekly_pages (start : date , end : date , start_t : datetime , end_t : datetime , work_goals : bool , personal_goals : bool , j2_env : j2 .Environment ):
78+ def build_weekly_pages (start : date , end : date , start_t : datetime , end_t : datetime , goals , j2_env : j2 .Environment ):
7279 def build_weekly_page (inp_monday , j2_template : j2 .Template , times ):
7380 days = []
7481 for i in range (7 ):
@@ -85,26 +92,31 @@ def build_weekly_page(inp_monday, j2_template: j2.Template, times):
8592
8693 goal_link = False
8794 work_goal_link = False
95+ journal_link = False
8896
8997 while cur_monday < end :
90- if work_goals :
98+ if goals [ 'work' ] :
9199 work_goal_link = f"{ cur_monday .strftime ('%Y-W%W' )} -work-goals"
92100
93- if personal_goals :
101+ if goals [ 'personal' ] :
94102 goal_link = f"{ cur_monday .strftime ('%Y-W%W' )} -goals"
95103
104+ if goals ['journal' ] > 0 :
105+ journal_link = f"{ max (cur_monday , start ).strftime ('%Y-%m-%d' )} -journal"
106+
96107 content = build_weekly_page (cur_monday , weekly_template , times )
97108 week_templates [cur_monday .strftime ('%Y-W%W' )] = frame_template .render (
98109 content = content ,
99110 id = cur_monday .strftime ('%Y-W%W' ),
100111 goal_link = goal_link ,
101- work_goal_link = work_goal_link
112+ work_goal_link = work_goal_link ,
113+ journal_link = journal_link
102114 )
103115 cur_monday += timedelta (days = 7 )
104116
105117 return week_templates
106118
107- def build_monthly_pages (start : date , end : date , work_goals : bool , personal_goals : bool , j2_env : j2 .Environment ):
119+ def build_monthly_pages (start : date , end : date , goals , j2_env : j2 .Environment ):
108120 def build_monthly_page (cur_month , j2_template : j2 .Template ):
109121 return j2_template .render (month = cur_month , mini_cal = mini_calendar_dates (cur_month .month , cur_month .year ))
110122
@@ -115,26 +127,31 @@ def build_monthly_page(cur_month, j2_template: j2.Template):
115127
116128 work_goal_link = False
117129 goal_link = False
130+ journal_link = False
118131
119132 while cur_month <= end :
120- if work_goals :
133+ if goals [ 'work' ] :
121134 work_goal_link = f"{ cur_month .strftime ('%Y-%m' )} -work-goals"
122135
123- if personal_goals :
136+ if goals [ 'personal' ] :
124137 goal_link = f"{ cur_month .strftime ('%Y-%m' )} -goals"
138+
139+ if goals ['journal' ] > 0 :
140+ journal_link = f"{ cur_month .strftime ('%Y-%m-%d-journal' )} "
125141
126142 content = build_monthly_page (cur_month , monthly_template )
127143 month_templates [cur_month .strftime ('%Y-%m' )] = frame_template .render (
128144 content = content ,
129145 id = cur_month .strftime ('%Y-%m' ),
130146 goal_link = goal_link ,
131- work_goal_link = work_goal_link
147+ work_goal_link = work_goal_link ,
148+ journal_link = journal_link
132149 )
133150 cur_month += relativedelta (months = + 1 )
134151
135152 return month_templates
136153
137- def build_annual_pages (start_year , end_year , work_goals : bool , personal_goals : bool , j2_env : j2 .Environment ):
154+ def build_annual_pages (start_year , end_year , goals , j2_env : j2 .Environment ):
138155 def build_annual_page (year , j2_template : j2 .Template ):
139156 mini_cal_list = []
140157 for i in range (12 ):
@@ -149,12 +166,12 @@ def build_annual_page(year, j2_template: j2.Template):
149166 goal_link = False
150167
151168 for year in range (start_year , end_year + 1 ):
152- if work_goals :
169+ if goals [ 'work' ] :
153170 # placeholder for when annual goals are implemented
154171 # work_goal_link = f'{year}-work-goals'
155172 work_goal_link = False
156173
157- if personal_goals :
174+ if goals [ 'personal' ] :
158175 goal_link = f'{ year } -goals'
159176
160177 content = build_annual_page (year , annual_template )
@@ -266,6 +283,28 @@ def build_weekly_work_goal_page(first, j2_template: j2.Template):
266283
267284 return weekly_templates
268285
286+ def build_daily_journal (start : date , end : date , journals_per_page : int , j2_env : j2 .Environment ):
287+ def build_journal_page (inp_date , j2_template : j2 .Template ):
288+ days = []
289+ for i in range (journals_per_page ):
290+ days .append (inp_date + timedelta (days = i ))
291+ return j2_template .render (days = days , journals_per_page = journals_per_page , lines = {1 : 24 , 2 : 24 , 4 : 10 })
292+
293+ num_days = (end - start ).days
294+ journal_templates = {}
295+ daily_template = j2_env .get_template ('journal_pages.html.j2' )
296+ frame_template = j2_env .get_template ('frame.html.j2' )
297+
298+ for i in range (0 , num_days + 1 , journals_per_page ):
299+ cur_date = start + timedelta (days = i )
300+ content = build_journal_page (cur_date , daily_template )
301+ journal_templates [cur_date .strftime ('%Y-%m-%d-journal-page' )] = frame_template .render (
302+ content = content ,
303+ id = cur_date .strftime ('%Y-%m-%d-journal-page' )
304+ )
305+
306+ return journal_templates
307+
269308if __name__ == "__main__" :
270309 parser = ArgumentParser (prog = 'Python Planner Generator' ,
271310 description = 'GoodNotes 5 Optimized PDF Planner' )
@@ -279,6 +318,7 @@ def build_weekly_work_goal_page(first, j2_template: j2.Template):
279318 parser .add_argument ('--personal-goals' , action = BooleanOptionalAction , default = True )
280319 parser .add_argument ('--daily-pages' , action = BooleanOptionalAction , default = True )
281320 parser .add_argument ('--weekly-pages' , action = BooleanOptionalAction , default = True )
321+ parser .add_argument ('--journals-per-page' , default = 0 , type = int , choices = [0 , 1 , 2 , 4 ])
282322
283323 args = parser .parse_args ()
284324
@@ -295,16 +335,22 @@ def build_weekly_work_goal_page(first, j2_template: j2.Template):
295335 start_time = datetime (2022 , 12 , 26 , args .start_time , 0 , 0 )
296336 end_time = datetime (2022 , 12 , 26 , args .end_time , 0 , 0 )
297337
338+ goals = {
339+ 'work' : args .work_goals ,
340+ 'personal' : args .personal_goals ,
341+ 'journal' : args .journals_per_page
342+ }
343+
298344 pages = []
299345
300- pages .extend (build_annual_pages (start_date .year , end_date .year , args . work_goals , args . personal_goals , env ).values ())
301- pages .extend (build_monthly_pages (start_date , end_date , args . work_goals , args . personal_goals , env ).values ())
346+ pages .extend (build_annual_pages (start_date .year , end_date .year , goals , env ).values ())
347+ pages .extend (build_monthly_pages (start_date , end_date , goals , env ).values ())
302348
303349 if args .weekly_pages :
304- pages .extend (build_weekly_pages (start_date , end_date , start_time , end_time , args . work_goals , args . personal_goals , env ).values ())
350+ pages .extend (build_weekly_pages (start_date , end_date , start_time , end_time , goals , env ).values ())
305351
306352 if args .daily_pages :
307- pages .extend (build_daily_pages (start_date , end_date , start_time , end_time , env ).values ())
353+ pages .extend (build_daily_pages (start_date , end_date , start_time , end_time , goals , env ).values ())
308354
309355 if args .personal_goals :
310356 pages .extend (build_annual_goal_pages (start_date .year , end_date .year , env ).values ())
@@ -319,6 +365,9 @@ def build_weekly_work_goal_page(first, j2_template: j2.Template):
319365 if args .weekly_pages :
320366 pages .extend (build_weekly_work_goal_pages (start_date , end_date , env ).values ())
321367
368+ if args .journals_per_page > 0 :
369+ pages .extend (build_daily_journal (start_date , end_date , args .journals_per_page , env ).values ())
370+
322371 planner = build_planner (pages , env )
323372
324373 generate_html (planner , f'./dest/index{ args .file_suffix } .html' )
0 commit comments