22import re
33import subprocess
44import time
5- from typing import Callable , TypedDict
5+ from collections .abc import Callable
6+ from typing import TypedDict
67
78from flask import Flask
89from flask_sqlalchemy import SQLAlchemy
@@ -84,7 +85,9 @@ def __exec__(self, command_str: str):
8485 """
8586 command = command_str .strip ("" ).split (" " )
8687 process = subprocess .Popen (
87- command , stdout = subprocess .PIPE , stderr = subprocess .PIPE
88+ command ,
89+ stdout = subprocess .PIPE ,
90+ stderr = subprocess .PIPE ,
8891 )
8992 # Wait for the process to finish
9093 process .wait ()
@@ -141,7 +144,8 @@ def setup_site_repository(self):
141144 # Download files from the repository
142145 github = self .app .config ["github" ]
143146 github .get_repository_tree (
144- repository = self .repository_uri , branch = self .branch
147+ repository = self .repository_uri ,
148+ branch = self .branch ,
145149 )
146150
147151 def repository_exists (self ):
@@ -195,7 +199,7 @@ def get_tree_from_disk(self):
195199 if not folder_exists :
196200 raise SiteRepositoryError (
197201 "Templates folder 'templates' not found for "
198- f"repository { self .repo_path } "
202+ f"repository { self .repo_path } " ,
199203 )
200204
201205 # Change directory to the templates folder
@@ -244,8 +248,8 @@ def get_tree_from_db(self):
244248 webpages = (
245249 self .db .session .execute (
246250 select (Webpage ).where (
247- Webpage .project_id == get_project_id (self .repository_uri )
248- )
251+ Webpage .project_id == get_project_id (self .repository_uri ),
252+ ),
249253 )
250254 .scalars ()
251255 .all ()
@@ -259,7 +263,7 @@ def get_tree_from_db(self):
259263 # If the tree is empty, load from the repository
260264 if not tree .get ("children" ) and not tree .get ("parent_id" ):
261265 self .logger .info (
262- f"Reloading incomplete tree root { self .repository_uri } ."
266+ f"Reloading incomplete tree root { self .repository_uri } ." ,
263267 )
264268 tree = self .get_new_tree ()
265269 return tree
@@ -319,22 +323,35 @@ def __create_webpage_for_node__(
319323 return {** node , ** webpage_dict }
320324
321325 def __create_webpages_for_children__ (
322- self , db , children , project , owner , parent_id
326+ self ,
327+ db ,
328+ children ,
329+ project ,
330+ owner ,
331+ parent_id ,
323332 ):
324333 """
325334 Recursively create webpages for each child in the tree.
326335 """
327336 for child in children :
328337 # Create a webpage for the root node
329338 webpage_dict = self .__create_webpage_for_node__ (
330- db , child , project , owner , parent_id
339+ db ,
340+ child ,
341+ project ,
342+ owner ,
343+ parent_id ,
331344 )
332345 # Update the child node with the webpage fields
333346 child .update (webpage_dict )
334347 if child .get ("children" ):
335348 # Create webpages for the children recursively
336349 self .__create_webpages_for_children__ (
337- db , child ["children" ], project , owner , webpage_dict ["id" ]
350+ db ,
351+ child ["children" ],
352+ project ,
353+ owner ,
354+ webpage_dict ["id" ],
338355 )
339356
340357 def __remove_webpages_to_delete__ (self , db , tree ):
@@ -343,14 +360,14 @@ def __remove_webpages_to_delete__(self, db, tree):
343360 self .add_pages_to_list (tree , webpages )
344361
345362 webpages_to_delete = db .session .execute (
346- select (Webpage ).where (Webpage .status == WebpageStatus .TO_DELETE )
363+ select (Webpage ).where (Webpage .status == WebpageStatus .TO_DELETE ),
347364 )
348365
349366 for row in webpages_to_delete :
350367 page_to_delete = row [0 ]
351368 if page_to_delete .name not in webpages :
352369 db .session .execute (
353- delete (Webpage ).where (Webpage .id == page_to_delete .id )
370+ delete (Webpage ).where (Webpage .id == page_to_delete .id ),
354371 )
355372
356373 def create_webpages_for_tree (self , db : SQLAlchemy , tree : Tree ):
@@ -360,18 +377,28 @@ def create_webpages_for_tree(self, db: SQLAlchemy, tree: Tree):
360377 self .logger .info (f"Existing tree { tree } " )
361378 # Get the default project and owner for new webpages
362379 project , _ = get_or_create (
363- db .session , Project , name = self .repository_uri
380+ db .session ,
381+ Project ,
382+ name = self .repository_uri ,
364383 )
365384 owner , _ = get_or_create (db .session , User , name = "Default" )
366385
367386 # Create a webpage for the root node
368387 webpage_dict = self .__create_webpage_for_node__ (
369- db , tree , project , owner , None
388+ db ,
389+ tree ,
390+ project ,
391+ owner ,
392+ None ,
370393 )
371394
372395 # Create webpages for the children recursively
373396 self .__create_webpages_for_children__ (
374- db , webpage_dict ["children" ], project , owner , webpage_dict ["id" ]
397+ db ,
398+ webpage_dict ["children" ],
399+ project ,
400+ owner ,
401+ webpage_dict ["id" ],
375402 )
376403
377404 # Remove pages that don't exist in the repository anymore
0 commit comments