# HG changeset patch # User Goffi # Date 1684749469 -7200 # Node ID 16228994ca3bfb19a421dcdb71152d5a0bfa340e # Parent ff95501abe74a4c46b37fb9499b38cf28dabd5dc server: fix hot reloading of modules in dev mode diff -r ff95501abe74 -r 16228994ca3b libervia/server/pages.py --- a/libervia/server/pages.py Mon May 22 11:57:49 2023 +0200 +++ b/libervia/server/pages.py Mon May 22 11:57:49 2023 +0200 @@ -17,40 +17,43 @@ # along with this program. If not, see . from __future__ import annotations - -import uuid -import os.path -import urllib.request, urllib.parse, urllib.error -import time +import copy +from functools import reduce import hashlib -import copy import json -import traceback +import os.path from pathlib import Path -from functools import reduce -from typing import Optional, Union, List +import time +import traceback +from typing import List, Optional, Union +import urllib.error +import urllib.parse +import urllib.request +import uuid +from twisted.internet import defer +from twisted.python import failure +from twisted.python.filepath import FilePath from twisted.web import server from twisted.web import resource as web_resource from twisted.web import util as web_util -from twisted.internet import defer from twisted.words.protocols.jabber import jid -from twisted.python import failure +from sat.core import exceptions from sat.core.i18n import _ -from sat.core import exceptions -from sat.tools.utils import as_deferred +from sat.core.log import getLogger from sat.tools.common import date_utils from sat.tools.common import utils from sat.tools.common import data_format -from sat.core.log import getLogger +from sat.tools.utils import as_deferred from sat_frontends.bridge.bridge_frontend import BridgeException -from .constants import Const as C from . import session_iface -from .utils import quote, SubPage from .classes import WebsocketMeta from .classes import Script +from .constants import Const as C +from .resources import LiberviaRootResource +from .utils import SubPage, quote log = getLogger(__name__) @@ -442,15 +445,22 @@ cls.create_browser_data(vhost_root, resource, browser_path, new_path) @classmethod - def on_file_change(cls, host, file_path, flags, site_root, site_path): + def on_file_change( + cls, + host, + file_path: FilePath, + flags: List[str], + site_root: LiberviaRootResource, + site_path: Path + ) -> None: """Method triggered by file_watcher when something is changed in files This method is used in dev mode to reload pages when needed - @param file_path(filepath.FilePath): path of the file which triggered the event - @param flags[list[unicode]): human readable flags of the event (from + @param file_path: path of the file which triggered the event + @param flags: human readable flags of the event (from internet.inotify) - @param site_root(LiberviaRootResource): root of the site - @param site_path(unicode): absolute path of the site + @param site_root: root of the site + @param site_path: absolute path of the site """ if flags == ['create']: return diff -r ff95501abe74 -r 16228994ca3b libervia/server/server.py --- a/libervia/server/server.py Mon May 22 11:57:49 2023 +0200 +++ b/libervia/server/server.py Mon May 22 11:57:49 2023 +0200 @@ -531,7 +531,9 @@ self.files_watcher.watch_dir( site_path, auto_add=True, recursive=True, callback=LiberviaPage.on_file_change, site_root=res, - site_path=site_path) + # FIXME: site_path should always be a Path, check code above and + # in template module + site_path=Path(site_path)) LiberviaPage.import_pages(self, res) # FIXME: default pages are accessible if not overriden by external website