2222app .config .from_object (__name__ )
2323pages = FlatPages (app )
2424freezer = Freezer (app )
25-
26- pages_insights = [p for p in pages if p .path .startswith ('insights/' )]
27- pages_arenas = [p for p in pages if p .path .startswith ('arenas/' )]
2825with open ("data/leaderboards.json" ) as f :
2926 leaderboards = json .load (f )
3027with open ("data/team.json" ) as f :
3128 team_data = json .load (f )
3229 author_links = {c ['name' ]: c ['link' ] for c in team_data ['contributors' ]}
3330
31+ # Helpers
32+ def get_insights_pages ():
33+ return [p for p in pages if p .path .startswith ('insights/' )]
34+
35+ def get_arenas_pages ():
36+ return [p for p in pages if p .path .startswith ('arenas/' )]
37+
3438# Custom filters
3539@app .template_filter ('format_timestamp' )
3640def format_timestamp (timestamp_str ):
@@ -66,15 +70,15 @@ def team():
6670
6771@app .route ('/insights/' )
6872def insights ():
69- return render_template ('insights.html' , pages = pages_insights , all_leaderboards = leaderboards )
73+ return render_template ('insights.html' , pages = get_insights_pages () , all_leaderboards = leaderboards )
7074
7175@app .route ('/insights/<path:path>/' )
7276def insight (path ):
7377 return render_template ('page.html' , page = pages .get_or_404 ('insights/' + path ), all_leaderboards = leaderboards , author_links = author_links )
7478
7579@app .route ('/arenas/' )
7680def arenas ():
77- return render_template ('arenas.html' , pages = pages_arenas , all_leaderboards = leaderboards )
81+ return render_template ('arenas.html' , pages = get_arenas_pages () , all_leaderboards = leaderboards )
7882
7983@app .route ('/arenas/<path:path>/' )
8084def arena (path ):
@@ -98,12 +102,12 @@ def page():
98102
99103@freezer .register_generator
100104def insight ():
101- for p in pages_insights :
105+ for p in get_insights_pages () :
102106 yield {'path' : p .path [9 :]} # Strip 'insights/' prefix
103107
104108@freezer .register_generator
105109def arena ():
106- for p in pages_arenas :
110+ for p in get_arenas_pages () :
107111 yield {'path' : p .path [7 :]} # Strip 'arenas/' prefix
108112
109113@freezer .register_generator
@@ -117,7 +121,9 @@ def static():
117121
118122if __name__ == "__main__" :
119123 if len (sys .argv ) > 1 and sys .argv [1 ] == "build" :
120- freezer .freeze ()
124+ # Ensure an application context is active during freeze
125+ with app .app_context ():
126+ freezer .freeze ()
121127 else :
122128 port = int (os .environ .get ('PORT' , 5001 ))
123129 app .run (host = '0.0.0.0' , port = port )
0 commit comments